Свежие обсуждения
Микроконтроллеры

Вэйвтэйбл синтезатор

1 5 26

http://www.romanblack.com/btc_alg.htm

 

dosikus:
Выложил здесь
Тенкс!

он сразу в хекс конвертит
Да видел я, конечно, эту красивую таблицу. Разве мимо такой пройдёшь? Только, в данном-то случае, конвертить-то, собственно ничего и не надо. А надо просто склеить, и создать системную область. Редактировать можно и в Волкове, по Эф4, а склеивать, как утверждают, можно досовской командой. Но редактор, безусловно посмотрю. Кто ж от хорошей штуки отказывается? Так что, тенкс, ещё раз.

AHTOXA:
Разве в мелодиях нет нулей
Не в "мелодиях", а в "сэмплах".
В том-то и дело, что - нет (я уже выше про это говорил). В той же статье Долгого, написанно, что есть, но там же и говориться, что за нулевой отсчёт принимают 80h. Теперь считаем. Сколько до максимума? 7Fh. А раз сигнал должен быть симметричным, то, для получения минимума, отнимаем это число от нулевого значения. Что получилось? Правильно - 1. Короче говоря, для симметричного сигнала, необходимо нечётное число уровней квантования. А 256 - число чётное. Предлагаю тестовый сигнал 1KHz, с уровнем 0 дебилов, длительностю 1секунда, сгенерированный в СоундФорже.

не буду больше агитировать
Да учёл я Ваш вариант. Будем думать.
Просто, я, пока, не планирую очень часто прошивку менять.

dosikus:
http://www.romanblack.com/btc_alg.htm
Чёй-то не открывается....

109540.raw

 

Gregory: http://www.romanblack.com/btc_alg.htm
Чёй-то не открывается....

Только сейчас заходил...

 

Gregory: Редактировать можно и в Волкове, по Эф4, а склеивать, как утверждают, можно досовской командой.

Я думаю copy, paste удобней досовских комманд.;)

 

dosikus:
Только сейчас заходил
Да. Сейчас открылась.
Это какой же извращенец придумал на тёмном фоне чёрными буквами писАть?
Ладно, сейчас, что-то всё-равно не воспринимаю. Почитаю позже. Но обратил внимание на одну вещь.

Там на выходе напряжение подаётся на RC-цепь. В в/у схеме Долгого такого нет. Там к выходу прямо подключен ФНЧ в интегральном исполнении. В связи с этим несколько вопросов.
Сам фильтр уже содержит эти элементы, или всё-таки их лучше дополнить?
Там рекомендованы MAX7400 / MAX7403. Не нашёл ни той ни другой. Чем их можно заменить? Смотрел даташит на 7408-7411. Так и не понял, существенно ли они отличаются? Вроде везде написанно, что идеально подходят для ФНЧ ЦАПов. Их, кстати, тоже не нашёл. Может, и вообще без ФНЧ обойтись?

 

Там по ссылке не ШИМ, там другой способ приближения звукового сигнала - нолики и единички определённой длительности плюс ФНЧ.
Упрощённый однобитный ЦАП короче.
То есть, ФНЧ используется совсем иначе, чем с ШИМ.

В случае с ШИМ можно обойтись вовсе без ФНЧ, если частота ШИМ выше звуковой. Конечно, это будет не хай-энд, но -- будет

 

AHTOXA:
частота ШИМ выше звуковой
Вряд ли в ПИКе 16-м такое получится.

 

Да ладно Я на АТ89С2051 делал ШИМ 30 КГц, а у неё всего 1 MIPS при кварце 12МГц. ПИК всяко пошустрее будет.

 

2Gregory
== ... Безусловно, если кто прояснит ситуацию, с делением на корень двеннадцатой степени из двух...
++ делить не надо, поясню своё предложение(вы не поняли)
1. имеем таблицу ЛЮБОЙ периодической функции - например синуса из 256 значений(так быстрее)
2. имеем частоту ШИМа - например =19531,25Гц
3. имеем ноту которую необходимо воспроизвести - например 440гц
4. вычисляем "шаг по таблице" для ноты 440гц =размер таблицы делить на к-во отсчётов на период для ноты.
= 256(1) / 19531,25(2) * 440(3) = 5,767241 --> =0х05С4 - именно это двухбайтное(можно 3х) значение используется для вычисления по таблице - поясню.
5. считав "константу" для ноты необходимо сложить её со значением вычисленным в предыдущей выборке(19531,25)
например
0000+05С4=05С4 -- где 05=адрес обсчёта в таблице
в следующем отсчёте(прерывании ШИМа)
05С4+05С4=0В88 -- где 0В=адрес обсчёта в таблице
далее
0В88+05С4=114С -- где 11=адрес обсчёта в таблице
....
т.е. для вычисления ноты достаточно сложить два двухбайтных числа.
при переполнении старшего регистра результата произойдёт переход на начало таблицы(размер 256) = новый период колебания

== ... период ШИМа составит всего 255 машинных циклов. Поэтому, какие-либо сложные вычисления отпадают...
++ вам говорили что выбор не лучший - скорость мала, флеша мало, RAM мало, нет аппаратного умножения, ну и 8разрядность , но можно что-то сделать.
гораздо интереснее выглядит ATMEGA8 ...и дешевле pic628, хотя от 8разрядов не избавились
но если не "увлекаться" умножением... , то и на 628 можно что-то сделать

 

AHTOXA:
делал ШИМ 30 КГц
Да сделать-то можно, вплоть до 5 MHz. Только проблема в том, что разрядность ШИМа, при этом, упадёт до 1 бита.
Плюс, за период ШИМа, необходимо проделывать кое-какие вычисления. А, при в/у частоте, этот период будет равен 1 МЦ.

AnSi:
то и на 628
В первом приближении, идея ясна, в смысле сам механизм. Насколько это "правильно", погляжу позже. Пока вижу некоторый изъян в том, что следующий период будет начинаться не с нуля. Поэтому есть некоторые проблемки с выключением.

выбор не лучший
Зато - дешёвый.