Zsamplować /dev/urandom

Ten wpis jest częścią mojego starego bloga, prowadzonego w latach 2005-2007 pod adresem dragonee.jogger.pl. Został on zachowany w celach archiwizacyjnych i niekoniecznie reprezentuje moje bieżące stanowisko na dany temat.

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.

2 komentarze
  1. 8 lutego, 2006
  2. 8 lutego, 2006

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *