Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
PLAY command
#1
Here's some question about the PLAY command

1. How do I make pauses between notes?

2. What is the difference betweeen play music in foreground or background, I can't here any difference? Maybe I type the command wrong how is it?

That's it I guess maybe I'll add some more later
Reply
#2
1)
Code:
PLAY "G P5 G"
Use the "P" letter, followed by a number which represents number of quarternotes to pause for.
2) Foreground music, I believe, pauses your program and play the music. Background, however, starts playing, and moves on, so that the program runs while music is playing.
f only life let you press CTRL-Z.
--------------------------------------
Freebasic is like QB, except it doesn't suck.
Reply
#3
Only thing you gotta watch out for when it's set in the background is the PLAY buffer expiring...you have to fill it again when it's empty. Smile I believe there is an event for that, but I haven't legitimately used PLAY since the old Monolith prototypes I wrote back in 1994... Smile
I'd knock on wood, but my desk is particle board.
Reply
#4
ON PLAY stuff, I believe. I always disliked PLAY. Even for the speaker, there're better options (two channel, interlaced music anyone? Big Grin).

Trust me, don't use PLAY.

Hrm... I think I should go and code a Two-Channel tracker for the speaker. I had one, but I lost it.

EDIT: Aw, I found it:

Code:
DECLARE SUB centra (y!, t$)
DECLARE SUB box (x1!, y1!, x2!, y2!)
TYPE canales
nota1 AS INTEGER
nota2 AS INTEGER
END TYPE

' nota? = n£mero de 0 a 60

paso = 0

DIM maxtrack AS INTEGER

maxtrack = 0

DIM tracks(99, 31) AS canales
DIM portapapeles(31) AS INTEGER
DIM nota$(11): RESTORE notas: FOR i = 0 TO 11: READ nota$(i): NEXT i
DIM pitch(11): RESTORE pitchs: FOR i = 0 TO 11: READ pitch(i): NEXT i
DIM tecla$(11): RESTORE teclas: FOR i = 0 TO 11: READ tecla$(i): NEXT i

FOR i = 0 TO 99: FOR j = 0 TO 31: tracks(i, j).nota1 = 0: tracks(i, j).nota2 = 0: NEXT j, i

SCREEN 0
WIDTH 40, 50

DEF SEG = &HB800
FOR i = 0 TO 4000 STEP 2
POKE i, 176
POKE i + 1, 7 * 16 + 1
NEXT i
DEF SEG

COLOR 15, 1
box 1, 1, 40, 3
COLOR 14, 1
centra 2, "BEEPER TRAKKER"

octava = 2
track = 0
posicion = 0
canal = 0

COLOR 15, 1
box 1, 5, 12, 38
FOR i = 0 TO 31
IF i MOD 8 = 0 THEN COLOR 15, 1 ELSE COLOR 7, 0
LOCATE 6 + i, 5: PRINT "..."
LOCATE 6 + i, 9: PRINT "..."
COLOR 15, 2: LOCATE 6 + i, 2: PRINT USING "##"; i
NEXT
GOSUB posiciones

COLOR 15, 1
box 3, 40, 37, 47

COLOR 14
LOCATE 41, 4
PRINT "+, - : Go Forw/Go Backw. track."
LOCATE 42, 4
PRINT "*, / : Incr./decr. octave."
COLOR 0, 3
box 12, 43, 28, 46
COLOR 7, 0
LOCATE 44, 15: PRINT "S": LOCATE 44, 17: PRINT "D"
LOCATE 44, 21: PRINT "G": LOCATE 44, 23: PRINT "H": LOCATE 44, 25: PRINT "J"
COLOR 0, 7
LOCATE 45, 14: PRINT "Z": LOCATE 45, 16: PRINT "X": LOCATE 45, 18: PRINT "C"
LOCATE 45, 20: PRINT "V": LOCATE 45, 22: PRINT "B"
LOCATE 45, 24: PRINT "N": LOCATE 45, 26: PRINT "M"
'centra 46, "By JLC - WOPR 99"
COLOR 15, 1
box 18, 20, 38, 38
COLOR 14
LOCATE 21, 19: PRINT "Wúú> Save song"
LOCATE 23, 19: PRINT "Eúú> Load song"
LOCATE 25, 19: PRINT "Rúú> Copy channel"
LOCATE 27, 19: PRINT "Túú> Paste channel"
LOCATE 29, 19: PRINT "Yúú> Erase channel"
LOCATE 31, 19: PRINT "ENT>   Uú>  track"
LOCATE 33, 19: PRINT "ESCúúú> Stop!"
LOCATE 35, 19: PRINT "0úú> Exit to DOS"

