21. Zvuk: SOUND

Na čo to je

Atari má štyri hlasy – štyri nezávislé zdroje zvuku. Každý vie hrať čistý tón alebo šum, a to naraz s ostatnými. Jeden príkaz hlas zapne a hrá, kým ho iný príkaz nezmení alebo nevypne.

Ako sa to píše

Atari BASIC
SOUND hlas,výška,skreslenie,hlasitosť
HodnotaRozsahVýznam
hlas0–3ktorý zo štyroch hlasov
výška0–255menšie číslo je vyšší tón
skresleniepárne 0–1410 je čistý tón, 14 trochu drsnejší; 0, 2, 4, 6, 8 a 12 sú rôzne šumy a bzukoty
hlasitosť0–150 je ticho, 8 príjemne nahlas

SOUND hlas,0,0,0 hlas vypne.

Výšky pre tóny jednej oktávy (so skreslením 10):

TónCDEFGAHC
Výška121108969181726460

O oktávu vyššie sú čísla približne polovičné, o oktávu nižšie dvojnásobné.

Celý program

Súbor examples/sound.abas zahrá stupnicu:

Atari BASIC
10 REM SOUND: a scale
20 FOR I=1 TO 8
30   READ P
40   SOUND 0,P,10,8
50   S=15:GOSUB 1000
60 NEXT I
70 SOUND 0,0,0,0
80 END
1000 REM Wait S fiftieths of a second
1010 POKE 20,0
1020 IF PEEK(20)<S THEN 1020
1030 RETURN
2000 DATA 121,108,96,91,81,72,64,60

Preklad a spustenie

Zvuk počuť len v emulátore (alebo na skutočnom Atari):

Basic26 sound.abas --run

V simulátore tento program nespúšťaj: čaká na hodiny počítača a tie v simulátore stoja (kapitola 18).

Čo uvidíš

Nič – ale budeš počuť osem tónov stupnice C dur, každý necelú tretinu sekundy.

Ako to funguje

Prečo nie čakacia slučka

Dobové programy držia notu prázdnou slučkou FOR W=1 TO 100:NEXT W. V preloženom programe by takú melódiu nebolo počuť – prebehla by niekoľkokrát rýchlejšie. Čakanie podľa hodín trvá rovnako v interpreteri, v preloženom programe aj na rýchlejšom stroji.

Viac hlasov naraz

Akord sú tri hlasy zapnuté po sebe:

Atari BASIC
10 SOUND 0,121,10,8
20 SOUND 1,96,10,8
30 SOUND 2,81,10,8

Súčet hlasitostí všetkých hlasov by nemal prekročiť asi 32, inak zvuk chrčí.

Zvukové efekty

Efekt vzniká rýchlou zmenou výšky alebo hlasitosti v slučke:

Atari BASIC
10 REM A falling bomb
20 FOR P=30 TO 200:SOUND 0,P,10,8:NEXT P
30 REM An explosion
40 FOR V=15 TO 0 STEP -1:SOUND 0,90,8,V:S=4:GOSUB 1000:NEXT V

Skreslenie 8 je šum; s klesajúcou hlasitosťou znie ako výbuch.

Časté chyby

Čo sa staloČo sa stane
chýba čakanie medzi tónmije počuť len posledný tón, ostatné prebehnú príliš rýchlo
hlas sa nevypnetón hrá, kým program beží
hlas mimo 0–3ERROR- 3 AT LINE 40
nepárne skresleniehlas mlčí – nepárne hodnoty zvuk nevytvárajú, len nastavia hlasitosť
čakacia slučka FOR namiesto hodínmelódia je v preloženom programe príliš rýchla

Vyskúšaj si

  1. Zahraj stupnicu aj nadol.
  2. Pridaj do DATA ku každej výške aj dĺžku noty a zahraj jednoduchú pesničku.
  3. Sprav sirénu: výška stúpa od 60 po 120 a zasa klesá, päťkrát za sebou.

Zhrnutie

Späť: 20. Grafika · Ďalej: 22. Joystick a klávesy