Zwuki na assemblere
Zwuki na assemblere
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.
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.
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?
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?
- Serega
- Говорящий с текстолитом
- Сообщения: 1529
- Зарегистрирован: Пн авг 22, 2005 21:02:22
- Откуда: Питер
Даташит на какую микросхему? Multiplexer - это мультиплексор, как ни странно
ШИМ - широтно-импульсная модуляция. то есть, при неизменной частоте меняется длительность импульсов, за счет чего изменяется действующее напряжение в сигнале. Проинтегрированный ШИМ дает аналоговый сигнал, эквивалентный (пропорциональный - Р.) длине импульсов
ШИМ - широтно-импульсная модуляция. то есть, при неизменной частоте меняется длительность импульсов, за счет чего изменяется действующее напряжение в сигнале. Проинтегрированный ШИМ дает аналоговый сигнал, эквивалентный (пропорциональный - Р.) длине импульсов
Лучше быть первым в деревне, чем вторым в Риме
- Старый ржавый электронщик
- Говорящий с текстолитом
- Сообщения: 1507
- Зарегистрирован: Чт дек 15, 2005 17:34:48
- Откуда: Петрозаводск
- Контактная информация:
ksp4, мож те лучше надыбать сэмплов разных и загнать в МК? дешево и сердито
звук - это несущая частота + гармоники и обертоны. Шум - это частотнораспределенный сигнал, есть белый, розовый шум. А как ты собираешься синтезировать звук, состоящий из 5-7 основых сигналов с гармониками и пары десятков обертонов - я не знаю.
звук - это несущая частота + гармоники и обертоны. Шум - это частотнораспределенный сигнал, есть белый, розовый шум. А как ты собираешься синтезировать звук, состоящий из 5-7 основых сигналов с гармониками и пары десятков обертонов - я не знаю.
путь наименьшего сопротивления проходит по пути наитолстого провода (с) Сергей Соболь
- Max
- Админ
- Сообщения: 10815
- Зарегистрирован: Вт авг 23, 2005 15:23:25
- Откуда: Москва
- Контактная информация:
Насчет ШИМа можно посмотреть вот тут:
http://www.radiokot.ru/start/audio/amplifiers/03/
http://www.radiokot.ru/start/audio/amplifiers/03/
А вот футболки кому? Кружки, значки!
Мысли Пачкают Мозги
Мысли Пачкают Мозги
Ржавый электронщик, а в каком виде сэмлы лучше использовать для звуковых эффектов на контроллере?
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?
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?
- Serega
- Говорящий с текстолитом
- Сообщения: 1529
- Зарегистрирован: Пн авг 22, 2005 21:02:22
- Откуда: Питер
Кароч, насчет разрешения звука: наиболее приличное качество начинается с 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 резисторов, включаем, прошиваем, слушаем
Итак, пошагово: че и как делаем:
1. Ужимаем ВАВ до параметров 6бит 6144 Гц. Ужатие до 6 бит подразумевает уменьшение дин. диапазона сигнала с 48 (8-бит) до 36 дБ. При этом, создастся вав-файл, состоящий из 8-битных семплов, два старших бита каждого семпла всегда будут равны 0.
2. Пишем софтульку, которая откусит от ВАВ-файла шапку и пожмакает семплы таким образом, что лишних нулей не станет. Получится куча-мала, которую ни один виндозный проигрыватель уже играть не станет. Да и не надо
3. Пишем вторую софтульку, которая переведет бинарный файл в шестнадцатеричное текстовое представление вида 0х00...0хFF. То есть, на ее выходе мы должны поиметь то, что будет вставлено в текст программы контроллера как массив.
4. Вставляем то что поимели в текст программы, пишем читатель массива и плеватель прочитанного в порт. Вешаем на копыта 6 резисторов, включаем, прошиваем, слушаем
Лучше быть первым в деревне, чем вторым в Риме
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?
)
ustanowit signalnye bity
PVOE i POV.
A po kakomu adresu ih mozhno iskatx, ya nikak ne smog najti. Raz 5 perechitywal.
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?
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
- Откуда: Котово
- Контактная информация:
3. Пишем вторую софтульку, которая переведет бинарный файл в шестнадцатеричное текстовое представление вида 0х00...0хFF. То есть, на ее выходе мы должны поиметь то, что будет вставлено в текст программы контроллера как массив.
Можно поподробней,где найти такую програмку, сам написать н7е могу? есть ли готовое решение? Очень нужна) Тоже идея научить говорить свою Мегу. Хочу чтобы называл температуру голосом.
Делал так.
Оцифровать (или переконвертировать) звуки в формат WAV PCM 8бит.
Переименовать в *.bin и с помощью Пони залить полученный файл в 24С512. Можно предварительно отрезать WAV-хедер (первые 35 байт) в любом HEX-редакторе.
Цепляем 24С512 к любому контроллеру, имеющему аппаратный I2C.
В цикле читаем данные из памяти (можно побайтно) и тут же гоним их на ЦАП. Я использовал R-2R цепочку.
Оцифровать (или переконвертировать) звуки в формат WAV PCM 8бит.
Переименовать в *.bin и с помощью Пони залить полученный файл в 24С512. Можно предварительно отрезать WAV-хедер (первые 35 байт) в любом HEX-редакторе.
Цепляем 24С512 к любому контроллеру, имеющему аппаратный I2C.
В цикле читаем данные из памяти (можно побайтно) и тут же гоним их на ЦАП. Я использовал R-2R цепочку.
ksp4 писал(а):Tak nikto ne pytalsya nauchit mikrokontroller goworit chelowecheskim yazykom?
Думаю это как раз для тебя...
http://pol-sem.narod.ru/polymuson/polymuson.htm
- Pahan
- Мучитель микросхем
- Сообщения: 487
- Зарегистрирован: Чт ноя 23, 2006 22:47:35
- Контактная информация:
У меня качество звука с ШИМ было очень плохим. Если трафег халявный, можете послушать чего у меня получилось http://depositfiles.com/files/6738932 (примерно 1,5 Мб). Там 2 файла, один оригинальный, другой с выхода ШИМ 22кГц по методу Roman Black http://www.romanblack.com/picsound.htm. В 128К память влазит примерно 53сек. звука. Запись делал на линейный вход звуковухи на 44кГц.