HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Audio Mixer tulajdonságai


Audio Mixer 1. rész

Példaprogram letöltése

4156 bájt

Az Audio Mixer szolgáltatás felelős a hangcsatornák vezérléséért és irányításáért. Szintén az ő feladatköre, hogy megteremtse a kapcsolatot alkalmazásaink és a használni kívánt hangeszköz között. Egy rövid sorozat keretén belül megismerkedünk az Audio Mixer használatához szükséges függvényekkel. Ebben a részben a Mixer megnyitásával és tulajdonságainak lekérdezésével foglalkozunk.

Az Audio Mixer kezeléséhez az MMSystem unit-ban található néhány függvény.
Az első, amivel érdemes foglalkoznunk, a mixerGetNumDevs. Ennek a függvénynek a segítségével dönthetjük el, hogy rendszerünkben létezik-e egyáltalán Mixer szolgáltatás.
mixerGetNumDevs
function mixerGetNumDevs: UINT;
A rendelkezésre álló Mixer szolgáltatások számát adja vissza.
Visszatérési érték
A rendelkezésre álló szolgáltatások száma.
Ha használni kívánjuk valamelyik szolgáltatást, akkor legelső lépésként meg kell nyitnunk azt. Erre szolgál a mixerOpen függvény.
mixerOpen
function mixerOpen(
phmx: PHMIXER;
uMxId: UINT;
dwCallback,
dwInstance,
fdwOpen: DWORD
): MMRESULT;
Megnyit egy új szálat a Mixer szolgáltatáshoz. A szál nyitva marad míg az alkalmazás be nem zárja a hozzáférést, vagy meg nem hívjuk a mixerClose függvényt.
Paraméterek
phmx: PHMIXER
Egy pointer, amely a megnyitott szál azonosítóját kapja értékül.
uMxId: UINT
A megnyitandó Mixer szolgáltatást azonosítója. Ez lehet egy eszköz indexe, vagy egy konstans. A használható konstansokat az fdwOpen paraméter leírásánál részletezzük.
dwCallback
Ebben a paraméterben egy callback függvényt adhatunk meg, amelynek tartalma akkor fut le, ha a megnyitott szolgáltatás vagy csatorna tulajdonságai megváltoztak, vagy ahhoz hozzáférés történt.
Ha nem akarunk semmilyen függvényt használni, akkor a 0 értéket adjuk paraméterként.
dwInstance
A callback függvénynek átadandó paraméter. Itt is használhatjuk a 0 értéket.
fdwOpen: DWORD
A megnyitást befolyásoló flag-ek megadását teszi lehetővé.
Az alábbi értékeket, valamint azok kombinációit használhatjuk:
Érték Jelentése
CALLBACK_WINDOW A dwCallBack paraméter értékét ablak azonosítóként fogadja el.
MIXER_OBJECTF_AUX Az uMxId paraméterben megadott azonosító egy AUX eszköz indexe. A rendelkezésre álló AUX eszközök számát az auxGetNumDev függvénnyel kérdezhetjük le. Az első elem indexe 0.
MIXER_OBJECTF_HMIDIIN Az uMxId paraméter egy MIDI, bemeneti eszközt azonosít. Ezt az azonosítót a midiInOpen függvény állítja elő.
MIXER_OBJECTF_HMIDIOUT Az uMxId paraméter egy MIDI, kimeneti eszközt azonosít. Ezt az azonosítót a midiOutOpen függvény állítja elő.
MIXER_OBJECTF_HMIXER Az uMxId paraméter egy Mixer szolgáltatást azonosít, amelyet a mixerOpen függvény nyit meg.
MIXER_OBJECTF_HWAVEIN Az uMxId paraméter egy WAVE-AUDIO, bemeneti eszközt azonosít. Az azonosítót a waveInOpen függvény állítja elő.
MIXER_OBJECTF_HWAVEOUT Az uMxID paraméter egy WAVE-AUDIO, kimeneti eszközt azonosít. Az azonosítót a waveOutOpen függvény állítja elő.
MIXER_OBJECTF_MIDIIN Az uMxId paraméter egy MIDI, bemeneti eszköz indexe. A használható eszközök számát a midiInGetNumDevs függvénnyel kérdezhetjük le.
MIXER_OBJECTF_MIDIOUT Az uMxId paraméter egy MIDI, kimeneti eszköz indexe. A használható eszközök számát a midiOutGetNumDevs függvénnyel kérdezhetjük le.
MIXER_OBJECTF_MIXER Az uMxId paraméterben megadott azonosító egy Mixer szolgáltatás indexe. Az eszközök számát a mixerGetNumDevs függvény segítségével kérdezhetjük le.
MIXER_OBJECTF_WAVEIN Az uMxId paraméterben megadott azonosító egy WAVE-AUDIO, bemeneti eszköz indexe. Az eszközök számát a waveInGetNumDevs függvény segítségével kérdezhetjük le.
MIXER_OBJECTF_WAVEOUT Az uMxId paraméterben megadott azonosító egy WAVE-AUDIO, kimeneti eszköz indexe. Az eszközök számát a waveOutGetNumDevs függvény segítségével kérdezhetjük le.
Visszatérési érték
Ha a függvény lefutása sikeres volt, akkor az MMSYSERR_NOERROR értékkel tér vissza, ellenkező esetben a hiba kódjával. Ezek a következők lehetnek:
Érték Jelentése
MMSYSERR_ALLOCATED A megadott erőforrást már más szálak használják, és nem tud több kérést fogadni.
MMSYSERR_BADDEVICEID Az uMxId paraméter rossz eszközazonosítót tartalmaz.
MMSYSERR_INVALFLAG Egy vagy több flag nem valós.
MMSYSERR_INVALHANDLE Az uMxId-ben használt azonosító érvénytelen.
MMSYSERR_INVALPARAM Egy vagy több paraméter nem megfelelő.
MMSYSERR_NODRIVER Az uMxId-ben megadott eszköz vagy szolgáltatás nem létezik.
MMSYSERR_NOMEM Az erőforrást nem lehet lefoglalni.
A megnyitott szál lezárására a mixerClose függvény szolgál.
mixerClose
function mixerClose(
hmx: HMIXER
): MMRESULT;
Lezárja a mixerOpen függvénnyel megnyitott szálat.
Paraméterek
hmx: HMIXER
A szál azonosítója, amelyet a mixerOpen függvény phmx paraméterében kaptunk értékül.
Visszatérési érték
Ha a függvény lefutása sikeresen megtörtént, akkor a MMSYSERR_NOERROR értékkel tér vissza, ellenkező esetben a visszatérési érték MMSYSERR_INVALHANDLE (hibás azonosító).
A mixerGetDevCaps függvény segítségével néhány alapadatot kérdezhetünk le egy megadott Audio Mixer szolgáltatásról.
mixerGetDevCaps
function mixerGetDevCaps(
uMxId: UINT;
pmxcaps: PMixerCaps;
cbmxcaps: UINT
): MMRESULT;
Egy megadott Mixer szolgáltatás adatainak lekérdezésére szolgál.
Paraméterek
uMxId: UINT
A szolgáltatás azonosítója, amelyet a mixerOpen függvény állít elő.
pmxcaps: PMixerCaps
Itt egy PMixerCaps típusú struktúrát kell megadnunk, amelybe a lekérdezés eredménye kerül.
cbmxcaps: UINT
A pmxcaps paraméterben megadott struktúra méretét kell megadnunk, bájtokban.
Visszatérési érték
Ha a függvény lefutása sikeres volt, akkor a visszatérési érték MMSYSERR_NOERROR. Ellenkező esetben az alábbi konstansok egyike:
Érték Jelentése
MMSYSERR_BADDEVICEID A megadott azonosító a használható tartományon kívül esik.
MMSYSERR_INVALHANDLE A Mixer azonosítója érvénytelen.
MMSYSERR_INVALPARAM Egy vagy több paraméter hibás.
A mixerGetDevCaps függvénynek összesen 3 fajtája létezik, amelyek a pmxcaps paraméterben használható struktúra típusában térnek el.
function mixerGetDevCaps(uMxId: UINT; pmxcaps: PMixerCaps; cbmxcaps: UINT): MMRESULT;
function mixerGetDevCapsA(uMxId: UINT; pmxcaps: PMixerCapsA; cbmxcaps: UINT): MMRESULT;
function mixerGetDevCapsW(uMxId: UINT; pmxcaps: PMixerCapsW; cbmxcaps: UINT): MMRESULT;
A PMixerCaps struktúra
  • wMid: WORD - Egy szám, amely a gyártót azonosítja.
  • wPid: WORD - A termék azonosítója.
  • vDriverVersion: MMVERSION – A driver verziószáma.
  • szPname: array [0..MAXPNAMELEN - 1] of AnsiChar – a termék neve.
  • fdwSupport: DWORD – Támogatás információ bitek a termékhez.
  • cDestinations: DWORD – Cél csatornák száma.
