новерьки, спрошу у вас
разбираю pcm-поток в питоне и есть вопрос по части соответствия числовых значений и физических амплитуд
использую вот эту либу http://pyalsaaudio.sourceforge.net/libalsaaudio.html
беру данные с ALSA. вообще-то сначала хотел забирать с джека для унификации, но как-то сходу не нашлось либы и я поленился искать дальше.
собственно вопрос
l, block = inp.read()
выстреливает нам в block строку данных с сырым потоком в формате указанном при инициализации объекта inp
я выбрал формат PCM_FORMAT_S8, но с U8 небыло замечено вообще никакой разницы.
полученный блок я разбираю в цикле вот так, и тут же преобразую символы в int
for c_sample in block2:
sample = ord(c_sample)
как только я снимаю mute и у меня начинает валить минимальный фоновый шум, поток нулей перемешивается с потоком 255. а если происходит клиппинг, то мы имеем поток примерно пополам состоящий из 127 и 255. как так может быть и что мне делать?
да, я печатаю звук прямо в консольку, а как быть?
а вообще я делаю аппаратный ГСЧ. аналоговая часть уже сделана, теперь я пытаюсь заинтерфейсить его с питоном через звуковуху.
а еще мне надо в реалтайме рисовать графики, которые будут скроллиться в процессе разбора данных с ГСЧ. сейчас я пытаюсь делать это с помощью matplotlib, но мне кажется что это оверкилл. посоветуй чего-нибудь? желательно с примерами
кстати не обязательно питон, я бы может быть и на сишке это сделал. весь вопрос в либах и в наличии примеров. я не знаю не одного графического тулкита и не уверен что мне это надо. я хочу просто окошко в котором я смогу рисовать точки как на спектруме - функцией с двумя параметрами. даже скроллинг опционален, буду рисовать слева направо и потом обновлять, как вариант.
вот тред на хаосаче, там рак и все разводят руками
http://chaos.fm/b/res/15659.html
там же подробности касаемо того, зачем мне это надо. здесь об этом писать немного стыдно, но это факт.