Тон-генератор своими руками

Синтезаторы, звуковые модули, сэмплеры

Тон-генератор своими руками

Сообщение Gregory » Вс сен 16, 2007 20:34

Приглашаю всех, кто на досуге балуется электроникой, принять участие в доведении "до ума" самодельного тон-генератора.
Последний раз редактировалось Gregory Ср янв 15, 2014 19:24, всего редактировалось 1 раз.
Obligatus servus
http://www.dubrovenko.ru
Аватара пользователя
Gregory
Почётный участник
Почётный участник
 
Сообщения: 840
Зарегистрирован: Чт янв 20, 2005 11:49
Откуда: Санкт-Ленинград

Сообщение Gregory » Вс сен 30, 2007 21:33

В общем жаль, что никого не заинтересовало.
Вроде, как до ума, более-менее, довёл.
Ссылки прежние.
Obligatus servus
http://www.dubrovenko.ru
Аватара пользователя
Gregory
Почётный участник
Почётный участник
 
Сообщения: 840
Зарегистрирован: Чт янв 20, 2005 11:49
Откуда: Санкт-Ленинград

Сообщение Дмитрий2008 » Вс сен 30, 2007 21:57

Уважаемый Gregory! Мне очень интересно, в подростковом возрасте я был радиолюбителем, но уровень моих знаний настолько низок, что я просто не в силах принять учатие в Ваших экспериментах... :(
Мне кажется, Вы, по крайней мере - радиопрофессионал! :)
Мне бы с элементной базой разобраться бы...
Кстати, под каким именем Вы печатаетесь в журнале http://www.radio.ru ?
____________________

— Ничто не происходит без достаточного основания (М.В.Ломоносов)
Проявляйте себя ЯРЧЕ! :wink:
Оставьте ваше сообщение после звукового сигнала... :idea:
Дмитрий2008
Любитель
Любитель
 
Сообщения: 218
Зарегистрирован: Пт июл 06, 2007 23:29
Откуда: Мяуква

Сообщение Dmitry_Milk » Вс сен 30, 2007 23:07

Gregory писал(а):В общем жаль, что никого не заинтересовало.


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

Кстати, почему это назвается тон-генератор - ведь обычно в эл.музыке под тон-генератором подразмевается устройство, получающее на входе поток миди и выдающее на выходе волновое представление либо в цифре либо в аналоге. А тут вроде как миди-входа в явном виде не наблюдается :-/
Аватара пользователя
Dmitry_Milk
Любитель
Любитель
 
Сообщения: 282
Зарегистрирован: Вс июн 03, 2007 11:55

Сообщение Gregory » Пн окт 01, 2007 0:44

Дмитрий2008 писал(а):По крайней мере - радиопрофессионал
Опять встаёт вопрос, что подразумевать под проффессионализмом? :lol: Есть, конечно, знания и опыт, но, как сказал мудрый (и я с ним абсолютно согласен):
Я знаю, что я ничего не знаю.

Дмитрий2008 писал(а):Мне бы с элементной базой разобраться бы
Микроконтроллеры тем и хороши, что внешних элементов там - минимум. Взгляните на приведённые схемы. :wink: Если есть желание изучить, могу подсказать очень полезный сайт с самоучителем.

Дмитрий2008 писал(а):под каким именем Вы печатаетесь в журнале
Под своим настоящим: Дмитрий Дубровенко.
Obligatus servus
http://www.dubrovenko.ru
Аватара пользователя
Gregory
Почётный участник
Почётный участник
 
Сообщения: 840
Зарегистрирован: Чт янв 20, 2005 11:49
Откуда: Санкт-Ленинград

Сообщение Gregory » Пн окт 01, 2007 0:53

Dmitry_Milk писал(а):по-любому проще взять комп...
...и запихнуть его в часы-будильник :lol:

Dmitry_Milk писал(а):выдающее на выходе волновое представление либо в цифре либо в аналоге
Ну, а мы что имеем на выходе? :wink: Микс из трёх аналоговых меандров. А МИДИ-команды, это - всего лишь один из способов управления.

Dmitry_Milk писал(а):А тут вроде как миди-входа в явном виде не наблюдается
И тут Вы опять не правы. Там два варианта, и один из них с явным MIDI In. :lol:


P.S.: Я смотрю, данная тема только Дмитриев интересует. :lol: :lol: :lol:
Obligatus servus
http://www.dubrovenko.ru
Аватара пользователя
Gregory
Почётный участник
Почётный участник
 
Сообщения: 840
Зарегистрирован: Чт янв 20, 2005 11:49
Откуда: Санкт-Ленинград

Сообщение never » Пн окт 01, 2007 2:23

