[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]

[Burichan] [Foliant] [Futaba] [Greenhell] [Gurochan] [Photon] - [Home] [Manage] [Archive]

[Return]
Posting mode: Reply
Leave these fields empty (spam trap):
Name
Link
Subject
Comment
File
Verification
Password (for post and file deletion)
  • Supported file types are: GIF, JPG, PDF, PNG
  • Maximum file size allowed is 20480 KB.
  • Images greater than 200x200 pixels will be thumbnailed.

File: 1387777649639.jpg -(184903 B, 900x598) Thumbnail displayed, click image for full size.
184903 No.100550  

новерьки, спрошу у вас

разбираю 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
там же подробности касаемо того, зачем мне это надо. здесь об этом писать немного стыдно, но это факт.

>> No.100551  

>>100550

>мне надо в реалтайме рисовать графики

Matplotlib

>но мне кажется что это оверкилл

Нет

> посоветуй чего-нибудь?

http://linil.wordpress.com/2008/09/16/cairoplot-11/
http://mathgl.sourceforge.net/doc_en/Main.html
Ещё можешь написать сам на pyopengl или хоть на turtle, но зачем?

>> No.100552  
>sample = ord(c_sample)

sample = int(c_sample)

>> No.100553  
File: 1387779191887.jpg -(418425 B, 1150x950) Thumbnail displayed, click image for full size.
418425

>>100550

> как только я снимаю mute и у меня начинает валить минимальный фоновый шум, поток нулей перемешивается с потоком 255. а если происходит клиппинг, то мы имеем поток примерно пополам состоящий из 127 и 255. как так может быть и что мне делать?

255 для беззнакового однобайтового числа эквивалентно -1, т.е. на практике ты скорее всего получаешь нули и -1 при тишине и 127 и -1 когда дуешь в микрофон.

> а вообще я делаю аппаратный ГСЧ

Его кстати встраивают в процессоры начиная с ivy bridge (инструкция rdrand).

> но мне кажется что это оверкилл. посоветуй чего-нибудь?

Может рисовать напрямую графическими примитивами будет проще?

>> No.100554  

>>100553

>255 для беззнакового однобайтового числа эквивалентно -1

Ты так сформулировал, что кажется бредом, если не догадываться, что ты хотел сказать

>> No.100555  
File: 1387780068119.jpg -(510947 B, 1000x1000) Thumbnail displayed, click image for full size.
510947

>>100554
Увы, не знаю как сформулировать понятней (uint8_t)255==(int8_t)-1

>> No.100556  
File: 1387785899591.jpg -(180850 B, 638x1000) Thumbnail displayed, click image for full size.
180850

>>100551

>http://linil.wordpress.com/2008/09/16/cairoplot-11/
>http://mathgl.sourceforge.net/doc_en/Main.html

но в описании не слова на предмет обновления, реалтайма или скроллинга. может этого нет? а надо

>>100552

>sample = int(c_sample)

ага, а теперь попробуй скорми ей букву

>>100553

>на практике ты скорее всего получаешь нули и -1 при тишине и 127 и -1 когда дуешь в микрофон.

минуточку, когда я дую в микрофон я в таком случае должен получать преимущественно 127 и 128, нулей и всего что к ним близко там должно быть мало. это же двухполярный сигнал.

>Его кстати встраивают в процессоры начиная с ivy bridge (инструкция rdrand).

это они хорошо делают, когда-нибудь я его куплю по объявке

>Может рисовать напрямую графическими примитивами будет проще?

по крайней мере интереснее, но нет в линуксе никакого "напрямую". скажи мне название API и я пойму о чем ты

>(uint8_t)255==(int8_t)-1

а это из какого языка?

но в целом я согласен, я тоже так считаю, но это не сходится с тем, что я наблюдаю при клиппинге. и это все портит.

я подозреваю, что я неправильно как-то делаю преобразование типов. как сделать правильно?

>> No.100557  
File: 1387787752733.jpg -(2469752 B, 1920x1440) Thumbnail displayed, click image for full size.
2469752

>>100556

> минуточку, когда я дую в микрофон я в таком случае должен получать преимущественно 127 и 128

Это если там в аналоговом контуре звуковухи перед ацп не стоит что-то вроде диода, который срезает обратную полуволну.

> по крайней мере интереснее, но нет в линуксе никакого "напрямую". скажи мне название API и я пойму о чем ты

http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/graphics.html

> а это из какого языка?

C

>> No.100601  
File: 1387899429230.jpg -(491104 B, 1280x960) Thumbnail displayed, click image for full size.
491104

>>100557

>Это если там в аналоговом контуре звуковухи перед ацп не стоит что-то вроде диода, который срезает обратную полуволну.

уверяю тебя, так быть не может. это был бы дисторшн 89 левела, а микрофон работает отлично.

>http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/graphics.html

вау! круто. а можно в таком же стиле работать на сишке? точнее я понимаю что можно, вопрос - как? вот так же просто, чтобы ничего лишнего.

и как быть с обновлением графика? я так понимаю что надо просто рисовать его и когда кончается место - очищать экран и рисовать заново?

я так понимаю, что скроллинг штука недешевая и подразумевает аппаратное ускорение?

вопрос как по сишке, так и и по питону. дело в том, что есть мысль переписать это все на сишке пока не поздно, чтобы производительность не страдала ну и вообще для фэншуя. тем более что насколько я помню, в сишке у меня байтики не портились, я уже работал с альсой на чистом си - там все просто довольно.

>> No.100605  
File: 1387903069570.jpg -(187572 B, 1024x1024) Thumbnail displayed, click image for full size.
187572

>>100601

> это был бы дисторшн 89 левела, а микрофон работает отлично.

Попробуй все-таки проверить каким-нибудь audacity наличие обратной полуволны.

> вау! круто. а можно в таком же стиле работать на сишке? точнее я понимаю что можно, вопрос - как? вот так же просто, чтобы ничего лишнего.

На сишке есть несколько разных либ для работы с графикой, например xlib и sdl.

> я так понимаю, что скроллинг штука недешевая и подразумевает аппаратное ускорение?

Довольно дешевая, копируешь прямоугольный фрагмент и рисуешь его несколько смещенным. Даже без аппаратного ускорения работает быстро.



Delete Post []
Password

[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]