Witam. Właśnie chciałem napisać program do odtwarzania dźwięku typu wave. Strukturę tego formatu już znam oraz umiem odczytywać dane z plików, generować własne i modyfikować już istniejące pliki tego formatu, chociaż będę miał potem jedno pytanie odnośnie jego struktury. Co prawda na forum poruszonych zostało wiele wątków na temat tworzenia programu do odtwarzania plików wav, jednakże nie znalazłem wskazówki dla swojego problemu (a jeśli takowa już istnieje, to być może dlatego, że wątki te przeglądałem przekrojowo i szybko, za co ewentualnie przepraszam :P i proszę wówczas jedynie o przekierowanie mnie do niej jakimś linkiem). Mianowicie chodzi o napisanie odtwarzacza, w którym mógłbym sterować aktualnym położeniem w czasie trwania odtwarzania, a także regulować szybkość i kierunek odtwarzania. W tym celu potrzebuję zdefiniować funkcję play jako pewną pętlę, w której odtwarzana jest pojedyncza próbka, po czym stosuje się odpowiednie opóźnienie, zależne od częstotliwości próbkowania i szybkości odtwarzania. Miałaby ona wyglądać mniej więcej tak:
while( /* nie osiągnięto jeszcze końca danych */ ) {
// czytaj próbkę
// odtwórz próbkę
// zaczekaj odpowiednią porcję czasu
}
lub:
for(t = 0; t < ilosc_probek; t++) {
// odtwórz próbkę o indeksie t
// zaczekaj odpowiednią porcję czasu
}
Jeśli chodzi o strukturę plików typu wave, to utworzyłem sobie kiedyś pusty plik wav za pomocą rejestratora dźwięku w windows xp i przeanalizowałem jego strukturę. Znalazłem w niej coś, o czym nie udało mi się znaleźć w Internecie, mianowicie tzw. fact chunk. Czy ktoś wie, co on może oznaczać? I ostatnie pytanie: w pewnej chwili zacząłem się zastanawiać, jaką wielkość fizyczną reprezentuje wartość próbki. W Internecie znalazłem odpowiedź, że jest to porcja danych składająca się na wartość natężenia sygnału (jeszcze nie dźwięku). A czy nie jest to jednocześnie po prostu amplituda drgań? Bo jeśli chcę wygenerować np. ton prosty sinusoidalny, to generuje próbki, których wartości układają się w sinusoidę, czyli właśnie kształt drgań.
Z góry dziękuję za pomoc. :)
Pozdrawiam. :)