Velkost hlasitosti mic – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Velkost hlasitosti mic – C / C++ – Fórum – Programujte.comVelkost hlasitosti mic – C / C++ – Fórum – Programujte.com

 

NeviemNic0
Newbie
27. 10. 2009   #1
-
0
-

caute.
potreboval by som zistit velkost signalu z mikrofonu, asi je to line in vstup do zvukovej karty. upresnim:
zapichnem do pc mikrofon, nieco do neho kecnem a ja chcem vediet aky je ten signal velky. nepotrebujem vediet ze mi to bude treba vzorkovat napriklad s periodov 50ms, to mam vsetko spravene. ja len uz tyzden hladam a skusam, ako sa dopracovat k tej hodnote. z codeproject som pozrel hadam 20 podobnych programov, ale ani jeden nerobi co potrebujem. napr.:
http://www.codeproject.com/KB/winsdk/SoundRecord.aspx
http://www.codeguru.com/cpp/g-m/multimedia/article.php/c1575/
(mimochodom ten druhy odkaz, tak to ani nefunguje)
trochu sa to podoba, ale vobec to nie je co potrebujem :-). pouzival som nato funkcie mixer s roznymi parametrami, neviem ci sa to sem zmesti, dam tu jednu variantu. pozeral som celu dokumentaciu SDL_mixer, OpenAL, ani tam nic podobne, alebo som mental, preto som uz donuteny sa opytat. dx som pozrel len tak zbezne, pretoze robim s opengl, tak zasadne odmietam dsound, ale ak by mi vedel niekto poradit aj pomocou dx, aj tak budem velmi rad!



bool ZistiHlasitost() {
UINT pocet;
HMIXER hMixer;
MIXERCAPS mCaps;
memset(&mCaps, 0, sizeof(mCaps));
if ((pocet = waveInGetNumDevs()) == 0) {
return false;
}
if (mixerOpen(&hMixer, 0, 0, 0, MIXER_OBJECTF_WAVEIN) != MMSYSERR_NOERROR)
return false;
if (mixerGetDevCaps((UINT)hMixer, &mCaps, sizeof(mCaps)) != MMSYSERR_NOERROR)
return false;
MIXERLINE mxLine;
MIXERCONTROL mxControl;
MIXERLINECONTROLS mxLiCo;
// cast mixer line
mxLine.cbStruct = sizeof(MIXERLINE);
mxLine.dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
if (mixerGetLineInfo((HMIXEROBJ)hMixer, &mxLine,
MIXER_GETLINEINFOF_COMPONENTTYPE | MIXER_OBJECTF_MIXER) != MMSYSERR_NOERROR)
return false;
// cast mixer line control
mxLiCo.cbStruct = sizeof(MIXERLINECONTROLS);
mxLiCo.dwLineID = mxLine.dwLineID;
mxLiCo.dwControlType = MIXERCONTROL_CONTROLTYPE_PEAKMETER;
mxLiCo.cControls = 1;
mxLiCo.cbmxctrl = sizeof(MIXERCONTROL);
mxLiCo.pamxctrl = & mxControl;
if (mixerGetLineControls((HMIXEROBJ)hMixer, &mxLiCo,
MIXER_GETLINECONTROLSF_ONEBYTYPE | MIXER_OBJECTF_HMIXER) != MMSYSERR_NOERROR)
return false;
// zbieranie dat
CString nazov = mxControl.szName;
long minHod = mxControl.Bounds.dwMinimum;
long maxHod = mxControl.Bounds.dwMaximum;

MIXERCONTROLDETAILS mxDetail;
MIXERCONTROLDETAILS_SIGNED volMic;
mxDetail.cbStruct = sizeof(MIXERCONTROLDETAILS);
mxDetail.dwControlID = mxControl.dwControlID;
mxDetail.cChannels = mxLine.cChannels;
mxDetail.cMultipleItems = 0;
mxDetail.cbDetails = sizeof(MIXERCONTROLDETAILS_SIGNED);
mxDetail.paDetails = &volMic;
if (mixerGetControlDetails((HMIXEROBJ)hMixer, &mxDetail,
MIXER_GETCONTROLDETAILSF_VALUE | MIXER_OBJECTF_HMIXER) != MMSYSERR_NOERROR)
return false;
nazov.Format(L"nazov: %s\npocet: %d\nmax: %d\nmin: %d\nhodnota: %d",
mxControl.szName, pocet, maxHod, minHod, volMic.lValue);
MessageBox(0, nazov.GetBuffer(), L"mixer", MB_ICONINFORMATION);
mixerClose(hMixer);
return true;
}


v tom kode je viac zbytocnych veci, to som mal na kontrolu ci to vobec pojde, ale bohuzial.
tak keby ma niekto vedel nakopnut spravnym smerom ;-)

Nahlásit jako SPAM
IP: 91.127.69.–
dannyk0
Věrný člen
27. 10. 2009   #2
-
0
-

Osobne bych radil zkusit FMOD nebo BASS knihovny, protoze psat to v tomhle je o nervy a zminene knihovny maji spoustu veci krasne vyresenych a hlavne se v tom celkove lepe pise a maji poradnou dokumentaci.

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
NeviemNic0
Newbie
29. 10. 2009   #3
-
0
-

dannyk napsal:
Osobne bych radil zkusit FMOD nebo BASS knihovny, protoze psat to v tomhle je o nervy a zminene knihovny maji spoustu veci krasne vyresenych a hlavne se v tom celkove lepe pise a maji poradnou dokumentaci.



parada, dik za radu, naozaj je to hodne ale hodne jednoduchsie a presne ako si povedal dobre zdokumentovane. konkretne som si vybral BASS, ta sa mi zda fakt skvela. je zaujimave, ze som na nu este nenarazil, tak este raz dakujem za radu.

Nahlásit jako SPAM
IP: 95.102.19.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 75 hostů

Podobná vlákna

Normalizace hlasitosti mp3 — založil x-time

MovieClip velkost — založil dalaman

Veľkosť stránky — založil 7raul

Nekonecna velkost — založil Tayson

Velkost pola — založil amd64

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý