Autore Topic: Melodie Col Sid  (Letto 2545 volte)

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Melodie Col Sid
« il: 08 Luglio 2006, 21:20:28 »
 Ho adattato un listato dell'"inserto Campus" presente nel n.63 di CCC (p.8 - "A suon di Assembly") e mi sono reso conto di come sia facile,anche per un broccaccio come me in campo musicale ( :lol: ),tradurre uno spartito in una melodia da far eseguire al SID.
Mano ad un tutorial di teoria musicale,più questa semplice formula che converte la frequenza della nota da suonare in dati binari

registri frequenza = freq.nota x 16777216 / 985248  

Per le pause basta tener presente la cadenza dell'IRQ standard:1/60mo di secondo... ;)
Codice: [Seleziona]
irqvet = $314
irqsys = $ea31
reg = $d400
durata = $fb
onda = $fc
flagnt = $fd
* = $c000

sei
lda #<rout
ldx #>rout      
sta irqvet
stx irqvet+1  ;interrupt
ldx #1
stx durata
lda #160
sta reg+5
sta reg+12    ;att=10 dec=0
lda #250      
sta reg+6
sta reg+13    ;sos=15 ril=10
lda #15
sta reg+24    ;volume al max
lda #17
sta reg+4      ;triangolo
lda #33
sta reg+11    ;sawtooth
cli
rts

rout

dec durata
bne uscita
ldx flagnt    ;indice nota
lda nota,x
bne cont
inx
lda nota,x
bne decr
tax
tay
iny
sty durata
bne storex    ;reset indice

decr

dex

cont

sta reg
lsr
sta reg+7
inx
lda nota,x
sta reg+1
lsr
sta reg+8      ;~ -1 ottava
inx
lda nota,x
sta durata    ;load durata
inx

storex

stx flagnt

uscita

jmp irqsys

nota

.byte 19,26,15    ;Frà
.byte 68,29,15    ;Mar
.byte 220,32,15    ;ti
.byte 19,26,15    ;no

.byte 19,26,15    ;Cam
.byte 68,29,15    ;pa
.byte 220,32,15    ;na
.byte 19,26,15    ;ro

.byte 220,32,15    ;Dor
.byte 201,34,15    ;mi
.byte 11,39,30    ;tu?

.byte 220,32,15    ;Dor
.byte 201,34,15    ;mi
.byte 11,39,30    ;tu?

.byte 11,39,8      ;Suo
.byte 213,43,8    ;na
.byte 11,39,8      ;le
.byte 201,34,8    ;cam
.byte 220,32,15    ;pa
.byte 19,26,15    ;ne

.byte 11,39,8      ;Suo
.byte 213,43,8    ;na
.byte 11,39,8      ;le
.byte 201,34,8    ;cam
.byte 220,32,15    ;pa
.byte 19,26,15    ;ne

.byte 68,29,15    ;Din
.byte 142,19,15    ;don
.byte 19,26,30    ;dàn!

.byte 68,29,15    ;Din
.byte 142,19,15    ;don
.byte 19,26,30    ;dàn!

.byte 0,0