Wziąłem sie za pisanie pewnego programiku w którym miedzy innymi muszę odgrywać wavy określoną liczbę razy. Zacząłem się przeto wgryzać w BASSa i ze zdziwieniem zauważyłem, że nie pozwala on na to. Podobnie jak w banalnym PlaySound, można albo odegrać raz, albo odgrywać w kółko - czyli potencjalnie nieskończoną liczbę razy.
No to napisałem funkcję, która tworzy wava składającego się z zadanej liczby powtórzeń wava źródłowego. Wav wynikowy może lądować w pamięci lub na dysku, dodatkowo zwracana jest informacja o formacie dźwięku.
Niejako z konieczności wyszła mi dodatkowa funkcjonalność. Format wave poza istotnymi składnikami (format dźwięku i sam dźwięk) może zawierać kupę innych informacji - teksty, cue points itd, które do zrobienia powtórzeń tylko przeszkadzają. Wynikowy wav jest więc pozbawiony takich dodatkowych danych, innymi słowy, sprowadzony do postaci kanonicznej<font color="red">*</span>. To się może komuś przydać, bo niektóre zwłaszcza starsze lub prymitywniejsze programy (np. niektóre moje :-P ) czytają tylko postać kanoniczną. Podobno niektóre CD-burnery potrafią się wyłożyć na dodatkowych danych. A za konwerterek pewien autor chce $25... http://www.lightlink.com/tjweber/StripWav/StripWav.html :-)
Proszę więc uprzejmie o przetestowanie tej funkcji, w razie wykrycia bugów chętnie zobaczę nie tylko opis, ale i problematycznego wava.
Przemogłem własne lenistwo i skomentowałem porządnie tę funkcję. Przed testem proszę więc łaskawie zapoznać się z komentarzem - zawiera istotne informacje co do sposobu uruchamiania i ograniczeń.
Gdyby ktoś chciał wykorzystać tę funkcję w swoim programie, to zaprszam, ale tylko niekomercyjnie i bez jakichkolwiek gwarancji z mojej strony :-).
No to już tylko link: http://pq.royy.net/WavProcs.pas
<font color="red">* w pewnych szczególnych wypadkach postępowanie takie może spowodować zgubienie dźwięków, np. gdy w wavie zaszyta jest lista aiffów. Ale takimi chorymi sytuacjami nie mam zamiaru się zajmować :-P</span>