1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-01 15:00:38 +00:00
QB64-PE/internal/help/SOUND.txt

139 lines
6.8 KiB
Plaintext
Raw Normal View History

'''SOUND''' sets frequency and duration of sounds from the internal PC speaker if the computer has one or the sound card in QB64.
{{PageSyntax}}
:: SOUND ''frequency'', ''duration''
2016-03-18 11:36:04 +00:00
{{PageDescription}}
* ''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.
2016-03-18 11:36:04 +00:00
{{PageErrors}}
* Low ''frequency'' values between 0 and 37 will create an [[ERROR Codes|Illegal Function call error]].
2016-03-18 11:36:04 +00:00
* '''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!
2016-03-18 11:36:04 +00:00
* SOUND may have clicks or pauses between the sounds generated. [[PLAY]] can be used for musical sounds.
{{WhiteStart}}
''' 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'''
{{WhiteEnd}}
''Example 1:'' Playing the seven octaves based on the base note DATA * 2 ^ (octave - 1).
{{CodeStart}} '' ''
2019-04-15 01:15:33 +00:00
notes$ = "C C#D D#E F F#G G#A A#B "
{{Cl|COLOR}} 9:{{Cl|LOCATE}} 5, 20: PRINT "Select an octave (1 - 7) to play (8 quits):"
{{Cl|DO}}
{{Cl|DO}}: octa$ = {{Cl|INKEY$}}
2019-04-15 01:15:33 +00:00
{{Cl|IF...THEN|IF}} octa$ <> "" {{Cl|THEN}}
{{Cl|IF...THEN|IF}} {{Cl|ASC}}(octa$) > 48 {{Cl|AND (boolean)|AND}} {{Cl|ASC}}(octa$) < 58 {{Cl|THEN}} octave% = {{Cl|VAL}}(octa$): {{Cl|EXIT DO}}
{{Cl|END IF}}
2019-04-15 01:15:33 +00:00
{{Cl|LOOP}} {{Cl|UNTIL}} octave% > 7
{{Cl|IF...THEN|IF}} octave% > 0 {{Cl|AND (boolean)|AND}} octave% < 8 {{Cl|THEN}}
{{Cl|LOCATE}} 15, 6: {{Cl|PRINT}} {{Cl|SPACE$}}(70)
{{Cl|LOCATE}} 16, 6: {{Cl|PRINT}} {{Cl|SPACE$}}(70)
2019-04-15 01:15:33 +00:00
{{Cl|COLOR}} 14: {{Cl|LOCATE}} 15, 6: {{Cl|PRINT}} "Octave"; octave%; ":";
{{Cl|RESTORE}} Octaves
{{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} 12
{{Cl|READ}} note!
snd% = {{Cl|CINT}}(note! * (2 ^ (octave% - 1))) 'calculate note frequency
{{Cl|COLOR}} 14: {{Cl|PRINT}} {{Cl|STR$}}(snd%);
c0l = {{Cl|POS}}(0)
{{Cl|COLOR}} 11: {{Cl|LOCATE}} 16, c0l - 2: {{Cl|PRINT}} {{Cl|MID$}}(notes$, 1 + (2 * (i - 1)), 2)
{{Cl|LOCATE}} 15, c0l
2019-04-15 01:15:33 +00:00
{{Cl|IF...THEN|IF}} snd% > 36 {{Cl|THEN}} {{Cl|SOUND}} snd%, 12 'error if sound value is < 36
{{Cl|_DELAY}} .8
{{Cl|NEXT}}
{{Cl|END IF}}
2019-04-15 01:15:33 +00:00
{{Cl|LOOP}} {{Cl|UNTIL}} octave% > 7
{{Cl|END}}
Octaves:
{{Cl|DATA}} 32.7,34.65,36.71,38.9,41.2,43.65,46.25,49,51.91,55,58.27,61.74 '' ''
{{CodeEnd}}
{{small|Code adapted by Ted Weissgerber from code in [http://www.amazon.com/Running-MS-DOS-QBASIC-Michael-Halvorson/dp/1556153406 "Running MS-DOS Qbasic"] by Microsoft Press}}
2019-04-15 01:15:33 +00:00
''Example 2:'' Playing a song called "Bonnie" with [[SOUND]] frequencies.
{{CodeStart}} '' ''
{{Cl|SCREEN (statement)|SCREEN}} 13
{{Cl|_FULLSCREEN}}
{{Cl|OUT}} {{Cl|&H}}3C8, 0: {{Cl|OUT}} {{Cl|&H}}3C9, 0: {{Cl|OUT}} {{Cl|&H}}3C9, 0: {{Cl|OUT}} {{Cl|&H}}3C9, 20
{{Cl|COLOR}} 1
{{Cl|FOR...NEXT|FOR}} i% = 1 {{Cl|TO}} 21
{{Cl|LOCATE}} 2 + i%, 2: {{Cl|PRINT}} {{Cl|CHR$}}(178)
{{Cl|LOCATE}} 2 + i%, 39: {{Cl|PRINT}} {{Cl|CHR$}}(178)
{{Cl|NEXT}} i%
{{Cl|FOR...NEXT|FOR}} i% = 2 {{Cl|TO}} 39
{{Cl|LOCATE}} 2, i%: {{Cl|PRINT}} {{Cl|CHR$}}(223)
{{Cl|LOCATE}} 23, i%: {{Cl|PRINT}} {{Cl|CHR$}}(220)
{{Cl|NEXT}} i%
{{Cl|COLOR}} 9
2019-04-15 01:15:33 +00:00
{{Cl|LOCATE}} 3, 16: {{Cl|PRINT}} {{Cl|CHR$}}(34); "MY BONNIE"; {{Cl|CHR$}}(34)
{{Cl|SLEEP}} 3
{{Cl|FOR...NEXT|FOR}} i% = 1 {{Cl|TO}} 34
{{Cl|SELECT CASE}} i%
{{Cl|CASE}} 1: {{Cl|LOCATE}} 5, 5
{{Cl|CASE}} 10: {{Cl|LOCATE}} 10, 5
{{Cl|CASE}} 18: {{Cl|LOCATE}} 15, 5
{{Cl|CASE}} 27: {{Cl|LOCATE}} 20, 5
{{Cl|END SELECT}}
{{Cl|READ}} note%, duration%, word$
{{Cl|SOUND}} note%, duration%: {{Cl|PRINT}} word$;
{{Cl|NEXT}} i%
{{Cl|SLEEP}} 2
2019-04-15 01:15:33 +00:00
{{Cl|LOCATE}} 23, 16: {{Cl|PRINT}} "Thank You!"
{{Cl|SLEEP}} 4
{{Cl|SYSTEM}}
2019-04-15 01:15:33 +00:00
{{Cl|DATA}} 392,8,"My ",659,8,"Bon-",587,8,"nie ",523,8,"lies ",587,8,"O-",523,8,"Ver ",440,8,"the "
{{Cl|DATA}} 392,8,"O-",330,32,"cean ",392,8,"My ",659,8,"Bon-",587,8,"nie ",523,8,"lies "
{{Cl|DATA}} 523,8,"O-",494,8,"ver ",523,8,"the ",587,40,"sea ",392,8,"My ",659,8,"Bon-",587,8,"nie"
{{Cl|DATA}} 523,8," lies ",587,8,"O-",523,8,"ver ",440,8,"the ",392,8,"O-",330,32,"cean ",392,8,"Oh "
{{Cl|DATA}} 440,8,"bring ",587,8,"back ",523,8,"my ",494,8,"Bon-",440,8,"nie ",494,8,"to ",523,32,"me..!" '' ''
{{CodeEnd}}
{{small|Code adapted by Ted Weissgerber from code [http://www.amazon.com/Running-MS-DOS-QBASIC-Michael-Halvorson/dp/1556153406 "Running MS-DOS Qbasic"] by Microsoft Press}}
''See also:''
* [[PLAY]], [[BEEP]]
* [[_SNDOPEN]] (play sound files)
* [[_SNDRAW]] (play frequency waves)
2019-04-15 01:15:33 +00:00
{{PageNavigation}}
<