Főoldal | Könyvlista | Gyorskereső

Átmenetileg a rendelés és szállítás szünetel
Hangkártya programozása Pascal és Assembly nyelven

Hangkártya programozása Pascal és Assembly nyelven

László József:
Hangkártya programozása Pascal és Assembly nyelven


Megjelenés: 1999 március
ComputerBooks Kiadó
530 oldal, bolti ár: 2900,- Ft

A könyv elfogyott
utánnyomás nem várható

A könyv ismertetése

Vissza a lap tetejére | A könyv tartalomjegyzéke

A Hangkártya Programozása című könyv először 1995-ben jelent meg a ComputerBooks kiadó gondozásában. A kötet tartalmazta azokat az alapvető ismereteket, amelyek az akkor forgalomban lévő hangkártyák programozásához szükségesek voltak. Az azóta eltelt idő alatt fény derült a kötet néhány hiányosságára és az apróbb hibákra, mindemellett természetesen a számítógép-technika is jelentős fejlődésen ment keresztül. A kiadó és a szerző ezért egyaránt úgy ítélték meg, hogy szükséges az ismeretanyag átdolgozása, a hibák korrigálása és az újdonságok bemutatása is. A könyv eredeti fejezeteit tehát átdolgoztuk, javítottuk, újakkal egészítettük ki. Ezt a módosított és bővített kiadványt tartja most kezében az Olvasó, amely az első kiadáshoz hasonlóan azokhoz a programozókhoz, fejlesztőkhöz (minden korosztályhoz iskolástól a gyakorlott rendszerfejlesztőig) szól, akik eléggé elszántak a számítógép alacsony szintű – de nem alacsony színvonalú – hardverközeli programozásához.

A számító-gépes hangfeldolgozás igen széles skálájú tudomány, amely magában foglalja a digitális jelfeldolgozást, a digitális beszédfeldolgozást, a hangszintetizálást és a hangfelismerést is. Hogy mindezekre teljes részletességgel kitérjünk, ahhoz még tíz ilyen könyv is kevés lenne. Itt most csak az IBM PC hangkeltési lehetőségeiről lesz szó. Az IBM PC-hez több különböző típusú hangkártyát gyártanak, amelyek közül három-négy eléggé elterjedt Magyarországon is. Ezeknek a kártyáknak a programozását írjuk le ebben a könyvben.

A programozáshoz szükség lesz valamilyen programozási nyelvre is. A hangkártyákat szerintünk – mint általában a legtöbb hardverelemet – alacsony szintű nyelven lehet programozni a leghatékonyabban. Ezért a könyv példáinak megértéséhez elengedhetetlen az ASSEMBLY nyelv, az Intel processzorok gépi kódú programozásának ismerete. Programjainkat BORLAND PASCAL-ban fog-juk írni, amelyben lehetőség van assembly betétek elhelyezésére és külső assembly modulok beillesztésére.

Az első fejezetekben a digitális jelfeldolgozás és a hangkeltés alapfogalmairól szólunk. Megnézzük majd, hogy mik is azok a jelalakok, milyen, zenében használatos fogalmakat kell ismerni, hogyan történik az analóg jelek mintavételezése és a digitális hangminták lejátszása. Ez után a különböző hangkártyák regisztereit és azok használatát ismertetjük. Rövidebb (és néhol talán kicsit hosszabb) példaprogramok mutatják majd be az adott lehetőségeket, az elterjedt programozói módszereket, egy-egy alapvető feladat tipikus megoldását.

Nem állítjuk persze, hogy mindez könnyű lesz. Ahhoz, hogy valaki hatékonyan tudjon programozni egy hangkártyát, egy kicsit zenésznek, egy kicsit fizikusnak és matematikusnak és termé-szetesen gyakorlott programozónak is kell lennie! Bizony egyik-másik program elsőre kissé talán bonyolultnak tűnhet. Hogy az Olvasó könnyebben megérthesse ezeket, példáinkban ezért nem töre-kedtünk az optimális sebességre vagy a méretre, inkább az érthetőséget és az áttekinthetőséget tartottuk elsődleges szempontnak.

Reméljük, hogy a Hanghártya Programozása első kiadásához hasonlóan ez a javított és módosított változat is hasznos forrása lesz az Olvasónak.

A könyv tartalomjegyzéke

Vissza a lap tetejére | A könyv ismertetése

Előszó

Bevezetés

Alapfogalmak