COLOR 10
LOCATE 37, 19: PRINT "->by JLC@WOPR2K'99!<-"

LOCATE 6 + posicion, 4 * canal + 4: COLOR 12, 0: PRINT ">"

DO

paso = NOT paso
IF paso THEN COLOR 10 ELSE COLOR 12

LOCATE 37, 19: PRINT "->"
LOCATE 37, 36: PRINT "<-"

k$ = INKEY$
GOSUB posiciones2
IF LEN(k$) = 1 THEN k$ = LCASE$(k$)
SELECT CASE k$
CASE CHR$(0) + "H" ' Arriba
  LOCATE 6 + posicion, 4 * canal + 4: COLOR , 1: PRINT " "
  posicion = posicion - 1: IF posicion = -1 THEN posicion = 31
  LOCATE 6 + posicion, 4 * canal + 4: COLOR 12, 0: PRINT ">"
CASE CHR$(0) + "P"
  LOCATE 6 + posicion, 4 * canal + 4: COLOR , 1: PRINT " "
  posicion = (posicion + 1) MOD 32
  LOCATE 6 + posicion, 4 * canal + 4: COLOR 12, 0: PRINT ">"
CASE CHR$(0) + "K"
  LOCATE 6 + posicion, 4 * canal + 4: COLOR , 1: PRINT " "
  canal = canal - 1: IF canal = -1 THEN canal = 1
  LOCATE 6 + posicion, 4 * canal + 4: COLOR 12, 0: PRINT ">"
CASE CHR$(0) + "M"
  LOCATE 6 + posicion, 4 * canal + 4: COLOR , 1: PRINT " "
  canal = (canal + 1) MOD 2
  LOCATE 6 + posicion, 4 * canal + 4: COLOR 12, 0: PRINT ">"
CASE "/"
  octava = octava - 1: IF octava = 0 THEN octava = 6
CASE "*"
  octava = octava + 1: IF octava = 7 THEN octava = 1
CASE "+"
  IF track < 99 THEN
   track = track + 1
   GOSUB pintatrack
  END IF
CASE "-"
  IF track > 0 THEN
   track = track - 1
   GOSUB pintatrack
  END IF
CASE "z", "s", "x", "d", "c", "v", "g", "b", "h", "n", "j", "m"
  FOR ntecla = 0 TO 11
   IF k$ = tecla$(ntecla) THEN EXIT FOR
  NEXT ntecla
  SOUND pitch(ntecla) * 2 ^ (octava - 2), 1
  IF canal = 0 THEN
   tracks(track, posicion).nota1 = 1 + 12 * octava + ntecla
  ELSE
   tracks(track, posicion).nota2 = 1 + 12 * octava + ntecla
  END IF
  GOSUB pintatrack
  LOCATE 6 + posicion, 4 * canal + 4: COLOR , 1: PRINT " "
  IF posicion < 31 THEN posicion = posicion + 1
  LOCATE 6 + posicion, 4 * canal + 4: COLOR 12, 0: PRINT ">"
  IF track > maxtrack THEN maxtrack = track