Egy Audio Mixer szolgáltatás több hangcsatornát vezérelhet. A csatornák lehetnek be- vagy kimenők, illetve forrás vagy cél csatornák, funkciójuktól függően. Egy csatorna adatait a mixerGetLineInfo függvény segítségével kérdezhetjük le.
mixerGetLineInfo
function mixerGetLineInfo(
hmxobj: HMIXEROBJ;
pmxl: PMixerLine;
fdwInfo: DWORD
): MMRESULT;
Információt szolgáltat az Audio Mixer egy megadott csatornájáról.
Paraméterek
hmxobj: HMIXEROBJ
A Mixer azonosítója, amely a megadott audio csatornát vezérli.
pmxl: PMixerLine
Ebben a paraméterben egy MIXERLINE struktúrára mutató pointert kell megadnunk, a lekérdezés eredménye ebbe kerül. A struktúra cbStruct tagjában be kell állítanunk a struktúra méretét, még mielőtt a függvényt meghívnánk.
fdwInfo: DWORD
Flag-ek, az információkérés szabályozására. A következő értékeket használhatjuk:
Érték Jelentése
MIXER_GETLINEINFOF_COMPONENTTYPE Ha a MIXERLINE struktúra dwComponentType tagjában beállítjuk egy audio csatorna típusát, akkor az információkérés az első olyan típusú eszközről történik.
MIXER_GETLINEINFOF_DESTINATION Ha a MIXERLINE struktúra dwDestination tagjában beállítunk egy cél audio csatornát, akkor az információkérés arról az eszközről történik.
MIXER_GETLINEINFOF_LINEID Ha a MIXERLINE struktúra dwLineId tagjában beállítjuk egy audio csatorna azonosítóját, akkor az információkérés az alapján történik.
MIXER_GETLINEINFOF_SOURCE Az információkérés a MIXERLINE struktúra dwDestination és dwSource tagjában beállított értékek alapján történik.
MIXER_GETLINEINFOF_TARGETTYPE Az információkérés a MIXERLINE struktúra dwType, wMid, wPid, vDriverVersion and szPname tagjában beállított értékek alapján történik.
MIXER_OBJECTF_AUX A hmxobj paraméterben megadott azonosító egy AUX eszköz indexe. A rendelkezésre álló AUX eszközök számát a auxGetNumDev függvénnyel kérdezhetjük le. Az első elem indexe 0.
MIXER_OBJECTF_HMIDIIN A hmxobj paraméter egy MIDI, bemeneti eszközt azonosít. Ezt az azonosítót a midiInOpen függvény állítja elő.
MIXER_OBJECTF_HMIDIOUT A hmxobj paraméter egy MIDI, kimeneti eszközt azonosít. Ezt az azonosítót a midiOutOpen függvény állítja elő.
MIXER_OBJECTF_HMIXER A hmxobj paraméter egy Mixer szolgáltatást azonosít, amelyet a mixerOpen függvény nyit meg.
MIXER_OBJECTF_HWAVEIN A hmxobj paraméter egy WAVE-AUDIO, bemeneti eszközt azonosít. Az azonosítót a waveInOpen függvény állítja elő.
MIXER_OBJECTF_HWAVEOUT A hmxobj paraméter egy WAVE-AUDIO, kimeneti eszközt azonosít. Az azonosítót a waveOutOpen függvény állítja elő.
MIXER_OBJECTF_MIDIIN A hmxobj paraméter egy MIDI, bemeneti eszköz indexe. A használható eszközök számát a midiInGetNumDevs függvénnyel kérdezhetjük le.
MIXER_OBJECTF_MIDIOUT A hmxobj paraméter egy MIDI, kimeneti eszköz indexe. A használható eszközök számát a midiOutGetNumDevs függvénnyel kérdezhetjük le.
MIXER_OBJECTF_MIXER A hmxobj paraméterben megadott azonosító egy Mixer szolgáltatás indexe. Az eszközök számát a mixerGetNumDevs függvény segítségével kérdezhetjük le.
MIXER_OBJECTF_WAVEIN A hmxobj paraméterben megadott azonosító egy WAVE-AUDIO, bemeneti eszköz indexe. Az eszközök számát a waveInGetNumDevs függvény segítségével kérdezhetjük le.
MIXER_OBJECTF_WAVEOUT A hmxobj paraméterben megadott azonosító egy WAVE-AUDIO, kimeneti eszköz indexe. Az eszközök számát a waveOutGetNumDevs függvény segítségével kérdezhetjük le.
Visszatérési érték
Ha a függvény lefutása sikeres volt, akkor az MMSYSERR_NOERROR értékkel tér vissza, ellenkező esetben a hiba kódjával. Ezek a következők lehetnek:
Érték Jelentése
MIXERR_INVALLINE Érvénytelen audio csatorna hivatkozás.
MMSYSERR_BADDEVICEID A hmxobj paraméter rossz eszközazonosítót tartalmaz.
MMSYSERR_INVALFLAG Egy vagy több flag nem valós.
MMSYSERR_INVALHANDLE A hmxobj-ben használt azonosító érvénytelen.
MMSYSERR_INVALPARAM Egy vagy több paraméter nem megfelelő.
MMSYSERR_NODRIVER A hmxobj-ben megadott eszköz nem létezik.
A mixerGetLineInfo függvénynek összesen 3 fajtája létezik.
function mixerGetLineInfo(hmxobj: HMIXEROBJ; pmxl: PMixerLine; fdwInfo: DWORD): MMRESULT;
function mixerGetLineInfoA(hmxobj: HMIXEROBJ; pmxl: PMixerLineA; fdwInfo: DWORD): MMRESULT;
function mixerGetLineInfoW(hmxobj: HMIXEROBJ; pmxl: PMixerLineW; fdwInfo: DWORD): MMRESULT;
A MIXERLINE struktúra
  • cbStruct: DWORD – A struktúra mérete.
  • dwDestination: DWORD – Célcsatorna indexe.
  • dwSource: DWORD – Forráscsatorna indexe.
  • dwLineID: DWORD - A csatorna egyedi azonosítója.
  • fdwLine: DWORD – Állapotjelző flag-ek: MIXERLINE_LINEF_ACTIVE – a csatorna aktív; MIXERLINE_LINEF_DISCONNECTED – a csatorna inaktív; MIXERLINE_LINEF_SOURCE – a csatorna egy forrás, amely egy célcsatornához csatlakozik, ha az érték nincs beállítva, akkor egy célcsatornáról van szó.
  • dwUser: DWORD – Meghajtó függő információ.
  • dwComponentType: DWORD – A csatorna típusa. Értékei a következők lehetnek: MIXERLINE_COMPONENTTYPE_DST_DIGITAL, MIXERLINE_COMPONENTTYPE_DST_HEADPHONES, MIXERLINE_COMPONENTTYPE_DST_LINE, MIXERLINE_COMPONENTTYPE_DST_MONITOR, MIXERLINE_COMPONENTTYPE_DST_SPEAKERS, MIXERLINE_COMPONENTTYPE_DST_TELEPHONE, MIXERLINE_COMPONENTTYPE_DST_UNDEFINED, MIXERLINE_COMPONENTTYPE_DST_VOICEIN, MIXERLINE_COMPONENTTYPE_DST_WAVEIN, MIXERLINE_COMPONENTTYPE_SRC_ANALOG, MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY, MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC, MIXERLINE_COMPONENTTYPE_SRC_DIGITAL, MIXERLINE_COMPONENTTYPE_SRC_LINE, MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE, MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER, MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER, MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE, MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED, MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT.
  • cChannels: DWORD – Külön vezérelhető csatornák száma.
  • cConnections: DWORD – Forráscsatornák esetében mindig 0. Célcsatornáknál a kapcsolódó források számát adja meg.
  • cControls: DWORD – A csatornához kapcsolt vezérlők számát adja meg.
  • szShortName: array[0..MIXER_SHORT_NAME_CHARS - 1] of AnsiChar – A csatorna rövid neve.
  • szName: array[0..MIXER_LONG_NAME_CHARS - 1] of AnsiChar – A csatorna teljes neve.
