Обсуждаем цифровые устройства...
Ответить

Zwuki na assemblere

Чт фев 09, 2006 20:26:29

Wot, zahotel zdelat na mikrokontrollere igrushku s netriwialnymi
zwukowymi effektami.

Pytalsya programmirowat, podbirat, no za chas u menya ne
poluchilosx dazhe "DZH" - zwuka iz tetrisa.

Poluchaetsya pishat. Esli postaratxsya, to s kosmicheskim aktsentom.

Ni u kogo net zagotowok na assemblere razumnyh zwukow?

W Internete ya ne nashel nichego pohozhego,
mozhet kto gde-to widel?

A predelom mechtanij bylo by zagotowki dlya sinteza rechi.

Чт фев 09, 2006 20:57:30

А ты как генеришь звуки? Я так понимаю, чтоб сделать какой-либо более-менее приличный звук, надо смешивать несколько частот

Пт фев 10, 2006 00:01:10

Tolko chto
Napisal programmu, kotoraya tsiklicheski wywodit na port logicheskie nuli i edinitsy. Iz massiva.
Esli w sootwetstwuyushem meste napisat
.DB 2,4,5,1
, Budet tsiklicheski wywodit

001111000001

Pytalsya podbirat massiwy.

Udalosx dobitsya effekta edushego traktora, tanka,wertoleta.

A wot Zwuk wzrywa tipa Tdzh-dzh-dzh nikak ne poluchaetsya. A nado dumatx skazem w tetrise oni zhe wywodqtsya imenno tak?

Пт фев 10, 2006 00:54:11

A bywayut deshewye avr - kontrollery, u kotoryh mozhno tsifrofoj signal preobrazowywat w analogowyj? :evil:

Пт фев 10, 2006 00:56:08

ЦАП можно навертеть на резистивной матрице. Кроме того, чуть ли не все АВРки поддерживают аппаратный ШИМ. Можно модулировать сигнал ШИМом, на выходе ставить фильтр - получится аналог 8)

Пт фев 10, 2006 14:10:28

Резистивная матрица -
контроллер подает напряжение на динамик через разные резисторы?

А что такое ШИМ?

То что в даташите зовется mutiplexer?

Пт фев 10, 2006 15:00:57

Даташит на какую микросхему? Multiplexer - это мультиплексор, как ни странно :)))
ШИМ - широтно-импульсная модуляция. то есть, при неизменной частоте меняется длительность импульсов, за счет чего изменяется действующее напряжение в сигнале. Проинтегрированный ШИМ дает аналоговый сигнал, эквивалентный (пропорциональный - Р.) длине импульсов

Пт фев 10, 2006 15:23:46

ksp4, мож те лучше надыбать сэмплов разных и загнать в МК? дешево и сердито :)
звук - это несущая частота + гармоники и обертоны. Шум - это частотнораспределенный сигнал, есть белый, розовый шум. А как ты собираешься синтезировать звук, состоящий из 5-7 основых сигналов с гармониками и пары десятков обертонов - я не знаю.

Пт фев 10, 2006 15:24:42

ksp4 писал(а):А что такое ШИМ?
То что в даташите зовется mutiplexer?

Нет, в даташите ШИМ зовется PWM - Pulse Width Modulation.

Пт фев 10, 2006 17:39:29

Насчет ШИМа можно посмотреть вот тут:
http://www.radiokot.ru/start/audio/amplifiers/03/

Сб фев 11, 2006 01:21:48

Ржавый электронщик, а в каком виде сэмлы лучше использовать для звуковых эффектов на контроллере?

I gde ih wzyat?

W internete oni dopustim w wide WAV. Wot ya ego beru i chto delayu?
Perekodiruyu w posledowatelnostx nulej i edinits, wywodimyh na dinamik?

Pytalsya tak delat s rechyu --- sowsem otwratitelno poluchaetsya.
Dazhe sdelal, pripayaw 4 rezistora, 4-bit ЦАП, sokrashal rech do 4 bit -
wse rawno otwratitelno.

Wot kitajskie kukly goworyat "mama". Eto wed mikrokontroller generiruet
nuli i edinitsy?

A mozhet u kogo-to estx bolee udobnyj dlya ispolzowaniya mikrokontrollera
semply - tipa kuskow koda na assemblere?

Сб фев 11, 2006 01:24:01

Tak nikto ne pytalsya nauchit mikrokontroller goworit chelowecheskim yazykom?

Сб фев 11, 2006 10:50:16

Кароч, насчет разрешения звука: наиболее приличное качество начинается с 6 бит. Меньше - и не пробуй - плеваться будешь. Частота выборки - порядка 6...8 кГц. Ну будем считать - 6 (6144 - для круглости счета). Имеем: 6*6144 - 36864 бит/с = 4,5 кБайт/с. Память среднестатистического контроллера - 8 кБ - меньше 2 секунд. То есть - полюбому, на лицо - необходимость внешней памяти. Если религия позволяет - можно написать какой-нибудь простенький кодек. Но ресурсов он будет жрать много, а толку с него, боюсь, будет мало. Хотя можно попробовать :)