Gregory писал(а): Если есть желание изучить, могу подсказать очень полезный сайт с самоучителем..

сайт подскажите пожалста. ...не дмитрию так окружающим.....
People are strange
When you're a stranger
Аватара пользователя
never
Почётный участник
Почётный участник
 
Сообщения: 231
Зарегистрирован: Пт фев 04, 2005 18:40
Откуда: клятый москаль

Сообщение Gregory » Пн окт 01, 2007 10:50

never писал(а):сайт подскажите пожалста
Корабельников Евгений Александрович.
Начальные главы - в свободном доступе. Для понятия основ работы, этого вполне достаточно (особенно, если ранее имели дело с микропроцессорами).
За дальнейший доступ, необходимо заплатить, но поверьте, это того стОит, поскольку автор постоянно "строчит" рассылки с такой скоростью, что я их читать не успеваю. :lol: И вообще, таких людей надо заносить в "красную книгу". Лично я заплатил, в своё время, больше, чем просили, хотя доступ у меня уже был, и ничуть об этом не жалею. :wink: Получаю массу ценной информации.
Такая вот реклама. 8)
Obligatus servus
http://www.dubrovenko.ru
Аватара пользователя
Gregory
Почётный участник
Почётный участник
 
Сообщения: 840
Зарегистрирован: Чт янв 20, 2005 11:49
Откуда: Санкт-Ленинград

Сообщение Dmitry_Milk » Пн окт 01, 2007 23:18

...и запихнуть его в часы-будильник


Неее... нуу... так не серьезно. У вас что, в детстве была несбыточная мечта о наручных эл. часах, играющих музыку? :)

Вообще мне видится, что на микроконтроллере(ах) можно было бы сделать нечто более серьезное. А именно - простой виртуал-аналоговый синтез по фиксированной схеме а-ля "простой Муг":
два отстроенных пилогенератора суммируются, подаются на фильтр, упраляемый генератором огибающей, далее - на амплитудный манипулятор, управляемый вторым генератором огибающей. Несмотря на простоту при правильном применении огибающих схема дает широкий диапазон тембров.

Представление величин - двухбайтовое, с фиксированной запятой, только дробная часть, в допкоде. Сложение элементарно (если без учета переполнений), умножение сложнее, но с учетом наличия однобайтовой операции умножения тоже не очень много операций. Генерация пилы - добавление частотного фактора в накопитель через переполнение, никаких условных переходов, все подряд. Фильтрация (второго порядка) - два умножения, три сложения, опять же никаких условных переходов, все подряд. Генерация огибающих - кусочно-линейная, то есть определение фазы и добавление наклон-фактора соответствующей фазы к накопителю, сравнение с порогом для определения перехода к след. фазе. Преобразование питча в частотный фактор - через таблицы.

На один голос:
-пила1 - сложение, нормализация для предотвращения переполнения (сдвиг)
-пила2 - сложение, нормализация для предотвращения переполнения (сдвиг)
-сложение пил - сложение
-огибающая фильтра - выбор, сложение, сравнение, условный переход
-определение частотного фактора для фильтра - умножение огибающей на глубину модуляции, сложение (с опорным питчем), выборка из таблицы
-фильтр - три сложения, два умножения
-огибающая фильра - выбор, сложение, сравнение, условный переход
-амплитудная манипуляция - умножение
Итого: 9 сложений, 4 умножения, 2 нормализации, 2 выбора, 2 условных перехода, 1 выборка из таблицы, памяти на один голос - буквально несколько ячеек.

Параметры менять либо CC#, либо SySex (тогда можно сразу весь патч), можно пресеты во флэше хранить.

Делать конечно надо на высокочастотном кварце, скажем 40 МГц. При частоте дискретизации 44100 имеем порядка двухсот операций (обычных однобайтовых) на выборку. С учетом того, что необходимо работать с двухбайтовыми числами, фактически с одного контроллера можно выжать три-четыре голоса.

Стоимость контроллера - рублей триста. Три-четыре контроллера дают в принципе уже достаточно приемлемую полифонию. Это конечно не Clavia NordLead, но штука рублей - это не штука баксов. Если не публиковать - то может быть можно и производство открыть :))
Аватара пользователя
Dmitry_Milk
Любитель
Любитель
 
Сообщения: 282
Зарегистрирован: Вс июн 03, 2007 11:55

Сообщение Dmitry_Milk » Вт окт 02, 2007 8:03

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