CASE "0": SYSTEM
CASE "w"
  PCOPY 0, 1
  LOCATE 48, 1: COLOR 14, 1: INPUT "¨NOMBRE"; n$
  OPEN n$ FOR BINARY AS #1
   PUT #1, , maxtrack
   FOR i = 0 TO maxtrack
    FOR j = 0 TO 31
     PUT #1, , tracks(i, j)
    NEXT j
   NEXT i
  CLOSE 1
  PCOPY 1, 0
CASE "e"
  PCOPY 0, 1
  LOCATE 48, 1: COLOR 14, 1: INPUT "¨NOMBRE"; n$
  OPEN n$ FOR BINARY AS #1
   IF LOF(1) = 0 THEN
    CLOSE #1
    KILL n$
    PLAY "o1c"
    PCOPY 1, 0
   ELSE
    FOR i = 0 TO 99
     FOR j = 0 TO 31
      tracks(i, j).nota1 = 0
      tracks(i, j).nota2 = 0
    NEXT j, i
    GET #1, , maxtrack
    FOR i = 0 TO maxtrack
     FOR j = 0 TO 31
      GET #1, , tracks(i, j)
     NEXT j
    NEXT i
   END IF
   GOSUB pintatrack
  CLOSE 1
CASE CHR$(13), "u" ' Tocar
  FOR i = 0 TO 31
   IF i MOD 8 = 0 THEN COLOR 15, 1 ELSE COLOR 7, 0
   LOCATE 6 + i, 5: PRINT "..."
   LOCATE 6 + i, 9: PRINT "..."
   COLOR 15, 2: LOCATE 6 + i, 2: PRINT USING "##"; i
  NEXT
  remember = track
  IF k$ = "u" THEN
   inicio = track
   fin = track
  ELSE
   inicio = 0
   fin = maxtrack
  END IF
  DO
  FOR i = inicio TO fin
   track = i: GOSUB pintatrack
   FOR j = 0 TO 31
    COLOR 14, 1
    LOCATE 6, 21: PRINT USING "TRACKúú##"; i
    LOCATE 8, 21: PRINT USING "CANALúú##"; canal
    LOCATE 10, 21: PRINT USING "OCTAVAú##"; octava
    LOCATE 12, 21: PRINT USING "POSIC.ú##"; j
    LOCATE 6 + j, 2: COLOR 15, 6: PRINT USING "##"; j
    IF j = 0 THEN aj = 31 ELSE aj = j - 1
    LOCATE 6 + aj, 2: COLOR 15, 2: PRINT USING "##"; aj
    IF tracks(i, j).nota1 <> 0 THEN
     oc1 = (tracks(i, j).nota1 - 1) \ 12
     nt1 = (tracks(i, j).nota1 - 1) MOD 12
     n1 = pitch(nt1) * 2 ^ (oc1 - 2)
    ELSE
     n1 = 0
    END IF
    IF tracks(i, j).nota2 <> 0 THEN
     oc2 = (tracks(i, j).nota2 - 1) \ 12
     nt2 = (tracks(i, j).nota2 - 1) MOD 12
     n2 = pitch(nt2) * 2 ^ (oc2 - 2)
    ELSE
     n2 = 0
    END IF
    t = TIMER
    DO
     IF INKEY$ = CHR$(27) THEN track = remember: GOSUB pintatrack: GOTO alcarajo
     IF n1 <> 0 THEN
      SOUND n1, .5
     END IF
     IF n2 <> 0 THEN
      SOUND n2, .5
     END IF
    LOOP WHILE t + .0625 > TIMER
   NEXT j
  NEXT i
  LOOP
CASE "."
  IF canal = 0 THEN
   tracks(track, posicion).nota1 = 0
  ELSE
   tracks(track, posicion).nota2 = 0
  END IF
  GOSUB pintatrack
  LOCATE 6 + posicion, 4 * canal + 4: COLOR , 1: PRINT " "
  IF posicion < 31 THEN posicion = posicion + 1
  LOCATE 6 + posicion, 4 * canal + 4: COLOR 12, 0: PRINT ">"
