В этой статье я расскажу как и из каких компонентов можно самостоятельно изготовить клон знаменитого синтезатора Yamaha DX7.

Статья рассчитана в основном на новичков и энтузиастов ретро музыкальных инструментов. Чуда не ждите :)

Около 10 лет назад в моей коллекции был этот синтезатор, но при переезде мне пришлось продать многие из своих инструментов.

Теперь предо мной стоит задача восстановить свою коллекцию. И при этом за минимальный бюджет.

Я решил начать с самого простого и дешевого варианта из доступных- самодельный клон Yamaha DX7. Поискав в интернете я наткнулся на несколько готовых решений.

1. MiniDexed. https://github.com/probonopd/MiniDexed

2. PicoDexed. https://github.com/diyelectromusic/picodexed

3. MicroDexed. https://codeberg.org/dcoredump/MicroDexed. 

Вариант №3 отпал сразу, так как он базируется на Teensy, дорогой и труднодоступный компонент.

Так же есть вариант MicroDexed на ESP32, но проект сырой, полифония урезана, и в таком виде, без доработки, реализовывать его не имеет смысла.

Итак, вариант №1: MiniDexed.  

Всего этот клон DX7 имеет 8 банков звуков по 32 инструмента в каждом. 

Для его сборки понадобится Raspberry Pi 3,4 или Raspberry Pi Zero 2w.

Примерная цена компонентов для сборки- 50$. Зависит от выбранной версии Raspberry.

В этом случае мы получим довольно удобное устройство с экраном LCD 1620, кнопками, MIDI входом и выходом.

Оно совместимо с оригинальными банками звуков, позволяет изменять параметры звука в реальном времени посредством внешнего MIDI контроллера. (Предполагается что он у вас уже есть).

Это устройство является модулем и не имеет своей собственной клавиатуры. Соответственно для его использования понадобится MIDI клавиатура, либо MIDI USB шнур, для управления им с компьютера.

Вместо профессиональной MIDI клавиатуры можно использовать и любой старенький детский синтезатор, главное чтоб на нем был MIDI OUT разъём.

Но есть и более дешевый вариант.

№2: PicoDexed. Для его сборки понадобится RP2040. 


Его цена примерно 3-4$. I2S PCM5102 - 3-4$. 

Разъем MIDI и разъем питания 1-2$. 

Микросхема оптоизолятор такая как 6N137, 6N138 или H11L1, это еще 1$, и пара резисторов, 0,2$. 

Корпус можно изготовить из чего угодно. Итого, цена составит примерно 10$. Многое из этого у меня уже было, и цена для меня составила 3$, за RP2040.

В этом устройстве качество звука ничем не уступает вышеописанному, но количество одновременно звучащих нот- меньше. 

Органы управления и экран отсутствуют. Управление осуществляется только по MIDI. 

На корпусе устройства присутствуют только кнопка включения, аудио выход, MIDI вход и разъем питания.

Несмотря на это я остановился именно на этом варианте. 

Схема MIDI In:


Схема подключения PCM5102:


Так как MIDI контроллер у меня уже есть, а для тех у кого его нет, есть простой вариант построения MIDI контроллера на базе Arduino, с кнопками переключения пресетов и банков.

Вот отредактированный код для построения MIDI контроллера для переключения банков звуков и тембров/инструментов. 

Я использовал Arduino Nano.


2 кнопки используются для изменения тембров, +1 и -1.

2 кнопки для переключения банков. +1 и -1.

Для большей универсальности добавил кнопки выбора MIDI канала. +1, -1 и 16 канал.

Вот примерная схема:


Код для прошивки MIDI контроллера:

#include <MIDI.h>

// #include

MIDI_CREATE_DEFAULT_INSTANCE();

byte patchNum = 1;

byte midiCh = 1;

byte bankNum = 1;

