'=========================================================================== ' Subject: FABTRACKER (MUSIC COMPOSER) Date: 11-05-96 (15:55) ' Author: Mattias Andersson Code: QB, QBasic, PDS ' Origin: phobia2@hotmail.com Packet: SOUND.ABC '=========================================================================== ' Hehe... Phobia is back! ' This time with a little tracker... ' Ummm... don't take this one to serious... made it just for fun! ' (at school actually :-) ' Enter whatever note you want with the same letter... ' 1-6 works as octave... press 't' to change the tempo... ' If you change the tempo it will stay that way until you ' change it on a later track... ' Press enter to play the tune ... space to stop... ' Feel free to email me: phobia2@hotmail.com ' (phobia was already taken... so I'm using phobia2 :-( ) ' Don't laugh... but it's possible that I'll add digital samples ' and more than one channel and pattern... ' Could be cool with a working tracker made in QB!! hehe... ' If you have any source on how to use SB16 with more than one ' channel... I know how to program 8-bit mono sound... but not more ' than that... well... see ya! (as always) DIM track$(64) DIM tempo$(64) DIM oktav$(64) FOR a = 1 TO 64 track$(a) = "-" tempo$(a) = "---" oktav$(a) = "4" NEXT newdo = 2 curr = 1 SCREEN 0 WIDTH 80, 50 COLOR 14, 0: CLS LOCATE 1, 40: PRINT "F†bTrecker 0.01b" FOR a = 1 TO 32 LOCATE a, 1: PRINT a LOCATE a, 12: PRINT "|" LOCATE a, 13: PRINT a + 32 NEXT redo: DO '-------------------------------------- IF newdo = 2 THEN COLOR 14, 0 FOR a = 1 TO 32 LOCATE a, 5: PRINT track$(a) LOCATE a, 17: PRINT track$(a + 32) LOCATE a, 6: PRINT oktav$(a) LOCATE a, 18: PRINT oktav$(a + 32) LOCATE a, 8: PRINT tempo$(a) + SPACE$(3 - LEN(tempo$(a))) LOCATE a, 20: PRINT tempo$(a + 32) + SPACE$(3 - LEN(tempo$(a + 32))) NEXT COLOR 14, 4 IF curr < 33 THEN LOCATE curr, 5: PRINT track$(curr) LOCATE curr, 6: PRINT oktav$(curr) LOCATE curr, 8: PRINT tempo$(curr) END IF IF curr > 32 THEN LOCATE curr - 32, 17: PRINT track$(curr) LOCATE curr - 32, 18: PRINT oktav$(curr) LOCATE curr - 32, 20: PRINT tempo$(curr) END IF newdo = 1 END IF ke$ = INKEY$ IF NOT ke$ = "" THEN newdo = 2 IF ke$ = CHR$(13) THEN GOTO spela IF ke$ = CHR$(0) + "P" THEN curr = curr + 1: newdo = 2 IF ke$ = CHR$(0) + "H" THEN curr = curr - 1: newdo = 2 IF ke$ = CHR$(0) + "M" THEN curr = curr + 32: newdo = 2 IF ke$ = CHR$(0) + "K" THEN curr = curr - 32: newdo = 2 IF ke$ = "1" THEN oktav$(curr) = "1": curr = curr + 1 IF ke$ = "2" THEN oktav$(curr) = "2": curr = curr + 1 IF ke$ = "3" THEN oktav$(curr) = "3": curr = curr + 1 IF ke$ = "4" THEN oktav$(curr) = "4": curr = curr + 1 IF ke$ = "5" THEN oktav$(curr) = "5": curr = curr + 1 IF ke$ = "6" THEN oktav$(curr) = "6": curr = curr + 1 IF UCASE$(ke$) = "A" THEN track$(curr) = "A": curr = curr + 1 IF UCASE$(ke$) = "B" THEN track$(curr) = "B": curr = curr + 1 IF UCASE$(ke$) = "C" THEN track$(curr) = "C": curr = curr + 1 IF UCASE$(ke$) = "D" THEN track$(curr) = "D": curr = curr + 1 IF UCASE$(ke$) = "E" THEN track$(curr) = "E": curr = curr + 1 IF UCASE$(ke$) = "F" THEN track$(curr) = "F": curr = curr + 1 IF UCASE$(ke$) = "G" THEN track$(curr) = "G": curr = curr + 1 IF UCASE$(ke$) = CHR$(0) + CHR$(83) THEN track$(curr) = "-": curr = curr + 1 IF UCASE$(ke$) = "T" THEN LOCATE 10, 50 COLOR 14, 0 INPUT "Enter new speed: [32-255]", tempo$(curr) LOCATE 10, 50: PRINT SPACE$(20) END IF IF curr < 1 THEN curr = 1 IF curr > 64 THEN curr = 64 LOOP '------------------------------------ spela: play$ = "" FOR a = 1 TO 64 IF NOT tempo$(a) = "---" THEN PLAY "T" + tempo$(a) PLAY "O" + oktav$(a) IF NOT track$(a) = "-" THEN PLAY track$(a) ELSE PLAY "P4" END IF COLOR 14, 0 IF a < 33 THEN IF a > 1 THEN LOCATE a - 1, 4: PRINT " " LOCATE a, 4: PRINT ">" END IF IF a > 32 THEN IF a = 33 THEN LOCATE a - 1, 4: PRINT " " IF a > 33 THEN LOCATE a - 33, 16: PRINT " " LOCATE a - 32, 16: PRINT ">" END IF IF INKEY$ = " " THEN EXIT FOR NEXT FOR a = 1 TO 32 LOCATE a, 4: PRINT " " LOCATE a, 16: PRINT " " NEXT GOTO redo