Можно и еще от одного умножения избавиться, при амплитудной манипуляции, но для этого надо пилы заменить меандрами, и амплитудную манипуляцию выполнять до фильтрации, то есть прямо над меандрами (фактически, просто вместо плюс/минус единица выдавать плюс/минус амплитуда). Но тут есть свои нехорошести - меандр для генерации съест больше операций (по крайней мере можно брать ту же пилу, но в качестве выхода придется делать условные переходы по знаковому биту), и меандры гармонически беднее пилы, да и фильтрация после амплитудной манипуляции может испортить ее динамические свойства, особенно при сильном резонансе.
Аватара пользователя
Dmitry_Milk
Любитель
Любитель
 
Сообщения: 282
Зарегистрирован: Вс июн 03, 2007 11:55

Сообщение Gregory » Вт окт 02, 2007 10:21

Dmitry_Milk писал(а):так не серьезно
ИМХО, как-раз "изобретать" Муги на МК - не серьёзно. А прикрутить к часам, вместо УМСКи трёхголосную "УМСКу", вполне серьёзно. :lol: И стоимость у таких часов получается 2x50 рублей, ну, плюс ещё индикатор, по вкусу.
Кстати, на каком это МК за триста рублей, Вы предлагаете данный алгоритм организовать? И как, кстати, собираетесь формировать все эти генераторы и выводить результат наружу?
Obligatus servus
http://www.dubrovenko.ru
Аватара пользователя
Gregory
Почётный участник
Почётный участник
 
Сообщения: 840
Зарегистрирован: Чт янв 20, 2005 11:49
Откуда: Санкт-Ленинград

Сообщение Dmitry_Milk » Вт окт 02, 2007 14:06

Gregory писал(а): ...прикрутить к часам, вместо УМСКи трёхголосную "УМСКу", вполне серьёзно. :lol: ...


Ну тогда действительно, MIDI in нахрен там не нужен, не стоять же под часами с миди-клавой и ждать, когда настанет время будить или граница часа :lol:

Кстати, на каком это МК за триста рублей, Вы предлагаете данный алгоритм организовать? И как, кстати, собираетесь формировать все эти генераторы и выводить результат наружу?


да на PIC-ах же и предлагал.
http://www.promelec.ru/shop/search?keyw ... review=yes
http://www.promelec.ru/shop/search?keyw ... review=yes
Ведь памяти для такого синтеза практически не нужно, это не семплерный синтезм. Математика очень несложная, генератор пилы, как я уже писал - вообще только одна операция сложения и больше ничего - ни проверок, ни условных переходов; с треугольниками и меандрами посложнее, но не намного. Самое сложное - операции умножения. Я ж специально даже прикинул суммарное количество операций одного голоса на одну выборку - порядка 100, может меньше. А еще есть несколько жульничеств, например широтно-импульсная "заморозка времени" в фильтре позволит заменить умножение на произвольное число умножением на фиксированное число, в частности - на степень двойки (читай - сдвиг), может еще какие хитрости можно придумать так, что один PIC на кварце 40МГц справится с тремя-четырьмя голосами.

Вывод сигнала - резисторный ЦАП на параллельных портах. Конечно не у любого PIC-а найдется два полностью свободных порта, ноги которых не уйдут под другие функции, но уж хотя бы 12 ног можно выкроить - вон ведь CD-проигрыватели работают с 12-битным представлением и не жужжат :). Еще не разбирался со спецификацией ADAT, возможно PIC параллельно сможет и с ним справиться своими встроенными средствами типа UART - тогда вообще ЦАП побоку.
Аватара пользователя
Dmitry_Milk
Любитель
Любитель
 
Сообщения: 282
Зарегистрирован: Вс июн 03, 2007 11:55

Сообщение Gregory » Вт окт 02, 2007 19:37

Dmitry_Milk писал(а):MIDI in нахрен там не нужен
Да есть там МИДИ Ин. :lol:

Dmitry_Milk писал(а):генератор пилы, как я уже писал - вообще только одна операция сложения
Ну хорошо. А для генераторов огибающих?
И по-моему, Вы всё-таки переоцениваете возможностей МК (недорогих, разумеется).
Obligatus servus
http://www.dubrovenko.ru
Аватара пользователя
Gregory
Почётный участник
Почётный участник
 
Сообщения: 840
Зарегистрирован: Чт янв 20, 2005 11:49
Откуда: Санкт-Ленинград

Сообщение Dmitry_Milk » Вт окт 02, 2007 22:23

Gregory писал(а):Да есть там МИДИ Ин. :lol:


Неужели все-таки придется всю ночь караулить с миди-клавиатурой под часами? А спать когда? :) Хотя можно завести механический будильник чуть раньше, проснуться под него, быстренько включить клавиатуру, подключить мощные усилок и колонки и жахнуть в назначенный час трехголосным меандром так, чтоб весь дом услыхал (тихо смысла нет - вы сами уже проснулись под механический будильник). Но это как же надо ненавидеть своих соседей!!! :lol:

