Editor hudby pre programy v pascale

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategórie: KMP (Programy mladých programátorů)

Autor: Martin Koleček
Program: Editsnd.pasSpeaker.pas
Potřebné: Manual_snd.txt

S programem EditSnd.exe je mozne generovat soubory s priponou SND. Tyto soubory maji slouzit k ozvuceni programu na profesionalni urovni pomoci PC Speakeru. Vyuziva se k tomu preruseni od casovace nastavene na 100Hz tzn. vzorkovaci frekvence prehravanych zvuku je 100Hz. Nedochazi ke zhrouceni hodin vse je osetreno tak aby sly prehravat zvuky, aby spravne sly hodiny a zaroven aby program mohl vykonavat jine ulohy. Vse bezi na pozadi pres int8 viz. unit speaker.pas.
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
Manual k programu EditSND
 
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
Obsah:
 
  1. Vyznam editoru
  2. Zvukovy format SND
  3. Prace s editorem
  4. Kontaktni adresa
  5. Unit Speaker.pas
 
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
1. VYZNAM EDITORU
 
  S programem EditSnd.exe je mozne generovat soubory s priponou SND. Tyto
  soubory maji slouzit k ozvuceni programu na profesionalni urovni pomoci
  PC Speakeru. Vyuziva se k tomu preruseni od casovace nastavene na 100Hz
  tzn. vzorkovaci frekvence prehravanych zvuku je 100Hz. Nedochazi ke
  zhrouceni hodin vse je osetreno tak aby sly prehravat zvuky, aby spravne
  sly hodiny a zaroven aby program mohl vykonavat jine ulohy. Vse bezi na
  pozadi pres int8 viz. unit speaker.pas
 
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
2. ZVUKOVY FORMAT SND
 
  Soubor SND generovany programem EditSND.exe je muj vlastni format takze
  neni mozne pomoci tohoto editoru otevirat soubory s priponou snd ktere se
  vyskytovaly napr. ve starych hrach, tam je struktura souboru zcela odlisna
  od te moji.
 
  V mem souboru SND jsou dve hlavni casti ato:
  prvnich 4000 bajtu (2000 wordu - blok dat 1)
  dalsich  200 bajtu ( 100 wordu - blok dat 2)
 
  V souboru snd je mozne ulozit az 50 zvuku [0..49]. Jeden zvuk je popsan
  dvema cisly: ZACATKEM a DELKOU v tabulce (druhy blok dat) a samotnymi
  zvukovymi daty (prvni blok dat).
 
  Prvnich 2000 wordu(slov) obsahuje hodnoty vysky prehravaneho zvuku. Jsou
  tam ulozeny hodnoty v rozsahu 0..1000. Pri prehravani se pak jde rychlosti
  vzorkovaci frekvence word po wordu a nastavuje se vyska prehravaneho tonu
  na PC Speakeru.
 
  Zbyvajicich 200 bajtu: V teto casti je ulozena tabulka jednotlivych zvuku.
  Kazdy sudy word v teto tabulce predstavuje ZACATEK a kazdy lichy DELKU.
 
  Priklad Zvuk[0]:
  V druhem bloku dat je jeho ZACATEK na nultem wordu a DELKA na prvnim wordu.
 
  Priklad Zvuk[49]:
  V druhem bloku dat word 98 urcuje ZACATEK a word 99 urcuje DELKU
 
  Co je to ZACATEK: ZACATKEM zvuku je mineno cislo ktere urcuje kde v prvnim
  bloku dat zacinaji data tohoto zvuku. Napr zvuk[20] ma ZACATEK=1600
  a DELKA=100. Data tohoto zvuku zacinaji v prvnim bloku dat na wordu 1600 a
  sahaji az k wordu 1700 (ZACATEK+DELKA)
 
  Co je to DELKA: Je to pocet wordu(slov) ktere zabira dany zvuk v prvnim
  bloku dat. Maximalni DELKA jednoho zvuku je 300 wordu coz pri vzorkovaci
  frekvenci 100Hz odpovida trem vterinam zvuku.
 
  Jak asi vyplynulo vysledny soubor snd ulozi 20 vterin ruznych zvuku pro
  PC Speaker, pri delce jednoho zvuku pul vteriny je to asi 40 zvuku. Pro
  Zaokrouhleni a taky pro jistotu jsem tam dal moznost ulozit 50 zvuku.
 
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
3. PRACE S EDITOREM
 
  Po spusteni programu EditSND.exe se objevi nahore lista a po stisku sipky
  dolu se otevre menu s nabidkami. Na liste je : napis MENU, napis EDITOR
  ZVUKU dale je tam soubor= a sem se dosadi jmeno editovaneho souboru a
  napis F10=EXIT
 
  V nabidce ktera se objevi po stisku sipky dolu jsou moznosti: VYTVORIT,
  ULOZIT, OTEVRIT, EDITOR a NAPOVEDA. V menu se pohybujeme sipkami nahoru a
  dolu, vyber se provadi stiskem ENTER nebo pomoci klavesovych zkratek.
 
  F1 = zobrazi napovedu (ESC=Zpet)
  F2 = ulozeni, program sam nikde nevyzyva k ukladani proto nezapomente F2
  F3 = spusti dialog pro zadani jmena existujiciho souboru k otevreni,
       jmeno souboru k otevreni stejne jako u vytvareni noveho se zadava ve
       tvaru jmeno souboru bez pripony dlouhe max. 8 znaku, priponu snd si
       editor dosazuje sam, potvrezeni jmena se provadi stiskem ENTER
  F4 = spusti dialog pro vytvoreni noveho souboru, stejne jako u otevirani
  F5 = pokud mame zadane nejake jmeno souboru a vidime ho na liste tak se
       spusti graficky editor zvuku (ESC=navrat zpet do textoveho menu)
  F10 = konec programu
 
  F5 Graficky editor zvuku:
  Zobrazi se seznam jednotlivych zvuku. Co je k videni na jednom radku:
  Cislo od 0 do 49 udava cislo zvuku, dale ZACATEK=(0..1999), DELKA=(0..300)
  a ROZSAH kde vidime ktere wordy v prvnim bloku dat ve vyslednem souboru
  budou obsazeny vybranym zvukem. Sipkami nahoru a dolu se pohybujeme mezi
  jednotlivymi zvuky na trech obrazovkach (zvuky 0..19 , 20..39 , 40..49 ).
  Sipkami doleva a doprava menime pozici kurzoru (barevne oznaceni) a
  vybirame jestli budeme editovat ZACATEK nebo DELKU vybraneho zvuku.
 
  Klavesami Insert a Delete pridavame a ubirame jednotky
            Home a End pridavame a ubirame desitky
            PgUp a PgDn pridavame a ubirame stovky
 
  Rozsahy jake muzeme pomoci techto klaves nastavovat jsou:
  pro ZACATEK 0..1999 (2000 Wordu = 4000 Bajtu)
  pro DELKU   0..300
 
  Stiskem Enter nebo F6 na vybranem zvuku spustime obrazovku ktera nam
  umozni naeditovat jakou podobu bude mit tento zvuk. Na teto obrazovce je
  dole mala sipka kterou pohybujeme klavesami doprava a doleva a tak se
  pohybujeme po zvuku po jeho jednotlivych krocich. Vlevo nahore hned vidime
  jak se meni cislo ktere nam rika jakou vysku bude mit tato cast zvuku.
  Doleva a doprava se muzeme pohybovat po rozsahu DELKY vybraneho zvuku.
  Pokud nemame v listu jednotlivych zvuku nastavenou nejakou DELKU zvuku
  tak se nam na teto obrazovce zobrazi jen delka nula a malou sipkou nepujde
  pohybovat.
 
  Klavesami Insert a Delete pridavame a ubirame jednotky
            Home a End pridavame a ubirame desitky
            PgUp a PgDn pridavame a ubirame stovky
 
  Rozsah jaky muzeme pomoci techto klaves nastavovat je 0..1000
 
  Jakmile pomoci zminenych klaves nastavime nejake vysky tonu pro PC Speaker
  vidime to graficky jako sloupce, sloupec se zvysi o jeden pixel pri zvyseni
  o deset. Muzeme editovat s presnosti i na jednotky pomoci Insert a Delete
  a vysledny zvuk se bude menit jen to neuvidime na sloupci. Jako cislo v
  rohu nahore vlevo to vsak videt bude.
 
  Stiskem klavesy P muzeme vysledny zvuk hned prehrat, tato moznost prehrani
  pomoci klavesy P je i v nabidce jednotlivych zvuku tam jak se edituje
  ZACATEK a DELKA.
 
  Navrat do nabidky jednotlivych zvuku provedeme pomoci F5 nebo ESC. Protoze
  i navrat do textoveho menu se provadi pomoci ESC tak doporucuju spis F5 ale
  preskoceni az do textoveho menu by nemelo hrozit ani stiskem ESC. Ukladat
  pomoci klavesy F2 je mozne jak v textovem menu tak v nabidce jednotlivych
  zvuku tak i na obrazovce s editovanym zvukem.
 
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
4. KONTAKTNI ADRESA
 
  Kritiku nebo nejake dotazy ohledne editoru nebo meho formatu snd posilejte
  na kolecek.martin@email.cz
 
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
5. UNIT SPEAKER.PAS
 
  Tato knihovna obsahuje:
 
  Procedure InitSound;
  Procedure ShutdownSound;
  Procedure LoadSNDFile(Filename:String);
  Procedure PlaySound(Sample:Byte);
  Function  FPS2s: Boolean; {pomoc pri vypoctu fps pomoci timeru}
 
  InitSound
    Je nutno zavolat na zacatku programu. Tato procedura nastavuje novou
  obsluhu preruseni 8 (timer) a nastavuje frekvenci timeru na 100Hz. Bez
  zavolani teto procedury by nebylo mozne prehravat zvuky na pozadi.
 
  ShutdownSound
    Je nutno zavolat na konci programu. Tato procedura vse uvede zase do
  puvodni podoby, nastavi zpatky starou obsluhu preruseni 8 (timer).
 
  LoadSNDFile(Filename:String)
    Nacte z disku soubor snd se zvuky do pameti. Filename se zadava vcetne
  pripony napr. LoadSNDFile('test.snd');
 
  PlaySound(Sample:Byte); {Sample v rozsahu 0..49 viz soubor}
    Spusti prehravani zvuku. Sample=Cislo ktery zvuk z tabulky zvuku chceme
  prehrat napr PlaySound(20); Pokud hned po jednom zavolani PlaySound
  zavolame dalsi tak ze se jeste nestacil prehrat predchozi zvuk tak dojde k
  tomu ze se ten drivejsi zasatavi a zacne hrat novy. Kazde zavolani
  PlaySound spousti nove prehravani a trvale rusi predchozi.
 
  a nakonec funkce FPS2s: Boolean {pro prehravani zvuku neni treba}
    Toto jsem do unitu pridal jako pomocnou rutinu pri vypoctu fps. Funkce
  vraci True po dobu jedne vteriny a po dobu druhe vteriny zase vraci False.
  Pak zase true atd.
 
  Priklad programu;
  USES CRT,Speaker;
  Begin
    InitSound;
    LoadSNDFile('test.snd');
    PlaySound(0);
    Delay(2000);
    ShutdownSound;
  End.
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}