home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / testi / corsoasm / sorgenti8 / lezione14-4a.s < prev    next >
Text File  |  1995-09-29  |  2KB  |  72 lines

  1.  
  2. ; Lezione14-4a.s    ** SUONA FORME D'ONDA COMPLESSE **
  3.  
  4.  
  5.     section    samplemono,code
  6.  
  7. Start:
  8.     move.l    4.w,a6
  9.     jsr    -$78(A6)        ; _LVODisable
  10.     bset    #1,$bfe001        ; Spegne il filtro passa-basso
  11.     lea    $dff000,a6
  12.     move.w    $2(a6),d7        ; dmaconr - Salva DMA dell'OS
  13.  
  14.     move.l    #sample,$a0(a6)        ; AUD0LCH.w+AUD0LCL.w=AUD0LC.l
  15.     move.l    #sample,$b0(a6)        ; AUD1LCH.w+AUD1LCL.w=AUD1LC.l
  16.     move.w    #(sample_end-sample)/2,$a4(a6)    ; lunghezza in word (AUD0LEN)
  17.     move.w    #(sample_end-sample)/2,$b4(a6)    ; lunghezza in word (AUD1LEN)
  18.  
  19. Clock    equ    3546895
  20.  
  21.     move.w    #clock/21056,$a6(a6)    ; AUD0PER a 168
  22.     move.w    #clock/21056,$b6(a6)    ; AUD1PER a 168
  23.  
  24.     move.w    #64,$a8(a6)        ; AUD0VOL al massimo (0 dB)
  25.     move.w    #64,$b8(a6)        ; AUD1VOL al massimo (0 dB)
  26.     move.w    #$8003,$96(a6)        ; Accende AUD0-AUD1 DMA in DMACONW
  27.  
  28.  
  29. WLMB:
  30.     btst    #6,$bfe001        ;aspetta il tasto sinistro del mouse
  31.     bne.s    WLMB
  32.  
  33.     or.w    #$8000,d7        ; accende il bit 15 (SET/CLR)
  34.     move.w    #$0003,$96(a6)        ; spegne i DMA
  35.     move.w    d7,$96(a6)        ; reimposta DMA dell'OS
  36.     move.l    4.w,a6
  37.     jsr    -$7e(a6)        ; _LVOEnable
  38.     rts
  39.  
  40. ******************************************************************************
  41.  
  42.     SECTION    Sample,DATA_C
  43.  
  44. ; Nota: il sample e' tratto da "NASP" by Pyratronik/IBB
  45.  
  46. Sample:    incbin    "assembler2:sorgenti8/carrasco.21056"
  47. Sample_end:
  48.  
  49.     END
  50.  
  51. ******************************************************************************
  52.  
  53. Per quanto riguarda questo esempio, le cose da spiegare non sono poi molte:
  54. non ci sono novita', anzi, e' molto simile all'esempio 1, e siamo abituati
  55. a listati ben piu' impegnativi.
  56. Preciso solamente una cosa: la frequenza di campionamento del sample e' di
  57. 21056 Hz, pari alla frequenza originale di registrazione: e' necessario
  58. porre una VELOCITA' DI CAMPIONAMENTO uguale a quella di digitalizzazione
  59. se si vuole sentire il suono alla velocita' corretta...provate a cambiare
  60. il periodo di campionamento in AUDxPER...
  61.  
  62. *** Voglio sottolineare che 21056 NON esprime il numero di volte in cui
  63. viene letto l'intero sample, ma la frequenza di lettura di byte per byte:
  64. vengono letto 21056 byte al secondo in un sample di lunghezza arbitraria;
  65. all'hardware bisogna comunicare il periodo di campionamento relativo
  66. alla velocita' di lettura.
  67. Come abbiamo fatto per l'armonica: prima abbiamo stabilito quante volte doveva
  68. venir letta l'INTERA onda, poi abbiamo calcolato il periodo di campionamento
  69. moltiplicando la frequenza della nota per la lunghezza del sample in byte, per
  70. ottenere la velocita' di lettura ***.
  71.  
  72.