07-27-2003, 11:45 PM
Code:
DECLARE SUB FMGuitar (StrTun AS STRING, Fret AS INTEGER, Channel AS INTEGER)
DECLARE SUB FMStop (Channel%)
DECLARE SUB FMPlay (Freq%, Octave%, Channel%)
DECLARE SUB FMSetInst (Inst AS ANY, Channel AS INTEGER)
DECLARE SUB FMWrite (Reg%, Value%)
DECLARE SUB FMReset ()
DECLARE SUB Delay (Time AS SINGLE)
DEFINT A-Z
TYPE Instrument
' Modulator
MVibrato AS INTEGER
MTremelo AS INTEGER
MEGType AS INTEGER
MWaveForm AS INTEGER
MMultiple AS INTEGER
MLevel AS INTEGER
MAttack AS INTEGER
MDecay AS INTEGER
MSustain AS INTEGER
MRelease AS INTEGER
' Carrier
CVibrato AS INTEGER
CTremelo AS INTEGER
CEGType AS INTEGER
CWaveForm AS INTEGER
CMultiple AS INTEGER
CLevel AS INTEGER
CAttack AS INTEGER
CDecay AS INTEGER
CSustain AS INTEGER
CRelease AS INTEGER
END TYPE
CONST OctShift = 1
DIM Bps AS SINGLE
DIM Tun(1 TO 6) AS STRING
DIM tI(1 TO 3) AS Instrument
tI(1).MMultiple = 3
tI(1).MLevel = 16
tI(1).MAttack = 15: tI(1).MDecay = 5
tI(1).MSustain = 8: tI(1).MRelease = 8
tI(1).MVibrato = 1
tI(1).CMultiple = 1
tI(1).CLevel = 16
tI(1).CAttack = 15: tI(1).CDecay = 3
tI(1).CSustain = 8: tI(1).CRelease = 8
tI(1).CVibrato = 1
tI(2).MMultiple = 1
tI(2).MLevel = 16
tI(2).MAttack = 15: tI(2).MDecay = 3
tI(2).MSustain = 7: tI(2).MRelease = 3
tI(2).MWaveForm = 2
tI(2).CMultiple = 1
tI(2).CLevel = 16
tI(2).CAttack = 15: tI(2).CDecay = 3
tI(2).CSustain = 7: tI(2).CRelease = 3
tI(2).MWaveForm = 2
tI(3).MMultiple = 1
tI(3).MLevel = 16
tI(3).MAttack = 15: tI(3).MDecay = 4
tI(3).MSustain = 7: tI(3).MRelease = 3
tI(3).MWaveForm = 2
tI(3).CMultiple = 1
tI(3).CLevel = 16
tI(3).CAttack = 15: tI(3).CDecay = 4
tI(3).CSustain = 7: tI(3).CRelease = 3
tI(3).MWaveForm = 2
CLS
FMReset
DO
READ C$
IF C$ = "N" THEN EXIT DO
IF C$ = "I" THEN
READ Inst
FOR I = 1 TO 6
FMSetInst tI(Inst), I
NEXT
ELSEIF C$ = "T" THEN
READ t$
IF Y >= 2 * 7 THEN
LOCATE 25, 1: PRINT "Press any key..";
G$ = INPUT$(1)
CLS
END IF
PRINT t$
X = 4
Y = CSRLIN
FOR I = 1 TO 6
READ Tun(I)
LOCATE Y + I - 1, 1: PRINT MID$(Tun(I), 1, 2) + "|"
NEXT
ELSEIF C$ = "S" THEN
READ Bps
ELSEIF C$ = "P" THEN
Delay 1 / Bps
ELSEIF C$ = "M" THEN
FOR I = 1 TO 6
READ Fret$
LOCATE Y + I - 1, X
IF Fret$ <> "-" THEN
F$ = Fret$
PRINT F$;
IF LEN(F$) = 1 THEN PRINT "-" ELSE PRINT
FMStop I
FMGuitar Tun(I), VAL(Fret$), I
ELSE
PRINT "--"
END IF
NEXT
X = X + 2
Delay 1 / Bps
ELSE
READ Stp
FOR I = 1 TO 6
IF C$ = Tun(I) THEN St = I
NEXT
FOR I = 1 TO 6
LOCATE Y + I - 1, X
IF I = St THEN
F$ = LTRIM$(RTRIM$(STR$(Stp)))
PRINT F$;
IF LEN(F$) = 1 THEN PRINT "-" ELSE PRINT
ELSE
PRINT "--"
END IF
NEXT
X = X + 2
FMStop St
FMGuitar C$, Stp, St
Delay 1 / Bps
END IF
LOOP UNTIL INKEY$ = CHR$(27)
DATA I, 3
DATA T, "Master Of Puppets", E-4, B-3, G-3, D-3, A-2, E-2
DATA S, 1
DATA M,-,-,-,2,2,0
DATA S, 3
DATA M,-,-,-,-,12,11, M,-,-,-,-,11,10, S, 1, M,-,-,-,-,10,9
DATA S, 7
DATA E-2, 0, E-2, 0, E-2, 7, E-2, 0, E-2, 0, E-2, 6
DATA E-2, 0, E-2, 0, E-2, 5, E-2, 0, E-2, 4, E-2, 0, E-2, 3, E-2, 0, S, 4, E-2, 2
DATA S, 7
DATA E-2, 0, E-2, 0, E-2, 12, E-2, 0, E-2, 0, E-2, 11, E-2, 0, E-2, 0
DATA S, 3
DATA M,-,-,-,-,12,11, M,-,-,-,-,11,10, S, 1, M,-,-,-,-,10,9
DATA S, 1, P
DATA I, 2
DATA T, "What's My Age Again", E-4, B-3, G-3, D-3, A-2, E-2
DATA S, 4
DATA D-3, 9, G-3, 11, B-3, 11, G-3, 11
DATA A-2, 9, G-3, 11, B-3, 11, G-3, 11
DATA E-2, 9, G-3, 11, B-3, 11, G-3, 11
DATA E-2, 11, G-3, 11, B-3, 11, G-3, 11
DATA S, 1, P
DATA T, "Polly", E-4, B-3, G-3, D-3, A-2, E-2
DATA S, 2
DATA M,-,-,-,2,2,0, M,-,-,-,2,2,0
DATA S, 4
DATA M,-,-,-,5,5,3, M,-,-,-,5,5,3, M, -,-,-,5,5,3, P
DATA M,-,-,7,7,5,-, M,-,-,7,7,5,-, P
DATA M,-,-,5,5,3,-, P, M,-,-,5,5,3,-, M, -,-,5,5,3,-
DATA S, 2, P
DATA S, 2, M,-,-,7,7,5,-, M,-,-,7,7,5,-
DATA S, 4, M,-,-,5,5,3,-, M,-,-,5,5,3,-, M,-,-,5,5,3,-, M,-,-,5,5,3,-
DATA S, 2, M,-,-,-,5,5,3, M,-,-,-,5,5,3
DATA S, 4, M,-,-,3,3,1,-, M,-,-,3,3,1,-, M,-,-,3,3,1,-, M,-,-,3,3,1,-
DATA S, 1, P
DATA T, "One Tin Soldier", E-4, B-3, G-3, D-3, A-2, E-2
DATA S, 2, M,0,1,0,2,3,0, S, 4, M,0,1,0,2,3,0, M,0,1,0,2,3,0
DATA S, 2, M,3,0,0,0,2,3, S, 4, M,3,0,0,0,2,3, M,3,0,0,0,2,3
DATA S, 2, M,0,1,2,2,0,0, S, 4, M,0,1,2,2,0,0, M,0,1,2,2,0,0
DATA S, 2, M,0,0,0,2,2,0, S, 4, M,0,0,0,2,2,0, M,0,0,0,2,2,0
DATA S, 2, M,1,1,2,3,0,0, S, 4, M,1,1,2,3,0,0, M,1,1,2,3,0,0
DATA S, 2, M,0,1,0,2,3,0, S, 4, M,0,1,0,2,3,0, M,0,1,0,2,3,0
DATA S, 2, M,1,1,2,3,0,0, S, 4, M,1,1,2,3,0,0, M,1,1,2,3,0,0
DATA S, 2, M,3,0,0,0,2,3
DATA S, 1, P
DATA I, 2
DATA T, "All Appologies", Eb4, Bb3, Gb3, Db3, Ab2, Db2
DATA S, 3
DATA Db2, 0, Ab2, 9, Ab2, 10, Ab2, 9, Ab2, 12, Ab2, 12, Ab2, 9, Ab2, 10
DATA Db2, 0, Ab2, 9, Ab2, 10, Ab2, 9, Db3, 12, Db3, 12, Db3, 9, Db3, 10
DATA Db2, 0, Ab2, 9, Ab2, 10, Ab2, 9, Ab2, 12, Ab2, 12, Ab2, 9, Ab2, 10
DATA Db2, 0, Ab2, 9, Ab2, 10, Ab2, 9, Gb3, 11, Gb3, 11, Gb3, 9, Db3, 12
DATA S, 1, P
DATA T, "Stairway To Heaven", E-4, B-3, G-3, D-3, A-2, E-2
DATA S, 2
DATA D-3, 7, G-3, 5, B-3, 5, E-4, 5
DATA M,7,-,-,5,-,-, B-3, 5, G-3, 5
DATA E-4, 7, M,8,-,-,5,-,-, B-3, 5, G-3, 5
DATA E-4, 8, M,2,-,-,4,-,-, B-3, 3, G-3, 2
DATA E-4, 2, M,0,-,-,3,-,-
DATA B-3, 1, G-3, 2, B-3, 1, E-4, 0, P, B-3, 1, G-3, 2, P
DATA M,-,0,0,-,2,-, S, 22, P, S, 2, M,-,1,2,-,0,-, M,-,1,2,-,0,-
DATA S, 1, P
DATA I, 1
DATA T, "Come As You Are", E-4, B-3, G-3, D-3, A-2, E-2
DATA S, 5
DATA E-2, 0, E-2, 0, E-2, 1, E-2, 2, P
DATA A-2, 0, E-2, 2, A-2, 0, E-2, 2
DATA E-2, 2, E-2, 1, E-2, 0
DATA A-2, 2, E-2, 0, E-2, 0, P
DATA E-2, 0, E-2, 0, E-2, 1, E-2, 2, P
DATA A-2, 0, E-2, 2, A-2, 0, E-2, 2
DATA E-2, 2, E-2, 1, E-2, 0
DATA A-2, 2, E-2, 0, E-2, 0
DATA S, 1, P
DATA I, 2
DATA I, 3
DATA T, "Crazy Train", E-4, B-3, G-3, D-3, A-2, E-2
DATA S, 5
DATA E-2, 2, E-2, 2, A-2, 4, E-2, 2, A-2, 5, E-2, 2, A-2, 4, E-2, 2
DATA A-2, 2, E-2, 5, E-2, 4, E-2, 5
DATA A-2, 2, E-2, 5, E-2, 4, E-2, 0
DATA S, 1, P
DATA I, 2
DATA T, "The Return To The Beautifull", E-4, B-3, G-3, D-3, A-2, E-2
DATA S, 1.8
DATA A-2, 5, D-3, 8, D-3, 7, D-3, 5
DATA A-2, 7, D-3, 8, D-3, 7, D-3, 10
DATA S, 1, P
DATA T, "Nothing Else Matters", E-4, B-3, G-3, D-3, A-2, E-2
DATA S, 2
DATA E-2, 0, G-3, 0, B-3, 0, E-4, 0, B-3, 0, G-3, 0
DATA E-2, 0, G-3, 0, B-3, 0, E-4, 0, B-3, 0, G-3, 0
DATA S, 1, P
DATA T, "In Bloom", E-4, B-3, G-3, D-3, A-2, E-2
DATA S, 8
DATA M,-,-,-,8,8,6
DATA M,-,-,-,8,8,6
DATA M,-,-,-,8,8,6
DATA M,-,-,-,8,8,6
DATA M,-,-,-,8,8,6
DATA P, P, P
DATA M,-,-,-,4,4,2
DATA M,-,-,-,4,4,2
DATA M,-,-,-,4,4,2
DATA M,-,-,-,4,4,2
DATA M,-,-,-,4,4,2
DATA P, P, P
DATA M,-,-,8,8,6,-
DATA M,-,-,8,8,6,-
DATA M,-,-,8,8,6,-
DATA M,-,-,8,8,6,-
DATA M,-,-,8,8,6,-
DATA P, P, P
DATA M,-,-,-,9,9,7
DATA M,-,-,-,9,9,7
DATA M,-,-,-,9,9,7
DATA P
DATA M,-,-,-,7,7,5
DATA M,-,-,-,7,7,5
DATA M,-,-,-,7,7,5
DATA N
SUB Delay (Time AS SINGLE)
t! = TIMER + Time
WHILE t! > TIMER: WEND
END SUB
SUB FMGuitar (StrTun AS STRING, Fret AS INTEGER, Channel AS INTEGER)
n$ = MID$(StrTun, 1, 2)
o$ = MID$(StrTun, 3, 1)
SELECT CASE UCASE$(n$)
CASE "C-": n = 1
CASE "C#", "DB": n = 2
CASE "D-": n = 3
CASE "D#", "EB": n = 4
CASE "E-": n = 5
CASE "F-": n = 6
CASE "F#", "GB": n = 7
CASE "G-": n = 8
CASE "G#", "AB": n = 9
CASE "A-": n = 10
CASE "A#", "BB": n = 11
CASE "B-": n = 12
END SELECT
o = VAL(o$)
FOR I = 1 TO Fret
n = n + 1
IF n > 12 THEN n = 1: o = o + 1
NEXT
SELECT CASE n
CASE 1: F! = 261.63
CASE 2: F! = 277.18
CASE 3: F! = 293.66
CASE 4: F! = 311.13
CASE 5: F! = 329.63
CASE 6: F! = 349.23
CASE 7: F! = 369.99
CASE 8: F! = 392!
CASE 9: F! = 415.3
CASE 10: F! = 440!
CASE 11: F! = 466.16
CASE 12: F! = 493.88
END SELECT
FMPlay (F!), o, Channel
END SUB
SUB FMPlay (Freq, Octave, Channel)
NFreq = Freq * 1.311
RegA0 = NFreq AND 255
FMWrite &HA0 + Channel - 1, RegA0
RegB0 = (NFreq AND 768) / 256
RegB0 = RegB0 OR Octave * 4
RegB0 = RegB0 OR 32
FMWrite &HB0 + Channel - 1, RegB0
END SUB
SUB FMReset
FOR I = &H1 TO &HF5
FMWrite I, 0
NEXT
END SUB
SUB FMSetInst (Inst AS Instrument, Channel AS INTEGER)
' Calculate channel offset
SELECT CASE Channel
CASE 1: Ofs = &H0
CASE 2: Ofs = &H1
CASE 3: Ofs = &H2
CASE 4: Ofs = &H8
CASE 5: Ofs = &H9
CASE 6: Ofs = &HA
CASE 7: Ofs = &H10
CASE 8: Ofs = &H11
CASE 9: Ofs = &H12
END SELECT
' Set Modulator
Reg20 = (Inst.MMultiple AND 15) OR (Inst.MEGType * 32) OR (Inst.MVibrato * 64) OR (Inst.MTremelo * 128)
FMWrite &H20 + Ofs, Reg20
Reg40 = Inst.MLevel AND 63
FMWrite &H40 + Ofs, Reg40
Reg60 = (Inst.MAttack * 16) + Inst.MDecay
FMWrite &H60 + Ofs, Reg60
Reg80 = (Inst.MSustain * 16) + Inst.MRelease
FMWrite &H80 + Ofs, Reg80
RegE0 = Inst.MWaveForm
FMWrite &HE0 + Ofs, RegE0
' Set Carrier
Reg20 = (Inst.CMultiple AND 15) OR (Inst.CEGType * 32) OR (Inst.CVibrato * 64) OR (Inst.CTremelo * 128)
FMWrite &H20 + Ofs + 3, Reg20
Reg40 = Inst.CLevel AND 63
FMWrite &H40 + Ofs + 3, Reg40
Reg60 = (Inst.CAttack * 16) + Inst.CDecay
FMWrite &H60 + Ofs + 3, Reg60
Reg80 = (Inst.CSustain * 16) + Inst.CRelease
FMWrite &H80 + Ofs + 3, Reg80
RegE0 = Inst.CWaveForm
FMWrite &HE0 + Ofs + 3, RegE0
END SUB
SUB FMStop (Channel)
RegB0 = 0
FMWrite &HB0 + Channel - 1, RegB0
END SUB
SUB FMWrite (Reg, Value)
OUT &H388, Reg: FOR I = 1 TO 6: Dummy = INP(&H388): NEXT
OUT &H389, Value: FOR I = 1 TO 35: Dummy = INP(&H388): NEXT
END SUB
COUNT HACKED BY RAZVEEE
RAZVEE IS A SCRIPT KIDDIE- hacker9
RAZVEE IS A SCRIPT KIDDIE- hacker9