void setup() {

  pinMode(2, INPUT_PULLUP);

  pinMode(3, INPUT_PULLUP);

  pinMode(4, INPUT_PULLUP);

  pinMode(5, INPUT_PULLUP);

  pinMode(6, INPUT_PULLUP);

  pinMode(7, INPUT_PULLUP);

  pinMode(8, INPUT_PULLUP);

  pinMode(9, INPUT_PULLUP);

  pinMode(10, INPUT_PULLUP);

  //pinMode(11, INPUT_PULLUP); // Uncomment this  line for 1 more button

  //pinMode(12, INPUT_PULLUP); // Uncomment this  line for 1 more button

  MIDI.begin(MIDI_CHANNEL_OMNI);

}

void loop() {

  //Serial.print(patchNum);  //bankNum, midiCh);

  if (digitalRead(5) == LOW && patchNum <= 126) {

    bankNum; //

    patchNum++; // advance patch number +1

    MIDI.sendControlChange(32, bankNum, midiCh); //Send CC

    MIDI.sendProgramChange(patchNum, midiCh);    // Send PC

   

    delay(150);

  }

  if (digitalRead(2) == LOW && patchNum >= 1) {

    bankNum;

    patchNum--; // decrease patch number -1

    MIDI.sendControlChange(32, bankNum, midiCh);

    MIDI.sendProgramChange(patchNum, midiCh);

    

    delay(150);

  }

  if (digitalRead(6) == LOW && patchNum <= 126) {

    patchNum++;

    MIDI.sendProgramChange(patchNum, midiCh);

    delay(150);

  }

  if (digitalRead(3) == LOW && patchNum >= 1) {

    patchNum--;

    MIDI.sendProgramChange(patchNum, midiCh);

    delay(150);

  }

  if (digitalRead(7) == LOW && bankNum <= 7) {

   bankNum++; 

   // patchNum=0; Uncomment to reset program # to 0

   MIDI.sendControlChange(32,bankNum, midiCh);

   // MIDI.sendProgramChange(patchNum, midiCh); // Uncomment to send Program Change 0

  

    delay(150);

  }

  if (digitalRead(4) == LOW && bankNum >= 1){

    bankNum--;

    //patchNum=0; Uncomment to reset program # to 0

    MIDI.sendControlChange(32, bankNum, midiCh);

   //  MIDI.sendProgramChange(patchNum, midiCh); // Uncomment to send Program Change 0

    delay(150);

  }

  if (digitalRead(10) == LOW && midiCh < 16) {

    midiCh++;      // Increase MIDI CH +1

    delay(200);

  }

  if (digitalRead(8) == LOW) {  // if(digitalRead(chan)) midiCh= 1;

    midiCh = 16; // MIDI CH=16

    delay(200);

  }

  if (digitalRead(9) == LOW && midiCh > 1) {

    midiCh--; // Lower MIDI CH -1

    delay(200);

  // }

  // if (digitalRead(11) == LOW) { // Uncomment if you want a separate button that resets instrument # to 0

  //   patchNum=0; // Uncomment to reset program # to 0

  //   MIDI.sendProgramChange(patchNum, midiCh); // Uncomment to send Program Change 0

  }

}

Ресурсы:

  • Notes&Volts

  • LMNC / Look mom no computer

  • https://diyelectromusic.com/2024/01/09/raspberry-pi-pico-synth_dexed/

  • https://diyelectromusic.com/2024/02/18/raspberry-pi-pico-synth_dexed-part-5/

  • MiniDexed

  • PicoDexed

  • MicroDexed

