VU meter - mam kod, ale o co chodzi dokładniej?

0

Witam.
Tu mam linka:
http://glkake.free.fr/projects/soundprogram/

I teraz ja chce wyodrębnić ten kawałek kodu gdzie jest VUmeter tylko to co pobiera i przenieść na diodki podłączone do LPT.

Czyli tylko chce pobrac sygnał VU metera...

Jeżeli ktoś się zna i może mi wytłumaczyć jak to dokładnie działa i gdzie jestrten kawałek kodu to będę wdzięczny.

0

I teraz ja chce wyodrębnić ten kawałek kodu gdzie jest VUmeter tylko to co pobiera [...]

Klasa

CSoundRecorder

, a dokładniej funkcja CSoundRecorder::OnDataRecord



> Jeżeli ktoś się zna i może mi wytłumaczyć jak to dokładnie działa i gdzie jestrten kawałek kodu to będę wdzięczny.

http://4programmers.net/article.php?id=582
0

Nie wychodzi mi jakoś, bo chyba bym musiał te wszystkie pliki co są dołączone przenosić. Ale spójrz tu jest prostrzy program i nie ma tam tych funkcji co wskazałęś...
http://glkake.free.fr/projects/soundcap/index.html

0
miik napisał(a)

Nie wychodzi mi jakoś, bo chyba bym musiał te wszystkie pliki co są dołączone przenosić.

Raczej przerobić klasę

CSoundRecorder

i będą dwa pliki ;)

Ale spójrz tu jest prostrzy program i nie ma tam tych funkcji co wskazałęś...
http://glkake.free.fr/projects/soundcap/index.html

Ta sama historia :/. A tak w ogóle to napisz wszystko od początku sam i będzie git. (przykłady masz więc...) ;)

0

Ale która zmienna posiada informacje o stanie buffora czy co ja mam pobrać do VUmetera? Bo to jest strasznie porozrzucane po różnych plikach projektu a ja staram się zrozumieć ale chyba sam sobie nie dam rady :(

Chociaż troche rozumiem i umiem oddzielić WinAPI i inne funkcje ale jeszcze dużo rzeczy nie czaje...

0
miik napisał(a)

Ale która zmienna posiada informacje o stanie buffora czy co ja mam pobrać do VUmetera? Bo to jest strasznie porozrzucane po różnych plikach projektu a ja staram się zrozumieć ale chyba sam sobie nie dam rady :(

Bez przesady, nie jest aż tak porozrzucane ;) Z resztą, nie wiem o których plikach mówisz.

Chociaż troche rozumiem i umiem oddzielić WinAPI i inne funkcje ale jeszcze dużo rzeczy nie czaje...

To dobrze, że umiesz oddzielić WinAPI od reszty ale jeszcze przydałaby się umiejętność czytania/szukania plików pomocy ;) Tu masz linki z odpowiedzią na pytanie:

WAVEHDR
WIM_DATA

i tak ogólnie w temacie: Waveform Audio Reference

0

A możesz dac przykład? Jak te struktury wypełnić? I co pobrać? Bo ja przedstawić graficznie sobie poradze, tylko potrzebuje uchwyt tego co mierzy dźwięk. Staram się coś wymyśleć, ale nie wszystko rozumiem, lepiej jak by było po polsku :-|

0
miik napisał(a)

A możesz dac przykład? Jak te struktury wypełnić? I co pobrać? Bo ja przedstawić graficznie sobie poradze, tylko potrzebuje uchwyt tego co mierzy dźwięk.

A co ty chcesz tam wypełniać?? (zakładam, że chcesz wykorzystać kody, które podałeś).

Po tym jak driver audio wypełni buffer (

WAVEHDR

) samplami, wyśle do aplikacji komunikat WIM_DATA. W komunikacie tym zawarty jest uchwyt do otwartego urządzenia audio i wskaźnik do bufora z nagranymi samplami (patrz CSoundRecorder::ThreadProc

). Teraz jak już masz wskaźnik do bufora to możesz <u>odczytać</u> sample:

