SOUND - QB64Official/qb64 GitHub Wiki
SOUND sets frequency and duration of sounds from the internal PC speaker if the computer has one or the sound card in QB64.
Syntax
SOUND frequency, duration
Description
- Frequency is any literal or variable value from 37 to 32767, but 0 is allowed for delays.
- Duration is any literal or variable number of TIMER ticks with a duration of 1/18th second. 18 = one second.
- In QB64 the sound comes from the soundcard and the volume can be adjusted through the OS.
Error(s)
- Low frequency values between 0 and 37 will create an ERROR Codes.
- Warning: SOUND may not work when the program is not in focus. Use SOUND 0, 0 at sound procedure start to set focus.
- Note: SOUND 0, 0 will not stop previous QB64 sounds like it did in QBasic!
- SOUND may have clicks or pauses between the sounds generated. PLAY can be used for musical sounds.
** The Seven Music Octaves **
** Note Frequency Note Frequency Note Frequency**
**1*** D#1 ...... 39 G3 ....... 196 A#5 ...... 932
E1 ....... 41 G#3 ...... 208 B5 ....... 988
F1 ....... 44 A3 ....... 220 **6*** C6 ....... 1047
F#1 ...... 46 A#3 ...... 233 C#6 ...... 1109
G1 ....... 49 B3 ....... 247 D6 ....... 1175
G#1 ...... 51 **4*** C4 ....... 262 D#6 ...... 1245
A1 ....... 55 C#4 ...... 277 E6 ....... 1318
A#1 ...... 58 D4 ....... 294 F6 ....... 1397
B1 ....... 62 D#4 ...... 311 F#6 ...... 1480
**2*** C2 ....... 65 E4 ....... 330 G6 ....... 1568
C#2 ...... 69 F4 ....... 349 G# ....... 1661
D2 ....... 73 F#4 ...... 370 A6 ....... 1760
D#2 ...... 78 G4 ....... 392 A#6 ...... 1865
E2 ....... 82 G#4 ...... 415 B6 ....... 1976
F2 ....... 87 A4 ....... 440 **7*** C7 ....... 2093
F#2 ...... 92 A# ....... 466 C#7 ...... 2217
G2 ....... 98 B4 ....... 494 D7 ....... 2349
G#2 ...... 104 **5*** C5 ....... 523 D#7 ...... 2489
A2 ....... 110 C#5 ...... 554 E7 ....... 2637
A#2 ...... 117 D5 ....... 587 F7 ....... 2794
B2 ....... 123 D#5 ...... 622 F#7 ...... 2960
**3*** C3 ....... 131 E5 ....... 659 G7 ....... 3136
C#3 ...... 139 F5 ....... 698 G#7 ...... 3322
D3 ....... 147 F#5 ...... 740 A7 ....... 3520
D#3 ...... 156 G5 ....... 784 A#7 ...... 3729
E3 ....... 165 G#5 ...... 831 B7 ....... 3951
F3 ....... 175 A5 ....... 880 **8*** C8 ....... 4186
F#3 ...... 185
**# denotes sharp**
Example(s)
Playing the seven octaves based on the base note DATA * 2 ^ (octave - 1).
notes$ = "C C#D D#E F F#G G#A A#B "
COLOR 9:LOCATE 5, 20: PRINT "Select an octave (1 - 7) to play (8 quits):"
DO
DO: octa$ = INKEY$
IF octa$ <> "" THEN
IF ASC(octa$) > 48 AND ASC(octa$) < 58 THEN octave% = VAL(octa$): EXIT DO
END IF
LOOP UNTIL octave% > 7
IF octave% > 0 AND octave% < 8 THEN
LOCATE 15, 6: PRINT SPACE$(70)
LOCATE 16, 6: PRINT SPACE$(70)
COLOR 14: LOCATE 15, 6: PRINT "Octave"; octave%; ":";
RESTORE Octaves
FOR i = 1 TO 12
READ note!
snd% = CINT(note! * (2 ^ (octave% - 1))) 'calculate note frequency
COLOR 14: PRINT STR$(snd%);
c0l = POS(0)
COLOR 11: LOCATE 16, c0l - 2: PRINT MID$(notes$, 1 + (2 * (i - 1)), 2)
LOCATE 15, c0l
IF snd% > 36 THEN SOUND snd%, 12 'error if sound value is < 36
_DELAY .8
NEXT
END IF
LOOP UNTIL octave% > 7
END
Octaves:
DATA 32.7,34.65,36.71,38.9,41.2,43.65,46.25,49,51.91,55,58.27,61.74
Playing a song called "Bonnie" with SOUND frequencies.
SCREEN 13
_FULLSCREEN
OUT &H3C8, 0: OUT &H3C9, 0: OUT &H3C9, 0: OUT &H3C9, 20
COLOR 1
FOR i% = 1 TO 21
LOCATE 2 + i%, 2: PRINT CHR$(178)
LOCATE 2 + i%, 39: PRINT CHR$(178)
NEXT i%
FOR i% = 2 TO 39
LOCATE 2, i%: PRINT CHR$(223)
LOCATE 23, i%: PRINT CHR$(220)
NEXT i%
COLOR 9
LOCATE 3, 16: PRINT CHR$(34); "MY BONNIE"; CHR$(34)
SLEEP 3
FOR i% = 1 TO 34
SELECT CASE i%
CASE 1: LOCATE 5, 5
CASE 10: LOCATE 10, 5
CASE 18: LOCATE 15, 5
CASE 27: LOCATE 20, 5
END SELECT
READ note%, duration%, word$
SOUND note%, duration%: PRINT word$;
NEXT i%
SLEEP 2
LOCATE 23, 16: PRINT "Thank You!"
SLEEP 4
SYSTEM
DATA 392,8,"My ",659,8,"Bon-",587,8,"nie ",523,8,"lies ",587,8,"O-",523,8,"Ver ",440,8,"the "
DATA 392,8,"O-",330,32,"cean ",392,8,"My ",659,8,"Bon-",587,8,"nie ",523,8,"lies "
DATA 523,8,"O-",494,8,"ver ",523,8,"the ",587,40,"sea ",392,8,"My ",659,8,"Bon-",587,8,"nie"
DATA 523,8," lies ",587,8,"O-",523,8,"ver ",440,8,"the ",392,8,"O-",330,32,"cean ",392,8,"Oh "
DATA 440,8,"bring ",587,8,"back ",523,8,"my ",494,8,"Bon-",440,8,"nie ",494,8,"to ",523,32,"me..!"