прошивка SSSR Labs. для ACXSynth MIDI2CV

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

Краткая история проекта

Когда я приобрёл летом 2013 года комплект для самостоятельной сборки Eurorack модуля hexinverter.net MIDI2CV, меня не вполне устроило поведение этого модуля. Оригинальная прошивка имела некоторое количество недостатков: Ноты могли зависать в монофоническом режиме, педаль не поддерживалась, а назначение голосов в полифоническом режиме работало таким образом, что ноты в зависимости от порядка взятия назначались на одни и те же голоса, первая нота на первый, вторая на второй и т.д. Если при игре используется стадия затухания ADSR, исполнитель может испытывать проблемы с тем, что хвосты нот отрезаются при повторном взятии ноты одного и того же голоса. Имея некоторый опыт в микроконтроллерах, я решил взяться за обновление кода, использовав одну устаревшую версию, опубликованную на сайте ACXSynth. Проект в процессе доработок стал практически новым продуктом, в котором были исправлены все ошибки и была сделана масса нововведений. 10 июля 2014 года моя прошивка стала официальной частью проекта и была использована в производстве новой партии конвертеров MIDI2CV.

Описание

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

Особенности

  • Решена проблема «зависающих нот».
  • Голоса в полифоническом режиме назначаются последовательно (Так же, как реализовано в синтезаторе DSI Prophet `08).
  • Выход CV2 может быть использован как выход для назначаемого MIDI контроллера или для послекасания.
  • Поддерживается педаль Hold в монофоническом и полифоническом режимах.
  • Поддерживается Pitch Bend во всех режимах.
  • Обрабатываются сообщения All Sound Off и All Notes Off.
  • Выход Clock работает с частотой от 1 до 24 импульсов на четверть.
  • Поддерживается игра легато. (помнится до 8 взятых нот) и ретриггер.
  • 2 кривых динамики (линейная/экспоненциальная)
  • Возможна поддержка 8-голосной полифонии и Velocity в полифоническом режиме при использовании дополнительных модулей, подключенных через MIDI-сплиттер
  • Можно ограничить полифонию в диапазоне от 2-х до 4-х/8-ми голосов. Голоса назначаются на соответствующее количество пар выходов CV/Gate, начиная с пары CV1 / GATE1.
  • поддерживается режим разделения клавиатуры и интеллектуальный двухголосный режим на каналах мультитембрального режима 5 и 6 (+4 и +5). В этих режимах доступно Velocity.
  • Все параметры сохраняются в EEPROM

Инструкция к модулю с версией прошивки 5.7.3 (англ.)

Техническое описание работы MIDI-конвертера можно найти в архиве к прошивке. Файл называется MIDI Implementation.txt.

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

Обсуждение на Muffwiggler

Скачать прошивку

v.5.7.3

Поддержать дальнейшее развитие

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

Архив версий

Кликните на синюю ссылку на соответствующей странице. Загрузка содержит hex-файл, запакованный в RAR
v.5.7.2
v.5.7.1
v.5.7

v.5.5
v.5.4
v.5.3

История версий

5.7.3 (Официальный релиз)
* Режимы Poly1 и Poly4 поменяны местами, то-есть теерь режим Poly1 — это полифонический режим, а Poly4 — многоканальный.
* В режимах Split и Duophonic добавлены выходы Velocity. См. подробности в файле MIDI Implementation или инструкции.
* Открыт исходный код!

5.7.2
* Добавлена поддержка 8-голосной полифонии и передачи Velocity в полифоническом режиме.
* Теперь режимы Mono и Poly4 имеют индивидуальные наборы функциональных клавиш, а клавиша сохранения настроек работает в любом из этих режимов. см. файл MIDI Implementation

5.7.1
Исправлен баг: неработающая педаль в режиме триггеринга через гейт.

5.7
* Добавлен режим триггеринга через прерывание Gate (переключается клавишей F#1)* Длительность импульсов триггера и клока — 2 мс и они используют разные таймеры.
* Исправлено редкое зависание или несрабатывание триггера из-за общего с клоком таймера.
* Добавлена возможность сохранения параметров в EEPROM (клавиша B1)
* Питч-бенд теперь работает во всех режимах
* На CV2 можно назначить послекасание (клавиша G1)
* Добавлены режимы Split и Intellectual Duophonic
* Поправлен баг с ошибочной работой гейта второго голоса в режиме Poly 4
* Частота MIDI Clock может быть изменена (клавиши C#1 и D#1)
* При запуске теперь отображается номер версии ПО
* Добавлена функция блокирования функциональных клавиш (A#1)

5.5
* Добавлено ограничение полифонии.

5.4
* Введена поддержка игры легато
* Legato Retrigger отключается клавишей D1.
* Кривая динамики выбирается клавишей E1.
* Длительность триггера увеличена с 80 мкс до 1.28 мс для более яркого свечения светодиодов.

5.3 (первый выпуск)
* Последовательное назначение голосов в полифоническом режиме.
* MIDI контроллер, назначаемый на выход CV2.
* Поддержка сообщений Hold Pedal, All Notes Off и All Sound Off.
* Игнорирование неподдерживаемых сообщений, таких как SysEx, Channel Aftertouch и т.п.
* 24ppqn sync.
* Импульсы Trigger и Sync длительностью 80 мкс.
* Игра легато временно не поддерживается.

Как обновиться

Обновление по MIDI невозможно в связи с ограничениями оборудования.
Для самостоятельного обновления микроконтроллера требуется:

  • новый чип Microchip PIC16F88-I/P в корпусе DIP18. (Можно использовать оригинальный чип, но его содержимое нельзя сохранить, т.к. оно защищено.)
  • Инструмент для извлечения микросхем (экстрактор) или часовая отвёртка
  • Программатор типа SI Prog, PicKit2, PicKit3 и т.д., а также подходящий адаптер (плата с ZIF/DIP-панельками, контактная макетная плата, однопиновые соединители и т.п.)
  • ПО, поддерживающее программатор и способное читать hex-файлы Intel. (Для PicKit3 удобен Stand-Alone Programmer)

В России и странах бывшего СНГ можно заказать прошитые обновлением контроллеры у меня. Ищите контактную информацию в разделе «О сайте».

прошивка SSSR Labs. для ACXSynth MIDI2CV: 28 комментариев

      1. Robert Hedin

        Hi, I actually have a similar request, I would like to write custom code for a crOwBX that I will be assembling shortly. I would like four modes, 4 note poly, 2 note poly/dual voice, 4 voice unison, and 1 voice mono. I would use two on-off switches for the four modes, one connected to pin6 and one connected to pin7. I think that might work? Thanks, Robert

        1. rpocc Автор записи

          Hi, Robert.
          The source code will be published on Hexinverter.net this month. Just wait for a while.

          Of course configuraton you’ve described is possible, but there’s lot of conditional branches where switch is assumed to be a single, 3-position..

  1. Уведомление: ACXSynth MIDI2CV Firmware v5.7 | Модульные синтезаторы

  2. Уведомление: ACXSynth MIDI2CV Firmware v5.7.2 | Модульные синтезаторы

  3. Alex Bel

    Здравствуйте, Дмитрий.
    Пробую скомпилировать версию 5.7.3 компилятором HI-TECH PICC 9.60 — не собирается, ошибки. Версия 2.31 собирается без проблем. Какую версию компиляторы Вы использовали для сборки 5.7.3?

    1. rpocc Автор записи

      Компилятор тоже 9.60 (ну мы же все понимаем…), только полная версия. Я не помню, помещается ли последняя версия во флэше при компиляции в демо-режиме. Там половина оптимизаций отрубается. Что компилятор вообще пишет?

      1. Alex Bel

        А вот сборка версии 2.31:

        acx_midi2cv2.31.p1 is up-to-dateExecuting: «C:\Program Files\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe» -oacxmidi2cv231.cof -macxmidi2cv231.map —runtime=default —summary=default —output=default acx_midi2cv2.31.p1 —chip=16F88 -P —opt=default -g —asmlist «—errformat=Error [%n] %f; %l.%c %s» «—msgformat=Advisory[%n] %s» «—warnformat=Warning [%n] %f; %l.%c %s» HI-TECH C PRO for the PIC10/12/16 MCU family V9.60PL3Copyright (C) 1984-2008 HI-TECH SOFTWARElicensed for evaluation purposes onlythis licence will expire on Fri, 14 Dec 2029Memory Summary: Program space used 36Bh ( 875) of 1000h words ( 21.4%) Data space used 27h ( 39) of 170h bytes ( 10.6%) EEPROM space used 0h ( 0) of 100h bytes ( 0.0%) Configuration bits used 1h ( 1) of 2h words ( 50.0%) ID Location space used 0h ( 0) of 4h bytes ( 0.0%)

        1. rpocc Автор записи

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

        2. rpocc Автор записи

          Разобрался Короче, этому компилятору почему-то не нравится макро OPTION REG и не нравятся пустые безымянные ные биты в юнионах. Мой себя так не ведёт, не знаю, что тут добавить. Может режим языка Си какой-то другой или таки релиз кривой.
          В принципе, можно как-нибудь произвольно проименовать пустые биты и посмотреть, как называется в этом релизе компилятора макроопределение опшн рега, либо его просто прямо в коде объявить с адресом соответствующим опшн регу в чипе 16f88. На вскидку не помню, надо даташит смотреть.

            1. rpocc Автор записи

              Да, но скорей всего там надо ошибки кое-где убирать, т.к. я делал его по разовой просьбе и потом не всегда расставлял условия в местах, которые точно несовместимы с лайтом. Я бы лайт не рекомендовал, там большая часть функций урезана, а весь прикол прошивки в куче режимов и настраиваемой полифонии.

  4. Jordan Aceto

    Hello rpocc,

    I have been experimenting with using your v5.7.3 MIDI2CV firmware to control a TTSH synthesizer (a clone of the ARP 2600 in case you are not familiar with it) that my son and I built together, in monophonic and 3 voice paraphonic mode, it works great! The plan is to build the MIDI2CV converter into the case with the TTSH.

    I have thought of two features which would make it even more useful for our specific application, I’ll try to describe them—>

    —>Since the TTSH has three VCOs, three voice paraphony is the maximum we will need. I’d like for CV4 to always output the MOD wheel signal, no matter which mode you are in.

    —>Additionally, I’d like for CV1, CV2 and CV3 to all output the same mono note signal in mono mode, this would simplify switch wiring. This is really just a convenience, and not essential.

    If these ideas are difficult /inconvenient, or if you are just sick of this project feel free to ignore this, but if these ideas are easy to implement it would make this controller perfect for the TTSH. It is already extremely useful, thanks for all your work!

    regards, jordan

    1. rpocc Автор записи

      Hi, Jordan. Thank you for your interest.
      The best voice assign way I know is implemented in Elektron Analog Four, where you can assign random channel with random polyphony and voice steal mode on random voices: and this for random number of channels within voice capability of the unit and common sense.
      Unfortunately current version of ACXSynth converter project isn’t very expandable in this way and as long as I have no time for this firmware without commercial interest, it likely will be not updated (until I develop my own MIDI2CV converter with different MCU and completely different code)

      However I did something very similar to what you need, but for Polyvox Reissue. Polyvox has 2-voice paraphony with double-buss keyboard, so I have built a firmware that assigns notes from a midi channel in the way exactly identical to the original keyboard behaviour, so I know how to implement usable paraphony. As far as I understand, you need 3-voice paraphony with assignable controller (or just a modwheel) to the CV out 4 and usable mono/poly switch for it.

      For $100 I can develop customized firmware for your project that will do exactly what you want. It’s not very simple work, this is why I would like this work to be a personal commercial order.
      If you’re interested, please write me a line to sssrlabs@yandex.ru and we will discus the technical details (for example, I can put «ANDed» gates to Gate4 output and use others in polyphonic mode, or do something different, what will fit better for 2600. Great project btw, I hope I will be able to buy a kit sometimes later)

      Best regards,
      Dmitry.

  5. Lenko Bregovic

    Hello Rpocc

    I have build the Midi2cv ACX version and it works with your firmware.
    ACX firmware uses the Trig / Gate (your Sync) output to provide a
    trigger type signal each time a note is played.
    I use it only for polyphonic.
    I don’t have a common trigger for the filter
    I would like to use that output to control filter with it.
    Is it possible to change it somehow?

    Thank You
    Lenko

  6. Lenko Bregovic

    Hi

    I have a little problem wit the midi2cv
    I have build the ACX version, uploaded the firmware v.5.7.2, v.5.7.1,
    v.5.7, v.5.5, v.5.4 and v.5.3

    I have the same issue with all of them. I did’n try original firmware from the ACX site

    I want to use it only for polyphonic

    In polyphonic mode:
    When I press a note and press another one, it repeats the note before and second time I press it plays that note.

    Let’s say the first note is C and the second one is G, when I play G for the first time It plays C again. And then when I play G again it plays G.

    The monophonic mode works normally.

    Thank You

    P.S.
    I have posted the same post to muffwiggler thread

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