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.