Итак, пошагово: че и как делаем:
1. Ужимаем ВАВ до параметров 6бит 6144 Гц. Ужатие до 6 бит подразумевает уменьшение дин. диапазона сигнала с 48 (8-бит) до 36 дБ. При этом, создастся вав-файл, состоящий из 8-битных семплов, два старших бита каждого семпла всегда будут равны 0.
2. Пишем софтульку, которая откусит от ВАВ-файла шапку и пожмакает семплы таким образом, что лишних нулей не станет. Получится куча-мала, которую ни один виндозный проигрыватель уже играть не станет. Да и не надо :)
3. Пишем вторую софтульку, которая переведет бинарный файл в шестнадцатеричное текстовое представление вида 0х00...0хFF. То есть, на ее выходе мы должны поиметь то, что будет вставлено в текст программы контроллера как массив.
4. Вставляем то что поимели в текст программы, пишем читатель массива и плеватель прочитанного в порт. Вешаем на копыта 6 резисторов, включаем, прошиваем, слушаем 8)

Сб фев 11, 2006 11:14:36

Serega писал(а):4. Вставляем то что поимели в текст программы, пишем читатель массива и плеватель прочитанного в порт. Вешаем на копыта 6 резисторов, включаем, прошиваем, слушаем 8)


Тогда лучше уж все же ШИМ пользовать, ибо ног меньше требуется, да и сильно хорошо резисторы согласовывать не надо.

Вт фев 14, 2006 14:16:45

A w 4-bitnom wariante i wprawdu, nichego razobrat nelzya.

6 rezistorow koe-kak rabotayut, mozho slowa dowolno horosho
razobratx wblizi,

a stoit otojti na 1 metr ot dinamika (melkij, ot plohogo dwuhkassetnika), tolko gromkoe kwakanie slyshno. Widimo eto swojstwo dinamika ne izluchat wysokie chastoty. (?)
Zdes mozhno chto-nibud pridumat?

A pro PWM: prochital statiyu na etom sajte, chto-to ponyal, no

W datasheet na mega88 napisano, chto chtoby ispolzowat sootwetstwuyushuyu nozhku kontrollera dlya wstroennoj
PWM, nuzhno (ili ne nuzhno? 8) )
ustanowit signalnye bity
PVOE i POV.
A po kakomu adresu ih mozhno iskatx, ya nikak ne smog najti. Raz 5 perechitywal.

Вс авг 03, 2008 18:14:38

3. Пишем вторую софтульку, которая переведет бинарный файл в шестнадцатеричное текстовое представление вида 0х00...0хFF. То есть, на ее выходе мы должны поиметь то, что будет вставлено в текст программы контроллера как массив.


Можно поподробней,где найти такую програмку, сам написать н7е могу? есть ли готовое решение? Очень нужна) Тоже идея научить говорить свою Мегу. Хочу чтобы называл температуру голосом.

Вс авг 03, 2008 22:54:09

Делал так.
Оцифровать (или переконвертировать) звуки в формат WAV PCM 8бит.
Переименовать в *.bin и с помощью Пони залить полученный файл в 24С512. Можно предварительно отрезать WAV-хедер (первые 35 байт) в любом HEX-редакторе.
Цепляем 24С512 к любому контроллеру, имеющему аппаратный I2C.
В цикле читаем данные из памяти (можно побайтно) и тут же гоним их на ЦАП. Я использовал R-2R цепочку.

Вс авг 03, 2008 23:15:10

ksp4 писал(а):Tak nikto ne pytalsya nauchit mikrokontroller goworit chelowecheskim yazykom?

Думаю это как раз для тебя...
http://pol-sem.narod.ru/polymuson/polymuson.htm

Пн авг 04, 2008 09:52:06

А вот если мне надо записать несколько сэмплов маленьких(например для каждой цифры) а потом уже смотря какое число проигрывать нужные сэмплы, как быть? Чтобы для числа 36 например проиграть сэмпл "3" а следом за ним "6". Ну а программку кто-нибудь подскажет для перевода?

Пн авг 04, 2008 13:58:01

У меня качество звука с ШИМ было очень плохим. Если трафег халявный, можете послушать чего у меня получилось http://depositfiles.com/files/6738932 (примерно 1,5 Мб). Там 2 файла, один оригинальный, другой с выхода ШИМ 22кГц по методу Roman Black http://www.romanblack.com/picsound.htm. В 128К память влазит примерно 53сек. звука. Запись делал на линейный вход звуковухи на 44кГц.
Ответить