2010-02-04 29 views
6

Próbuję napisać program do losowego generowania muzyki w oparciu o prosty zestaw reguł. Chciałbym, żeby program mógł generować własne dźwięki, w przeciwieństwie do pliku z dźwiękiem dla każdej nuty. Czy ktoś wie prosty sposób na robienie tego? Byłoby miło (ale nie koniecznie), aby dźwięk był polityczny, i chciałbym znaleźć rozwiązanie dla Linuksa, używając C.Jak odtwarzać dźwięk w systemie Linux za pomocą C?

+0

Możesz spojrzeć na źródło http://en.wikipedia.org/wiki/SuperCollider – JasonTrue

Odpowiedz

0

Możesz spróbować znaleźć sekwencer C midi (taki jak MIDI Sequencer). Zajrzyj także do plików .au sformatowanych w formacie audio (np. Spójrz na specyfikacje dla nagłówków .au i formatu danych dźwiękowych). Nie będziesz mógł używać formatu .wav, ponieważ przed rozpoczęciem odtwarzania wymaga on podania długości w nagłówku.

5

Proponuję wypróbować bibliotekę PortAudio. Jest to szczupła wieloplatformowa biblioteka, która usuwa funkcje wyjścia audio.

Zawiera wiele małych przykładów. Jeden z nich gra pojedynczą falę sinusoidalną, gra się jednocześnie w jedną falę sinusoidalną. Ponieważ przykłady już zawierają 90% tego, czego potrzebujesz, dźwięk powinien być włączony i uruchomiony w mniej niż pół godziny.

Podpowiedź: Najlepsza dokumentacja PortAudio znajduje się w pliku nagłówkowym!

0

Here is an ALSA example który odtwarza czysty dźwięk fali sinusoidalnej. Przypadkowo, myślę, to również pokazuje, dlaczego nie chcesz tego zrobić bezpośrednio w bibliotece ALSA.

+0

Alsa wydaje się być dość nieporęczna w tej scenie, dziwnie uważam wersję OSS podobnej rzeczy o wiele bardziej zrozumiałą; jest tutaj "http://manuals.opensound.com/developer/singen.c.html". Jeśli jest jedna rzecz, której się nauczyłem, to jest to, że praca z dźwiękiem dla Linuksa jest trochę zagmatwana. –

Powiązane problemy