» » Четырёхголосный синтезатор на Arduino Uno

Четырёхголосный синтезатор на Arduino Uno



Автор Instructables под ником rgco придумал четырёхголосный 1,5-октавный синтезатор на Arduino Uno. Для сравнения, широко распространённые детские синтезаторы, отличающиеся друг от друга только оформлением и выполненные одном и том же чипе - трёхголосные. Правда, они могут автоматически сопровождать музыку ритмом, запоминать одноголосные мелодии и имитировать голоса животных. Зато самоделка звучит приятнее. Почему?



Всё дело в параметрах. Частота дискретизации 31 кГц, разрядность 9 бит, 4 голоса, ЧМ-синтез с размахом, меняющимся во времени, ADSR-огибающая, 12 виртуальных инструментов, 18 клавиш, перекрывающих 1,5 октавы.

Схему синтезатора мастер составляет во Fritzing:



В нём же моделирует расположение компонентов на макетной плате типа breadboard и соединения между ними:



И собирает схему в реале:



Просто «залить скетч и пользоваться» - самое простое, что можно сделать с конструкцией. 18 клавиш (от ДО четвёртой октавы до ФА пятой) - чтобы играть, девятнадцатая переключает по кольцу виртуальные инструменты: пианино, ксилофон, гитару, цимбалы, колокольчики, фанки, вибрато, металл, скрипку, бас, трубу, гармошку. На характер звука влияет продолжительность нажатия клавиш, но не усилие, в отличие от профессиональных синтезаторов. Но разработчик хочет, чтобы вы тоже попробовали программировать свои виртуальные инструменты. Каждый из них задан десятью параметрами. Мастер рассказывает, от какого параметра что зависит.

ldness - громкость

При значении этого параметра менее 64 перегрузка и связанные с ней искажения исключены. Но если вы программируете такой виртуальный инструмент, который звучит на максимальной громкости недолго, значение этого параметра может и превышать 64, поскольку все четыре голоса одновременно звучат нечасто.

pitch0 - сдвиг тона

Диапазон соответствует указанному выше, если задать этот параметр равным 12. Уменьшение сдвигает вниз, увеличение - вверх. Нулю соответствует сдвиг вниз ровно на одну октаву, 24 - вверх ровно на одну октаву.

ADSR_a - скорость нарастания громкости от нуля до максимума

Чем меньше, тем медленнее. Например, 8192 соответствует 4 мс, 256 - 128 мс.

ADSR_d - скорость уменьшения громкости от максимума до заданного параметром ADSR_s.

Принцип тот же.

ADSR_s - значение, до которого громкость уменьшается при продолжительном нажатии клавиши

Например, 256 - громкость остаётся максимальной всё время, пока клавишу удерживают. 192 - громкость спадает до 80 процентов и остаётся таковой, пока клавишу удерживают. 0 - громкость уменьшается до нуля, даже если клавишу удерживают.

ADSR_r - скорость уменьшения громкости до нуля после отпускания клавиши

Принцип как у параметров ADSR_a и ADSR_d.

FM_inc - отношение частоты модуляции к тону

При значении 256 это отношение получается равным 1:1, при 512 - 2:1, при 128 - 1:2, остальное по аналогии. Если этот параметр задать не кратным 64, звучание получится ангармоническим.

FM_a1 - размах частотной модуляции в начале ноты

256 соответствует широкому спектру гармоник. При уменьшении тон получается чище, при увеличении гармоник становится больше.

FM_a2 - размах частотной модуляции в конце ноты

Принцип тот же. У большинства реальных инструментов гармоники затухают быстрее, чем основной тон. Если сделать наоборот, получаются необычные звуки.

FM_dec - скорость перехода размаха частотной модуляции от заданного параметром FM_a1 до заданного параметром FM_a2

Принцип как у параметров ADSR_a, ADSR_d и ADSR_r.

Частота ШИМ, равная 31250 Гц, получается делением тактовой частоты (16 МГц) на 512. Программа составлена таким образом, чтобы привязка событий ко времени происходила без применения прерываний. Вместо этого задействован разряд переполнения таймера. Чтобы программа успевала проделывать всё, что от неё требуется, используются только целые числа длиной в 8 и 16 бит. Синусоида представлена в виде таблицы из 8-битных чисел. Вспомогательные операции - считывание состояний клавиш, смена виртуальных инструментов, выбор голосов, расчёт параметров нот, меняющихся во времени - распределены между 15 процедурами, выполнение которых в общей сложности занимает 0,48 мс. В это время некоторые операции выполняются с 32-разрядной точностью, что необходимо для перемножения двух 16-разрядных двоичных чисел.

Простая синусоида звучит глухо, потому что в её спектре отсутствуют гармоники. ЧМ-синтез позволяет получать их и менять их спектр во времени, имитируя звучание реальных инструментов. Некратные частоты дают ангармоническое звучание, которое встречается, например, у колокольчиков. Устройство хорошо имитирует присущее реальным инструментам изменение спектра во времени, когда одни гармоники затухают быстрее других.

Источник
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

БыстроМидиКлавиатура

10
Идея
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
9.3
Описание
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
8.4
Исполнение
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
Итоговая оценка: 9.24 из 10 (голосов: 7 / История оценок)

Добавить комментарий

    • smilesmilesxaxaokdontknowyahoonea
      bossscratchfoolyesyes-yesaggressivesecret
      sorrydancedance2dance3pardonhelpdrinks
      stopfriendsgoodgoodgoodwhistleswoontongue
      smokeclappingcraydeclarederisivedon-t_mentiondownload
      heatirefullaugh1mdameetingmoskingnegative
      not_ipopcornpunishreadscarescaressearch
      tauntthank_youthisto_clueumnikacuteagree
      badbeeeblack_eyeblum3blushboastboredom
      censoredpleasantrysecret2threatenvictoryyusun_bespectacled
      shokrespektlolprevedwelcomekrutoyya_za
      ya_dobryihelperne_huliganne_othodifludbanclose
1 комментарий
  1. kiril_vihrov7892
    Интересный проект.
    Недавно видел проект "Синтезатор на Ардуино" в качестве клавиш используется почти вся клавиатура Пк
    Из деталей всего Ардуино, динамик и компьютер.
    Всю работу делает приложение на Пк, он Управляет Ардуино через com port
    повторил, все работает отлично. Посмотри может поможет
    Видео с кодом
    http://www.kolpinkurs.ru/ardelnet/piano.htm

Привет, Гость!


Зарегистрируйтесь

Или войдите на сайт, если уже зарегистрированы...

Войти

Добавьте самоделку

Добавьте тему

Онлайн чат

Опрос
А Вы знаете, что на сайте оплачиваются отчеты о создании самоделок?

Последние комментарии

Все комментарии
Новые самоделки на почту

Введите электронную почту и получайте письма с новыми самоделками. Не более одного письма в день.