```cpp
lpHdr->dwBytesRecorded

<--- liczba bajtów zapisanych do bufora (może być mniejsza niż lpHdr->dwBufferLength

)
```cpp
lpHdr->lpData
      <--- wskaźnik do bufora (tego właściwego ;)) z nagranymi samplami

Oczywiście, liczba zapisanych bajtów nie jest równoznaczna z liczbą sampli - tą musisz sobie obliczyć na podstawie formatu, który podałeś funkcji

waveInOpen

(patrz CSoundRecorder::CSoundRecorder

 i <code class="cpp">CSoundRecorder::OnStartRecord

). Czyli:

DWORD dwSamplesRecorded=lpHdr->dwBytesRecorded/m_WaveFormatEx.nBlockAlign;

Aha. Jak skończysz z buforem to kolejkujesz go znowu funkcją

waveInAddBuffer

.

Staram się coś wymyśleć, ale nie wszystko rozumiem, lepiej jak by było po polsku :-|

No przecież podałem ci link gdzie jest to wszystko (w miarę) opisane i po polsku :-|

0

Dzięki, że odpisałeś :)
Ten VUmeter ma działać jak np. odpale winampa i włącze mp3 to mi skacze VUmeter jeżeli chodzi o przerzucenie na LPT tak żeby osiem diodek skakało w rytm muzy to z tym sobie poradze, ale teraz tak:

Mam tą strukture WAVEHDR i teraz muszę ja jakoś zadeklarować o ile dobrze rozumiem czyli tak:

LPWAVEHDR lpHdr = (LPWAVEHDR) lParam;

Co to jest lParam? Woglę co ja mam z tą sruktrą zrobić.

Czytałem ten artykół kilka razy już zanim go podałeś mi to chyba 2 miesiące temu czytałem. Rozumiem mniej więcej ale nie dokońca. Jak się wcześniej [ytałem na forum to mi ktoś powiedziała że mam się pogawić z funkcją waveInOpen. Chcę tylko dodać żę pisze w Visualu C++ 6.0, a w tamtym artykóle jest struktóra pod borlanda. Najlepiej chyba jak zagadasz do mnie na gg bo ja nie wiem jaki numer masz. Oczywiście jak masz czas...bo ja bardzo się chce tego nauczyć i zrozumieć...i staram się sam coś zrobić, ale jak sam widzisz jeszcze nie rozumiem teog do końca :(

0

Co to jest lParam

No wybacz. Masz kody źródłowe, a w nich odpowiedź. Wystarczy tylko do nich zajrzeć i przeanalizować je.

Woglę co ja mam z tą sruktrą zrobić

Ze strukturą to może nic... raczej z zawartością bufora ;)

Chcę tylko dodać żę pisze w Visualu C++ 6.0, a w tamtym artykóle jest struktóra pod borlanda

Struktura

WAVEHDR

jest częścią WinAPI, a nie czymś specyficznym dla IDE Borland'a.

[...] Rozumiem mniej więcej ale nie dokońca [...]bo ja bardzo się chce tego nauczyć i zrozumieć...i staram się sam coś zrobić, ale jak sam widzisz jeszcze nie rozumiem teog do końca

A ja widzę to tak: masz plan, wiesz (chyba) jakich funkcji użyć tylko nie wiesz z czym masz do czynienia - brakuje podstawowej wiedzy na temat programowania dźwięku. Sądze, że szukanie takiej wiedzy na forum jest błędem. Od tego są książki tudzież dobrze opracowane strony www (99,9% po angielsku). Bo co z tego, że powiem ci od czego jest ten

lParam

jak i tak nie będziesz wiedział jak zinterpretować dane zawarte w buforze. Jeżeli faktycznie chcesz nauczyć się programowania audio, zacznij od zdobycia podstawowej wiedzy w tej dziedzinie. Inaczej się nie da ;)

No... to chyba tyle w temacie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1