А для генераторов огибающих?

Например так - есть три ячейки, в первой - текущее значение, во второй - наклон-фактор текущей фазы, в третьей - порог окончания текущей фазы.
- добавление наклон-фактора к текущему значению
- вычитание без записи (сравнение) текущего значения из порога
если знак результата вычитания и знак наклон-фактора одинаковы, то переход к обработке следующих модулей,
иначе - окончание текущей фазы, во вторую и третью ячеку записываем наклон-фактор и порог следующей фазы.

Как видите, большую часть времени нужны только три операции: сложение, вычитание и условный переход, а ветка "иначе" срабатывает только ооочень редко, в моменты смены фазы огибающей :)

А вот только что придумал еще более красивый вариант, если будет несколько микроконтроллеров:
Медленноменяющиеся генераторы - огибающих и LFO для ВСЕХ голосов можно возложить на один контроллер, который заодно будет заниматься приемом и расшифровкой миди-сообщений и управлением другими контроллерами, то есть запись в их переменные рабочих параметров, копание в таблице преобразования питча в частотный фактор. Все эти операции можно делать гораздо реже, скажем 100 раз в секунду. То есть, делать в этом микроконтроллере все "низкочастотные" операции ВСЕХ голосов - вполне должно хватить.

А остальные два или три микроконтроллера пусть занимаются чисто высокочастотными вещами, сразу пользуясь подготовленными рабочими и медленноменяющимися параметрами, не отвлекаясь на их вычисление - генерация пил на подготовленных частотных факторах, их сложение, фильтрация на подготовленных частотных факторах, умножение на подготовленную амплитуду. То есть, никаких условных переходов или ветвлений - один жесткий бесконечный цикл по жесткой последовательности математических операций сложения и умножения, являющийся к тому же разворотом цикла по голосам - так что никаких обращений с индексированием - только прямые обращения. Думаю, что так один контроллер сможет справиться с 6-8 голосами.

И по-моему, Вы всё-таки переоцениваете возможностей МК (недорогих, разумеется).


Возможно. Но мечтать не вредно, тем более все мечтания на самой границе возможностей указанных контроллеров, а не далеко за гранью. Просто иногда просыпается "бес творчества"(БТ) и начинает подкалывать -, "а неплохо было бы смастрячить что-нить такое-эдакое, аппаратный синт, ведь синты не боги делают, а такие же АСУшники, чем ты хуже?"
А Прагматический Разум (ПР) ему отвечает - "а оно тебе надо? включи комп, запусти виртуальный синт и радуйся до опупения!"
БТ: - нее, аппаратный синт круче!
ПР: - чем?
БТ: - нуу.. ээ... он не виснет как комп, прикинь, комп зависнет во время выступления?
ПР: - а ты что, выступаешь живьем перед огромными массами?
БТ: - нет, ну тогда может, чтоб самоутвердиться, доказать, что я ничем не хуже, чем производители синтов...
ПР: - кому доказать? людям? как? распространять поделку - не выйдет, потому что если попробуешь достигнуть функциональности и качества настоящих синтов - стоить твоя поделка будет гораздо дороже, чем те синты. А если самому себе доказать - тогда и делать не обязательно, и так понятно, что если долго мучаться, что-нибудь получится. Только зачем мучаться?

На этом месте "бесу творчества" сказать нечего и он затыкается до поры до времени. А тут вдруг в инете всплывает тема "самодельный тон-генератор" и БТ снова просыпается и начинает спорить с ПР :)
Аватара пользователя
Dmitry_Milk
Любитель
Любитель
 
Сообщения: 282
Зарегистрирован: Вс июн 03, 2007 11:55

Сообщение Gregory » Ср окт 03, 2007 11:31

Dmitry_Milk писал(а):всю ночь караулить с миди-клавиатурой
Для особо "понятливых" повторяю: "Рация на бронепоезде." :lol:
Там два варианта. Один воспроизводит мелодию по записанному алгоритму, а второй воспринимает миди-команды. Способ звукоформирования у них один и тот же. Принцип управления - разный.

Наговорили Вы тут много. Для того, что б понять, насколько это реально, надо, для начала понять, что Вы конкретно хотите.
Итак, поскольку я слабо знаком с построением МУГов, поясните мне его чётко, по пунктам. Если не ошибаюсь, это - FM-синтез?
Кстати, рекомендую прочесть.
Obligatus servus
http://www.dubrovenko.ru
Аватара пользователя
Gregory
Почётный участник
Почётный участник
 
Сообщения: 840
Зарегистрирован: Чт янв 20, 2005 11:49
Откуда: Санкт-Ленинград

След.

Вернуться в Синтезаторы



@Mail.ru

x

#{title}

#{text}