A MIXERLINE struktúrán belül található egy alstruktúra, Target néven. Ez a struktúra a csatornához kapcsolt média eszközről szolgáltat adatokat. Az alábbiakban ennek a struktúrának a tagjait részletezzük.
  • dwType: DWORD – Az eszköz típusa. Értékei a következők lehetnek: MIXERLINE_TARGETTYPE_AUX, MIXERLINE_TARGETTYPE_MIDIIN, MIXERLINE_TARGETTYPE_MIDIOUT, MIXERLINE_TARGETTYPE_UNDEFINED, MIXERLINE_TARGETTYPE_WAVEIN, MIXERLINE_TARGETTYPE_WAVEOUT.
  • dwDeviceID: DWORD – Az eszköz azonosítója.
  • wMid: WORD – Gyártó azonosítója.
  • wPid: WORD – A termék azonosítója.
  • vDriverVersion: MMVERSION – Az eszköz meghajtójának verziója.
  • szPname: array[0..MAXPNAMELEN - 1] of AnsiChar – Az eszköz neve.

Cikksorozat

#IDKategóriaCikk címeSorozat
3643DelphiFormEditor1. rész
3689DelphiProject és modul információk2. rész
3719DelphiMegnyitás, mentés3. rész
3749DelphiKódszerkesztő4. rész
3778DelphiForráskód írása, olvasása5. rész
3809DelphiInterfész a kódszerkesztő ablakhoz6. rész
3839DelphiKijelölt blokkok7. rész
3869DelphiA buffer beállításai8. rész
3899DelphiKörnyezeti és Project opciók9. rész
3929DelphiKurzor a kódszerkesztőben10. rész
3959DelphiKeresés és csere beállításai11. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 335. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |