Zwuki na assemblere

Обсуждаем цифровые устройства...
ksp4
Открыл глаза
Сообщения: 52
Зарегистрирован: Чт фев 09, 2006 19:59:06
Откуда: Москва

Zwuki na assemblere

Сообщение ksp4 »

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.
Аватара пользователя
Serega
Говорящий с текстолитом
Сообщения: 1529
Зарегистрирован: Пн авг 22, 2005 21:02:22
Откуда: Питер

Сообщение Serega »

А ты как генеришь звуки? Я так понимаю, чтоб сделать какой-либо более-менее приличный звук, надо смешивать несколько частот
Лучше быть первым в деревне, чем вторым в Риме
ksp4
Открыл глаза
Сообщения: 52
Зарегистрирован: Чт фев 09, 2006 19:59:06
Откуда: Москва

Сообщение ksp4 »

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?
ksp4
Открыл глаза
Сообщения: 52
Зарегистрирован: Чт фев 09, 2006 19:59:06
Откуда: Москва

Сообщение ksp4 »

A bywayut deshewye avr - kontrollery, u kotoryh mozhno tsifrofoj signal preobrazowywat w analogowyj? :evil:
Аватара пользователя
Serega
Говорящий с текстолитом
Сообщения: 1529
Зарегистрирован: Пн авг 22, 2005 21:02:22
Откуда: Питер

Сообщение Serega »

ЦАП можно навертеть на резистивной матрице. Кроме того, чуть ли не все АВРки поддерживают аппаратный ШИМ. Можно модулировать сигнал ШИМом, на выходе ставить фильтр - получится аналог 8)
Лучше быть первым в деревне, чем вторым в Риме
ksp4
Открыл глаза
Сообщения: 52
Зарегистрирован: Чт фев 09, 2006 19:59:06
Откуда: Москва

Сообщение ksp4 »

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

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

То что в даташите зовется mutiplexer?
Аватара пользователя
Serega
Говорящий с текстолитом
Сообщения: 1529
Зарегистрирован: Пн авг 22, 2005 21:02:22
Откуда: Питер

Сообщение Serega »

Даташит на какую микросхему? Multiplexer - это мультиплексор, как ни странно :)))
ШИМ - широтно-импульсная модуляция. то есть, при неизменной частоте меняется длительность импульсов, за счет чего изменяется действующее напряжение в сигнале. Проинтегрированный ШИМ дает аналоговый сигнал, эквивалентный (пропорциональный - Р.) длине импульсов
Лучше быть первым в деревне, чем вторым в Риме
Аватара пользователя
Старый ржавый электронщик
Говорящий с текстолитом
Сообщения: 1507
Зарегистрирован: Чт дек 15, 2005 17:34:48
Откуда: Петрозаводск
Контактная информация:

Сообщение Старый ржавый электронщик »

ksp4, мож те лучше надыбать сэмплов разных и загнать в МК? дешево и сердито :)
звук - это несущая частота + гармоники и обертоны. Шум - это частотнораспределенный сигнал, есть белый, розовый шум. А как ты собираешься синтезировать звук, состоящий из 5-7 основых сигналов с гармониками и пары десятков обертонов - я не знаю.
путь наименьшего сопротивления проходит по пути наитолстого провода (с) Сергей Соболь
Аватара пользователя
Alexey_B
Нашел транзистор. Понюхал.
Сообщения: 186
Зарегистрирован: Чт янв 12, 2006 00:17:30
Откуда: Новосибирск, ИФП СО РАН
Контактная информация:

Сообщение Alexey_B »

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

Нет, в даташите ШИМ зовется PWM - Pulse Width Modulation.
Аватара пользователя
Max
Админ
Сообщения: 10815
Зарегистрирован: Вт авг 23, 2005 15:23:25
Откуда: Москва
Контактная информация:

Сообщение Max »

Насчет ШИМа можно посмотреть вот тут:
http://www.radiokot.ru/start/audio/amplifiers/03/
ksp4
Открыл глаза
Сообщения: 52
Зарегистрирован: Чт фев 09, 2006 19:59:06
Откуда: Москва

Сообщение ksp4 »

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

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?
ksp4
Открыл глаза
Сообщения: 52
Зарегистрирован: Чт фев 09, 2006 19:59:06
Откуда: Москва

Сообщение ksp4 »

Tak nikto ne pytalsya nauchit mikrokontroller goworit chelowecheskim yazykom?
Аватара пользователя
Serega
Говорящий с текстолитом
Сообщения: 1529
Зарегистрирован: Пн авг 22, 2005 21:02:22
Откуда: Питер

Сообщение Serega »

Кароч, насчет разрешения звука: наиболее приличное качество начинается с 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)
Лучше быть первым в деревне, чем вторым в Риме
Аватара пользователя
Alexey_B
Нашел транзистор. Понюхал.
Сообщения: 186
Зарегистрирован: Чт янв 12, 2006 00:17:30
Откуда: Новосибирск, ИФП СО РАН
Контактная информация:

Сообщение Alexey_B »

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


Тогда лучше уж все же ШИМ пользовать, ибо ног меньше требуется, да и сильно хорошо резисторы согласовывать не надо.
ksp4
Открыл глаза
Сообщения: 52
Зарегистрирован: Чт фев 09, 2006 19:59:06
Откуда: Москва

Сообщение ksp4 »

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.
Аватара пользователя
Nex
Родился
Сообщения: 9
Зарегистрирован: Вт июл 08, 2008 10:00:41
Откуда: Котово
Контактная информация:

Сообщение Nex »

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


Можно поподробней,где найти такую програмку, сам написать н7е могу? есть ли готовое решение? Очень нужна) Тоже идея научить говорить свою Мегу. Хочу чтобы называл температуру голосом.
Аватара пользователя
abc
Друг Кота
Сообщения: 3678
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Сообщение abc »

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

Сообщение dosikus »

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

Думаю это как раз для тебя...
http://pol-sem.narod.ru/polymuson/polymuson.htm
Аватара пользователя
Nex
Родился
Сообщения: 9
Зарегистрирован: Вт июл 08, 2008 10:00:41
Откуда: Котово
Контактная информация:

Сообщение Nex »

А вот если мне надо записать несколько сэмплов маленьких(например для каждой цифры) а потом уже смотря какое число проигрывать нужные сэмплы, как быть? Чтобы для числа 36 например проиграть сэмпл "3" а следом за ним "6". Ну а программку кто-нибудь подскажет для перевода?
Аватара пользователя
Pahan
Мучитель микросхем
Сообщения: 487
Зарегистрирован: Чт ноя 23, 2006 22:47:35
Контактная информация:

Сообщение Pahan »

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

Вернуться в «Цифровая техника»