Комментарии (17)


  1. MichaelBorisov
    20.10.2024 19:22

    Потрясающе, великолепный проект! FM-синтезатор DX7 - прародитель и старший брат знаменитых звуковых карт Adlib, Sound Blaster, а также 16-битных приставок Sega Genesis (Megadrive) и большинства аркадных машин (игровых автоматов) конца 80-х - начала 90х. Но при этом возможности DX7 в плане синтеза намного превышают возможности чипов OPL2, OPL3 и других, стоявших на звуковых картах и приставках. В звуке DX7 все еще слышится "теплое, ламповое" FM, но этот звук гораздо богаче и разнообразнее.

    А как насчет достоверности эмулятора Dexed - достаточно ли точно он эмулирует звук DX7?

    Я видел обзоры на ютубах, авторы сравнивали - на некоторых примерах звук существенно отличается.


    1. sinitsinmike Автор
      20.10.2024 19:22

      В коде проекта предусмотрена возможность зашить свои звуки. Ну или любые другие из доступных. Достоверность высокая. Устройство простое, можно собрать за один вечер и послушать, чтоб оценить самому, инвестиции минимальные. Так же тут для вывода звука используется ЦАП, а не PWM что на борту RP2040. Так что качество звука в плане чистоты и отсутствия шумов- на высоте. Ну и главное- это не ромплер. Это не wav файлы он воспроизводит, а реально эмулирует, используя MIDI sysex дампы с реального инструмента.

      Так как код открытый, можно это устройство дополнить экраном, для удобства.


  1. MichaelBorisov
    20.10.2024 19:22

    Добавлю. Yamaha DX7 был очень популярен в музыке середины 80х - начала 90х. Его использовало множество профессиональных музыкантов. Также профессионалами были созданы богатые библиотеки тембров ("пресетов", "патчей") для DX7.

    А поиск красивых тембров для FM-синтезатора - трудная задача, требующая развития особых навыков. Большинство музыкантов этим не занимались - не было времени, и научиться было трудно. Использовали, как правило, небольшой набор "заводских" тембров, разработанных специалистами Yamaha. Ну и еще можно было докупить картриджи с библиотеками тембров от других авторов, которые специализировались на создании тембров.

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


  1. Dupych
    20.10.2024 19:22

    Супер. А где взять за 1$ корпус и клавиши, чтоб точно такой же был?

    Ссылки то нету.

    Я могу вам рассказать как за 1$ собрать настоящую Ferrari. Идем и покупаем гайку на М10. Ею крепится клемма аккумулятора. На оставшиеся деньги салфетка для протирания салона вашей новенькой Феррари.


    1. sinitsinmike Автор
      20.10.2024 19:22

      У многих синтезаторов есть рековая версия, скажем так, мозги. Коробка со звуками управляемая по MIDI. Это устройство так и нужно воспринимать. Как модуть. У Korg Triton, есть рековая версия, у Roland Fantom, итд. Устройство получилось очень компактное, как корпус можно использовать пластиковую коробку из строительного магазина. Мне она обошлась в 1.5$. если есть 3d принтер- можно напечатать. Будет ещё дешевле.


      1. Soorin
        20.10.2024 19:22

        Ну тогда и пишите "Как собрать клон Yamaha TX 802", а не DX7, у которого одна клавиша с послекасанием будет стоить дороже всех этих Pico.


  1. sinitsinmike Автор
    20.10.2024 19:22

    Вот что конкретно получилось у меня. Корпус- коробочка из строительного магазина. Кривенький навесной монтаж на скорую руку. Сейчас добрые люди насыпят мне не менее добрых коментариев про качество монтажа ;) Фото привел просто для понимания минималистичности всей конструкции и трудозатрат, при более чем приемлемом результате.


    1. 200sx_Pilot
      20.10.2024 19:22

      Вот что конкретно получилось у меня.

      И как на этой коробочке сыграть "Мурку"?


      1. sinitsinmike Автор
        20.10.2024 19:22

        Добрый вечер! Нужно подключить MIDI клавиатуру, они БУ не дорогие, в качестве MIDI клавиатуры можно использовать детский синтезатор с MIDI выходом 5-din. Почти любая старая детская клавиатура от Yamaha, Casio имеет MIDI выход. Глянуть на Авито, спросить у соседей может валяется не нужная. Есть 100500 проектов самодельных MIDI клавиатур на arduino. Там все сводится к самому arduino и от него проводки к клавишам. Если клавиш много, есть копеечные микросхемы расширяющие порты. Можно взять с авито муз клавиатуру за копейки и вставить туда arduino. и получится не плохая MIDI клавиатура. Это все можно решить за копейки при желании. Тут главное желание.


        1. yppro
          20.10.2024 19:22

          в качестве MIDI клавиатуры можно использовать детский синтезатор

          То есть, вы хотите сказать, что 1) берём с Али любую более-менее приличную клавиатуру, 2) выбрасываем родные внутренности, 3) вставляем вашу схему, 4) получаем Ямаху? Пишите инструкцию с фото — станете звездой на Хабре.

          Вот эта штука стоит примерно 750 рублей


          1. sinitsinmike Автор
            20.10.2024 19:22

            Это не совсем так. Этот проект является клоном DX7. Управление не с кнопок на панели а только посредством MIDI. Чтобы переключать пресеты по MIDI нужен MIDI контроллер, ну и клавиши нужны чтоб играть. Схема контроллера переключающего банки и пресеты приведена в статье. Но что толку если мы переключили банки и пресеты но у нас нет клавиатуры? Для этого нужна муз клавиатура. Есть несколько вариатнов устройства музыкальных клавиатур. Всех инструкций на все возможные детские синтезаторы не написать. Если есть не большой объем знаний по электронике и чуть-чуть в программировании, ну и конечно терпение, можно адаптировать любую. Вот пример на основе детской клавиатуры Casio. http://www.codetinkerhack.com/2012/11/how-to-turn-piano-toy-into-midi.html

            И вот к этой клавиатуре подключается клон DX7. Ну либо можно вставить его внуть корпуса детского синтезатора, как кому легче.

            Либо за 2-3к покупается старая БУ MIDI клавиатура, и не нужно ничего переделывать. Либо покупаем за 3-5к MIDI клавиатуру с крутилками и слайдерами, тогда и банки с пресетами переключать и играть- все на одном устройстве.


      1. zloe-zlo
        20.10.2024 19:22

        Поделюсь своим опытом. Есть желание исполнить Мурку или любую другую мелоди на "рояльно-пионном", то достаточно смартфона или пк) Я вот пробовал играть на встроенном в игру "Magic Awakened "(андроид), там неожиданно они в гостиных стоят. Игра бесплатная, но весит много. Звук богатый и на планшете с большой диагональю получалось музицировать без насилия над собой. Но мой максимум -"next to you" или что-то подобное.

        //Интересно, а где автор достал такие дешёвые RP2040?


        1. sinitsinmike Автор
          20.10.2024 19:22

          Google поиск. И нахожу ;)

          Aliexpress, если от 10шт будет еще на много дешевле, alibaba то же самое.

          https://aliexpress.ru/item/1005004445029772.html?sku_id=12000029203614423&spm=a2g2w.productlist.search_results.1.3987febdFCLOKZ

          194р. 1шт. Доставка бесплатная. RP2040. Мне кажется это не дорого.

          Можно на локальных торговых площадках поискать. Будет на 5-10% дороже, но не нужно 2 недели ждать доставку.

          https://aliexpress.ru/item/1005005742823430.html?sku_id=12000034182800639&spm=a2g2w.productlist.search_results.0.3987febdFCLOKZ

          Вот на али- 167рублей. Доставка бесплатная. 1шт. Но это RP2040 Zero. Думаю на ней тоже должно работать. Если что может код минимально поправить, пины переназначить.

          Если задаться целью- можно найти :)

          Но если вам просто поиграть- на барахолках можно глянуть БУ синтезатор. Авито?

          Конкретно этот клон из статьи больше для тех кому интересен именно DX7. У кого этот инструмент когда-то был, для тех кто о нем наслышан, для тех кто увлекается FM/ ЧМ синтезом итд.


  1. sterr
    20.10.2024 19:22

    Послушал я пико на ютубе. Ну это не совсем то. Полифонии то нет. Но вот мини - это уже совсем другое дело. К тому же нашел Zero 2W в китае за 130 юаней. Не так уж и дорого. Так же посмотрел на MicroDexed Touch - так это вообще рабочая станция сродни монстрам типа Motif. Понятно, что дорого, но не 2000$. Вот бы к ней 15" тач экран прикрутить. Но Teensy в китае не нашел. Плохо.

    Попиликать и пико сгодится. Нормально поиграть - мини. А вот серьезно ковыряться - микро тач.


    1. sinitsinmike Автор
      20.10.2024 19:22

      Доброе утро! На счёт полифонии вы ошибаетесь. Оригинал DX7 имеет полифонию 16 нот. Если использовать комбинированные звуки- полифония будет урезана до 8. Так как на каждую ноту будет 2 звука. В этом клоне так же. Полифония 16 нот. Есть возможность собрать этот клон без микросхемы ЦАП, использую PWM, качество звука будет хуже, с небольшими шумами, и полифония 8 звуков. Есть проекты где используется Raspberry Pi 4, там можно запустить 8 эмуляций DX7 одновременно. Там соответственно полифония выше. Но оригинальных 16 голосов полифонии хватает. Тем более что при записи музыки каждую партию записывают отдельно.


      1. sterr
        20.10.2024 19:22

        Я конечно же не собирал пико, но я верю документации:

        Current Features

        • 16-note polyphony at a sample rate of 24000Hz.

        • USB and Serial MIDI support.

        • 8 banks of 32 voices (rom1a, rom1b, rom2a, rom2b, rom3a, rom3b, rom4a, rom4b) selectable over MIDI.

        Ну 24 кгц конечно нормально. Но не для всех инструментов. И если мини держит 48кгц, то это по любому лучше.

        И тут же я иду по ссылке с гитхаба:

        In terms of sample rates and polyphony, well, things are a little basic! I can currently achieve the following:

        • 2-note polyphony at 44100.

        • 4-note polyphony at 24000.

        • 6-note polyphony, possibly if you squint at it and ask it really nicely, at 12000.

        Вы видимо даже не читали про то, что собирали. Не буду гадать кто тут прав, но истина в том, что пико не хватает ресурсов. И я обозначил самый оптимальный вариант. Он не 3 бакса конечно, чуть дороже, но не на много. И полифония там 2х вроде бы (документация такая противоречивая). Не 8 конечно, как RPi4, но RPi4 стоит прям неприлично дорого по сравнению с ардуино. Спасибо за статью, натолкнули на мысли. Но готовиться надо лучше.

        Не так давно ремонтировал роланд. И знаете как там сделано? Отдельный процессор на WaveTable, отдельный процессор на клаву, на ревер (цифровой дискретный), ну и еще кучка процессоров больших и маленьких. А вы хотите все в одном. М3 надо однако. Пико точно не потянет.

        И еще. Смотрел на трубе DX7 vs DexedVST ( а как я понял это база). VST проигрывает оригиналу по жирности. Можно смотреть даже без звука, по осцилограммам все и так видно.


        1. sinitsinmike Автор
          20.10.2024 19:22

          Добрый вечер. Вы в своем первом комментарии написали "Полифонии то нет". Я вас всего лишь поправил, что полифония есть, та же что и в оригинале, 16 голосов. Его материал растянут на 6 больших постов. Это цитата из первой части:

          • 2-note polyphony at 44100.

          • 4-note polyphony at 24000.

          • 6-note polyphony, possibly if you squint at it and ask it really nicely, at 12000.

          После этого он продолжил свой рассказ, написал еще 5 постов. В результате код был оптимизирован и полифония доведена до 16.

          По поводу 24кгц и 48кгц согласен, 48 лучше, но не многие услышат разницу, а если в миксе с другими инструментами в готовой композиции, то разницу услышат единицы.

          На RP4 видел проект где эмулируется восемь DX7 одновременно, и заявлена полифония 8х16. Впечатляет, но смысла мало. Если все равно в современном мире все пишется потреково на комп.

          В плане "готовиться нужно лучше"- тоже согласен, но не по приведенным замечаниям про полифонию.

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

          У меня было 2 варианта- писать так, или не писать вообще :)

          Ну в общем имеем то что имеем.

          На будущее у меня есть наработки статей в плане эмуляции аналоговых музыкальных инструментов, инструментов использующих Wavetable, гитарных педалей на RP3 и на Pico. Есть наработки в плане проектов простых MIDI контроллеров.

          За последние 10 лет я собрал множество интересных околомузыкальных проектов. В общем есть чем поделиться.

          Спасибо за комментарий и успехов вам в ваших проектах!

          Всех благ!