Analóg jelek osztályozása
A hang
Hullámforma
AM, FM és a többiek
Amplitúdómoduláció (AM)
Frekvenciamoduláció (FM)
Hangszín
Spektrum
Burkológörbe, ADSR generátor
Analóg jelek digitális feldolgozása
Mintavételezés és kvantálás
Analóg-digitális átalakítás (ADC)
Digitális-analóg átalakítás (DAC)
Periodikus függvények Fourier-analízise (sorba fejtés)
Zene, zene, zene
Kotta és hangjegyek
Hangsorok, akkordok
Gitárakkordok

A beépített Assembler használata


Assembly blokkok
Direktívák
Szimbólumok
Címkék
Assembly eljárások és függvények
Paraméterek és visszaadott értékek

Az ADLIB hangkártya


Az ADLIB kártya regisztereinek elérése
Az ADLIB regiszterkészlete
Az ADLIB kártya programozása
Az ADLIB unit
Egyetlen hang kiadása
A regiszterek csoportos módosítása
A hang kitartása a Sustain szinten
Az burkológörbe szakaszainak manipulálása
A skálatényező (KSR bit) használata
Összetett hangzások, az operátorok eltérő beállítása
Nyomkövetés, hibafelderítés
Több csatorna használata
A ritmushangszerek használata
Megszakításvezérelt lejátszóprogram
Események
Az adathalmaz formátuma
A lejátszó (player)
Típusok
Állandók
Változók
Eljárások
A főprogram
A fordító (compiler)
Típusok
Állandók
Változók
Eljárások
A főprogram
Szintaktikai szabályok
Példaprogramok a lejátszóhoz
Egyszerű hangsor egy csatornára
Összetett hangsor egy csatornára
Akkordok több csatornán
Az ADLIB alkalmazása játékprogramokban
Elméleti alapok
Dinamikus csatornaallokáció, prioritások
Megvalósítási szempontok az ADLIB kártyán
Végrehajtó egység
Hangprogram utasítások
Az FMDRV egység
Hangprogramok készítése, szerkesztési szabályok
Példa az FMDRV unit használatára

A SOUND BLASTER hangkártya


ADLIB kompatibilitás
Szoftveres támogatás
A DSP egység
A DSP egység inicializálása
Parancs és adat kiírása a DSP egységre
Adat beolvasása a DSP-ről
DSP átviteli módok felvételkor
DSP átviteli módok lejátszáskor
ADPCM
DSP parancsok
A DSP egység programozása
A DSP unit
Típusok, állandók
Eljárások, függvények
Hullámformák előállítása a DSP egységgel
Változók
Eljárások
A főprogram
Hangfelvétel direkt módon a DSP-vel
Hangfelvételek visszajátszása direkt módon
Hosszabb hangfelvételek készítése
Visszajátszás
A DMA vezérlő és a megszakításvezérlő
A DMA vezérlő programozása
A DMA átvitel korlátai
Az IRQ vezérlő programozása
Az egyciklusú DMA átvitel
Az SB_DMA unit
Állandók, változók
Eljárások
Felvétel DMA átvitellel
Lejátszás DMA átvitellel
Időállandók kiszámítása
Az auto-init DMA átvitel
Az SB_AIDMA unit
Hullámforma generálás auto-init DMA módban
Hangfelvétel auto-init DMA módban
Lejátszás auto-init DMA módban
Az egyciklusú és az auto-init DMA összehasonlítása
Összegzés

A Sound Blaster Pro hangkártya


Hardverbeállítások
Csatlakozók
Szoftveres támogatás
I/O-kiosztás
Az FM chip programozása
Egyéb módosítások
A keverő programozása
Regisztertükrök
Az SBPRO unit
Sztereó hang a kimeneten
Összefoglalás

A Sound Blaster 16 hangkártya


A Sound Blaster 16 lehetőségei
Hardverbeállítások
Csatlakozók
Telepítés (installálás), szoftveres támogatás
Az OPL–3 FM chip programozása
Négyoperátoros FM hanggenerálás
OPL–3 regiszterkészlet
AM
Op1
Állandók, változók
Eljárások
Négyoperátoros hang
A továbbfejlesztett DSP egység (ASP)
DSP parancsok
Bájtszekvenciális parancsok
A keverő programozása
Az SB16MIX unit
A 16 bites DMA használata
Az SB16DMA unit
16 bites hullámforma generálás
16 bites felvétel
16 bites lejátszás
Összefoglalás