CASE "r"
  FOR i = 0 TO 31
   IF canal = 0 THEN
    portapapeles(i) = tracks(track, i).nota1
   ELSE
    portapapeles(i) = tracks(track, i).nota2
   END IF
  NEXT i
CASE "t"
  FOR i = 0 TO 31
   IF canal = 0 THEN
    tracks(track, i).nota1 = portapapeles(i)
   ELSE
    tracks(track, i).nota2 = portapapeles(i)
   END IF
  NEXT i
  GOSUB pintatrack
CASE "y"
  FOR i = 0 TO 31
   IF canal = 0 THEN
    tracks(track, i).nota1 = 0
   ELSE
    tracks(track, i).nota2 = 0
   END IF
  NEXT i
  GOSUB pintatrack
END SELECT

alcarajo:

LOOP

END

posiciones:
COLOR 15, 1
box 20, 5, 30, 15
posiciones2:
COLOR 14, 1
LOCATE 6, 21: PRINT USING "TRACKúú##"; track
LOCATE 8, 21: PRINT USING "CANALúú##"; canal
LOCATE 10, 21: PRINT USING "OCTAVAú##"; octava
LOCATE 12, 21: PRINT USING "POSIC.ú##"; posicion
LOCATE 14, 21: PRINT USING "MAX.úúú##"; maxtrack
RETURN

pintatrack:
FOR ji = 0 TO 31
  LOCATE 6 + ji, 5
  IF ji MOD 8 = 0 THEN COLOR 15, 1 ELSE COLOR 7, 0
   IF tracks(track, ji).nota1 = 0 THEN
    PRINT "..."
   ELSE
    oct = (tracks(track, ji).nota1 - 1) \ 12
    nt = (tracks(track, ji).nota1 - 1) MOD 12
    PRINT USING "#"; oct; : PRINT nota$(nt)
   END IF
  LOCATE 6 + ji, 9
  IF ji MOD 8 = 0 THEN COLOR 15, 1 ELSE COLOR 7, 0
   IF tracks(track, ji).nota2 = 0 THEN
    PRINT "..."
   ELSE
    oct = (tracks(track, ji).nota2 - 1) \ 12
    nt = (tracks(track, ji).nota2 - 1) MOD 12
    PRINT USING "#"; oct; : PRINT nota$(nt)
   END IF
NEXT ji
RETURN

notas:
DATA " C","#C"," D","#D"," E"," F"
DATA "#F"," G","#G"," A","bB"," B"

pitchs:
DATA 262,277,294,310,330,349,370,392,415,440,465,494

teclas:
DATA "z", "s", "x", "d", "c", "v", "g", "b", "h", "n", "j", "m"

SUB box (x1, y1, x2, y2)
DEF SEG = &HB800
ancho = x2 - x1 - 1
alto = y2 - y1 - 1
LOCATE y1, x1: PRINT "Ú"; STRING$(ancho, "Ä"); "¿"
FOR n = y1 + 1 TO y2 - 1
  LOCATE n, x1: PRINT "³"; SPACE$(ancho); "³"
  IF (x2 < 80) THEN
   POKE 80 * (n - 1) + 2 * x2 + 1, 8
  END IF
NEXT
LOCATE y2, x1: PRINT "À"; STRING$(ancho, "Ä"); "Ù"
IF (x2 < 80) THEN
  POKE 80 * (y2 - 1) + 2 * x2 + 1, 8
END IF
FOR i = x1 TO x2: POKE 80 * y2 + 2 * i + 1, 8: NEXT i
DEF SEG
END SUB

SUB centra (y, t$)
LOCATE y, 21 - LEN(t$) / 2: PRINT t$
END SUB

But it is so sucky that I'll end writing another one with comments and a special routine to play the tunes. And with arpeggio effects, of course Tongue

Aw I sucked at coding in 1999 !!!
SCUMM (the band) on Myspace!
ComputerEmuzone Games Studio
underBASIC, homegrown musicians
[img]http://www.ojodepez-fanzine.net/almacen/yoghourtslover.png[/i
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)