Zsamplować /dev/urandom Michał Moroz
Chyba każdy, kto zajmował się Linuksem przez pewien okres czasu zna jedno z nietypowych sposobów wykorzystania generatora pseudolosowego /dev/urandom do wytwarzania białego szumu.
Dla przypomnienia - kod najczęściej wygląda tak:
cat /dev/urandom > /dev/dsp
W moim przypadku wynikła jednak nieco inna potrzeba - potrzebowałem plik wave z zapisem tego szumu, miast słuchania go w wolnej chwili.
Jakoś nie widziało mi się bawienie się w czytanie specyfikacji formatu wave i ręczne wpisywanie nagłówków do pliku. Nie, jeśli chodzi tylko o chwilę rozrywki. Tak więc potrzebowałem prostego sposobu, który nie będzie sprawiać dużo kłopotu.
Z pomocą przyszło Google i Python. Okazuje się, że w pliku README biblioteki pyao opisano krok po kroku, jak to zrobić.
Wystarczy urpmi pyao (w innych dystrybucjach, niż Mandriva możliwe, że konieczna będzie ręczna instalacja pakietu - jednak w wypadku Pythona proces ten jest jeszcze łatwiejszy, niż w paczkach stworzonych przy pomocy autotools) i już możemy zgrywać szum do pliku.
Uruchamiamy shell Pythona i wpisujemy:
>>> import ao
>>> dev = ao.AudioDevice('wav', filename = 'myoutput.wav')
>>> f = open('/dev/urandom', 'r')
>>> data = f.read(1024*1024*8)
>>> dev.play(data)
Zamykamy shella.
8MiB to około 48 sekund szumu. Można się domyśleć, że i rozmiar pliku będzie niewiele większy.