Sound Blaster AWE 32/64
Belső felépítés
Joystick port
MIDI port
Bus Interface
MCU (MIDI Controller Unit)
ASP (Advanced Sound Processor)
D/A
Mixer
Waveblaster
MCD Interface
Amplifier
EMU8000 subsystem
A Sound Blaster kártyák szoftvertámogatása
Diagnose
Mixerset
DRV könyvtár
SAMPLES könyvtár
Az autoexec.bat és a config.sys módosítása
A PNP kártyák beállítása

A Sound Blaster kártyák alkalmazása játékprogramokban


A digitális hangminták algoritmikus kezelése
A hangerő (amplitúdó) megváltoztatása
A hangminták típuskonverziója
A hangminták keverése
A hangmagasság megváltoztatása
Interpolálás, decimálás
A SAMPLES unit
Virtuális csatornák
Megvalósítás, feltételek, szempontok
Megszakításos feed
AZ SB_IDRV unit
Hangkeltés az SB_IDRV unittal
Auto-init DMA feed
A blokkok feldolgozása
A hangminták összekeverése blokkokban
Az SB_DDRV unit
Hangkeltés az SB_DDRV unittal
Összefoglalás

A GRAVIS ULTRASOUND hangkártyák


A Gravis Ultrasound lehetőségei
Hardver áttekintés
Csatlakozók
I/O címek
A GUS DRAM memória
MIDI interfész
Joystick
A GF1 hangprocesszor (Voice Sound Synthetizer)
Különböző verziójú kártyák
A Gravis Ultrasound regiszterei
Az ULTRASND környezeti változó
Regiszterek
MIDI regiszterek
GF1 globális regiszterek
GF1 csatornaparaméter regiszterek
Általános regiszterek
Törtszámok
Automatikus hangerő-szabályozás
„Megszakadok . . . "
A GUS unit
Állandók
Eljárások, függvények
A Gravis Ultrasound tesztelése
Egyszerű szinuszos hang előállítása
Oktávok
Hangminta lejátszása
Megszakítások
A Gravis Ultrasound Extreme hangkártya
A Gravis Ultrasound PNP hangkártyák
Verziók, kompatíbilitás
Hardver paraméterek
Szintézer
Effektusok
Codec
Más hangkártyák emulációja
Szoftvertámogatás
Setup
Iwinit
MOD lejátszó Gravis kártyára
Hiányosságok
A Gravis Ultrasound hangkártyák alkalmazása játékprogramokban
Hangkeltés a GUSGAME unittal

Egyéb megoldások játékprogramokhoz


Összetett audio driver készítése
Hangkártya típusok
Detektálás
A hangok tárolása
Inicializálás, befejezés
Hangkeltés
A botkormány kezelése
A botkorány állapotának lekérdezése
Kalibráció
Digitális botkormányok illesztése a PC-hez

Zenefájl formátumok


Az SBI fájlok formátuma
Az SBI unit
A CMF fájlok formátuma
CMF fejléc
A CMF fájlok lejátszása
A VOC fájlok formátuma
A WAV fájlok formátuma
A MOD fájlok formátuma
Effektus parancsok
Extra effektus parancsok
Hangminták
MOD fájlok kilistázása
A MID fájlok formátuma
Az idő tárolása: dinamikus adathossz
MIDI események
Hang csatornaüzenetek
Rendszerüzenetek
MID fejléc
Exkluzív üzenetek
Metaesemények
A GENERAL MIDI szabvány
A ROLAND GS MIDI szabványa

Összegzés


ADLIB
Sound Blaster 1.0
Sound Blaster 1.5
Sound Blaster 2.0
Sound Blaster Pro 1.0
Sound Blaster Pro 2.0
Sound Blaster 16/16ASP
Sound Blaster AWE 32/64
Gravis Ultrasound
Gravis Ultrasound PNP

A. Függelék


MIDI adattáblázatok

B. Függelék


SBI hangszerek paraméterei

C. Függelék


Sound Blaster AWE 32 nem regisztrált MIDI paraméterek

D. Függelék


A CT-VOICE.DRV meghajtóprogram funkciói

E. Függelék


Az SBFMDRV.COM meghajtóprogram funkciói (CMF driver)

F. Függelék


CSATLAKOZÓK

G. Függelé


Az OPL-2 és OPL-3 FM chipek regiszterkészlete

H. Függelék


Sound Blaster DSP parancsok
Sound Blaster PRO egyéb DSP parancsok
Sound Blaster 16 egyéb DSP parancsok
Sound Blaster PRO kerevő regiszterek
Sound Blaster 16 keverő regiszterek

Irodalomjegyzék

Tárgymutató

Vissza a lap tetejére