Skocz do zawartości

[Delphi] Zaawansowane nagrywanie dźwięku


Lukas

Polecane posty

Witam serdecznie wszystkich,

 

interesuje mnie zaawansowane nagrywanie dźwięku w sposób, by mieć kontrole nad buforem (móc go modyfikować) w czasie rzeczywistym. Dodam, że korzystałem z pakietu DSPack, w którym jest możliwość dostępu do bufora w czasie rzeczywistym, ale według moich doświadczeń nie można go w danej chwili modyfikować. Również DSPack niekiedy się troszkę sypie przy tego typu operacjach (np. niemożność odczytania prawdziwego rozmiaru strumienia będącego buforem podczas działań na nim [może nie tyle niemożność co jego nieprawidłowy rozmiar]). Interesują mnie rozwiązania w czystym API, w DirectX (mam przetłumaczone nagłówki) lub komponenty (o ile takie istnieją).

Z góry dziękuję wszystkim za pomoc, będę wdzięczny za jakiekolwiek odpowiedzi.

 

Łukasz.

 

=================== ZNALAZŁEM ODPOWIEDNIĄ BIBLIOTEKĘ ===================

Wszystkich zainteresowanych tematem odsyłam do strony http://www.un4seen.com/ na której znajduje się biblioteka DLL o nazwie BASS, wraz z przetłumaczonymi nagłówkami dla Delphi (tak więc normalna w użyciu, nie trzeba ręcznie wyławiać funkcji z biblioteki DLL). Ma ona ogromne możliwości, jest bardziej dopracowana niż część audio paczki DSPack (nie występują w niej podobne problemy), jest szybsza, łatwiejsza w obsłudze, bezpłatna do niekomercyjnych zastosowań. Dodatkowo dołączony przykład o nazwie RecordTest pokazuje jak można nagrywać za pomocą BASS.

Udało mi się za jej pomocą zmodyfikować bufor w czasie rzeczywistym (dla chętnych podaje przykład zmienionej procedury "RecordingCallback" znajdującej się w przykładzie RecordTest, która modyfikuje nagrywany dźwięk w czasie rzeczywistym):

 

function RecordingCallback(Handle: HRECORD; buffer: Pointer;[
NX[[H[Y&&ść'FSŚ&VvGfś6Ś'Vf&f\"ŁÓFąŃź((AŃĄ%ŃĄ;
   // Teraz zmienna probka^ stanowi pojedynczą próbkę któŹH[[^HYH[YZyWHW][0śćV2Gfś6Ś'Vf&śVŚR'Vf\"ŚVćźŃźńŹĄ]MŃam)
 Form1.WaveStream.Write(buffer^, length);

 // Allow YX[[YB[HYN[

Link do komentarza
Udostępnij na innych stronach

  • 5 years later...

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...