Изготовление синтезаторов

Ремонт Ноутбуков

Пользователь+
29 Июн 2022
525
111
52
Москва
Музыкальное образование
ДМШ
Ну я бы программировал не напрямую звук с кнопок, а из промежуточного массива памяти. В который можно быстро записывать опрос клавиатуры. А уж дальше как угодно можно обрабатывать. Выдавать готовые аккорды или звуки выборки.
 

tetris

Пользователь+
24 Дек 2022
363
72
Музыкальное образование
Нету
Ну так, когда баги лезут при тестировании, то все становится очевидно, кэп. А если синтезатор делает не профессиональный программист, особо не державший паяльник со школьных времен, без вообще какого-либо опыта с Ардуино, микроконтроллерами, или даже миди, то приходится ползти наощупь ;) .

Детям так понравилось играться с моим тестовым прототипом, что мы решили с ними сделать простенькую клаву на 25 кнопок на основе копеечной pico - пусть поиграются с паяльником, поучатся фрикаду и поиграют на результате.

Чипсет ардуино, упомянутый ранее, и правда очень слабый, а вот у пико мощность 133Mhz, и пишут, что ее можно без проблем разогнать до 270. Конечно, не Teensy 4.1 - феррари микроконтроллеров - но для клавы сойдет.

Проблема пико в малом количестве пинов - 26, или 27, если отпаять с платы светодиодик.
https://www.hackster.io/news/this-raspberry-pi-pico-hack-unlocks-two-extra-hidden-gpio-pins-and-potentially-a-couple-more-aee23753281b
Как минимум, один нужен на сенсор, что дает нам максимальную кнопочную матрицу 13х13, или 169 кнопок. Вполне сойдет для любой, даже самой навороченной, цифровой гармошки, клавишного аккордеона 41x120, или миниатюрного кнопочного аккордеончика, например 34x80 нот с пятирядной кнопочной в правой. В общем, если кто-то хочет попробовать сделать цифровой аккордеон особо не вкладываясь в эксперимент - это вариант. Возможно, есть и более подходящие платы.

Вот фото зародыша цифрового аккордеона, на котором тестируется код ;)
 

Вложения

  • PXL_20230324_172720134.jpg
    PXL_20230324_172720134.jpg
    319.4 KB · Просмотры: 7

Ремонт Ноутбуков

Пользователь+
29 Июн 2022
525
111
52
Москва
Музыкальное образование
ДМШ
Так расширитель портов можно на SPI повесить. И не один. В общем зависит от компоновки и что удобнее. Один широкий шлейф или маленькая шина.
 

tetris

Пользователь+
24 Дек 2022
363
72
Музыкальное образование
Нету
расширитель портов
Да, но цена голой Пико $4. Если начинать на нее что-то докупать и вешать, то лучше сразу тинси купить за $50-60.

В роланде уже напряглись...
А вы "Гадкий Утенок" читали?
Если такому зародышу дать подрости, то получится что-то вот такое: ;)
 

Вложения

  • joel-louveau.jpg
    joel-louveau.jpg
    372 KB · Просмотры: 4

Ремонт Ноутбуков

Пользователь+
29 Июн 2022
525
111
52
Москва
Музыкальное образование
ДМШ
Что-то песня вспомнилась.
"... на инженерный факультет!" и " ... инженеру много дела есть и тут!" :ROFLMAO:
 

Ремонт Ноутбуков

Пользователь+
29 Июн 2022
525
111
52
Москва
Музыкальное образование
ДМШ
А если синтезатор делает не профессиональный программист, особо не державший паяльник со школьных времен, без вообще какого-либо опыта с Ардуино, микроконтроллерами, или даже миди, то приходится ползти наощупь ;)
Да я вообще в этом дилетант и просто "мимокрокодил..."
 

Ремонт Ноутбуков

Пользователь+
29 Июн 2022
525
111
52
Москва
Музыкальное образование
ДМШ
В общем надо вываливать в миди порт только то, что должно звучать. Придётся проверять, что если звук уже звучит, то его включение пропускается. И так же на выключение надо проверять, чтоб не было разрывов в звучании.
 

tetris

Пользователь+
24 Дек 2022
363
72
Музыкальное образование
Нету
девичья фамилия Stradella
Да, да баг и нашел, пока страделлу тестировал. Я опечатался - проблемы будут и в левой и в правой.

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

Надеялся Майкловский код использовать с небольшими изменениями, а получилось, что от оригинального кода сейчас вообще почти ничего не осталось. :geek:

Хорошие новости - 60-70% переписал вчера вечером. Потом сел этюды на роланде гонять - на выходных допишу. Этот код уже можно будет очень легко перенастроить на полноразмерную клавиатуру, когда приедут запчасти.

Дал сыну протестировать - он умудрился-таки повесить клаву дважды, нажимая в диком темпе все кнопки подряд.
 

Ремонт Ноутбуков

Пользователь+
29 Июн 2022
525
111
52
Москва
Музыкальное образование
ДМШ
Надеялся Майкловский код использовать с небольшими изменениями, а получилось, что от оригинального кода сейчас вообще почти ничего не осталось.
Да это почти всегда так. Часто проще написать самому, чем разбирать почему не работает чужое. Ну это на мой дилетантский взгляд.
 

Ремонт Ноутбуков

Пользователь+
29 Июн 2022
525
111
52
Москва
Музыкальное образование
ДМШ
Надо игнорить команду если одновременно нажато более чем примерно 6 кнопок, считая её невозможной для пяти пальцевого гомо сапиенса.Чтоб буфер команд не переполнялся.
 
  • Мне нравится
Реакции: tetris

tetris

Пользователь+
24 Дек 2022
363
72
Музыкальное образование
Нету
Как вариант Б - такая логика сойдет.
На 15 летнем роланде можно жать сколько угодно кнопок и он не виснет... Мне кажется, я видел примеры нажатия нескольких кнопок сразу, либо одним пальцем, либо ладонью у проф исполнителей - не то, чтобы мне такая техника когда-либо была нужна, но если делать, так надо стараться делать сразу как можно лучше, имхо.
Не знаю, проблема в нажатых кнопках, количестве отправленных нот, или в старой логике, которая удваивала громкость повторяемых нот - в таком случае, стукнув по страделле, можно легко отправить громкость, превышающую допустимый максимум в протоколе миди.
Тестировать надо будет уже новую логику и желательно на полноразмерной клавиатуре, а не на 4х4 в картонной коробке.
 

tetris

Пользователь+
24 Дек 2022
363
72
Музыкальное образование
Нету
Вот еще совсем дурная мысль пришла: подключить к аккордеону дыхательный сенсор для управления бендами - дунул в трубку, бенднул вниз. Вдохнул - бенднул вверх. Вдох-выдох = вибрато, как на духовых. Сделать сенсор в виде сигары, чтоб совсем как чудик не смотреться (y).
Даже имя этому новому инструменту придумал: "Сософон" 🎷 ;)

Переписал код - теперь правая и левая логические клавиатуры разделены, разные кнопки могут отвечать за одни и те же ноты, есть готовый и выборный режимы для левой (готовый пока простенький и звучит очень пластмассово). Но теперь виртуальные клавиатуры уже самые аккордеонные. :cool:

Подтвердил первый серьезный баг, обнаруженный моим юным тестером: если [очень] быстро лупить по кнопкам, отвечающим за одну и ту же ноту, то нота может залипнуть (как на вкл, так и на выкл). Как на старой логике, так и на новой.
Диагностика показывает, что в таких случаях контроллер в какой-то момент не успевает сообразить, что кнопка была включена или выключена, и регистрирует только перемену состояния кнопки в одну сторону. На практике, играя музыку, мне кажется, такая проблема в правой не возникнет, и в левой она маловероятна, но все равно нехорошо. Надо потом будет разбираться Сейчас не пойму, как такая дрянь происходит.
Играть большое количество разных нот можно без проблем - ничего не залипает. Проблема именно в регистрации кнопок, "поднимающих" один и тот же виртуальный клапан.
 
Последнее редактирование:

Ремонт Ноутбуков

Пользователь+
29 Июн 2022
525
111
52
Москва
Музыкальное образование
ДМШ
Защита от дребезга есть в коде?
Надеюсь функций (delay) нет в цикле?
 
Последнее редактирование:

kep

Администратор
30 Дек 2009
1,691
326
Надо игнорить команду если одновременно нажато более чем примерно 6 кнопок, считая её невозможной для пяти пальцевого гомо сапиенса.Чтоб буфер команд не переполнялся.
Как раз 6-7 легко нажать даже на клавишах - соседние одним пальцем.
 

Ремонт Ноутбуков

Пользователь+
29 Июн 2022
525
111
52
Москва
Музыкальное образование
ДМШ
Ну это от умения (неумения) играющего больше зависит. В нотах более 5 одновременно звучащих нот обычно не пишут.
Обычно подавление дребезга делается через отсутствие изменений сигнала с кнопки более примерно 5 мс для кнопок управления. То есть засекается системное время каждого изменения состояния if ( stateButton && !stateButtonPrevious) и реальным считается значение через контрольное время после последнего измененения. Может слишком большое время стоит, что не успевает обрабатывать?
 

tetris

Пользователь+
24 Дек 2022
363
72
Музыкальное образование
Нету
Защита от дребезга есть в коде?
Надеюсь функций (delay) нет в цикле?
Распознование кнопок - последняя часть Майкловского кода.
Защита есть, но я пока в этот вопрос особо глубоко не вникал - работает, и работает. Сейчас приоритеты другие.
Задержка всего-лишь 1мс. Может, наоборот слишком мало? Я бегло читал ардуино библиотеку для управления миди клавой - там 5мс.

Если я печатаю диагностику через серийный порт, то там я задержку выставил намного выше, и "зависает", мне кажется, чаще.

Не совсем понимаю, как может распознаваться только пол нажатия. Если бы весь факт вкл-выкл пропадал, то ОК, логично. А только половинка - непонятно, как. Надо код перечитывать и вникать в него.

Количество нот или кнопок на проблему, как мне кажется, не влияет (12 нажимаются без проблем). Баг вылезает только при очень высокой скорости [повторного] нажатия нескольких кнопок.

Так что вам надо не только этот клейстер нажимать (а зачем?), но еще и лупить по нему быстро-быстро. Вряд ли такое в музыке встречается. :unsure:
 

Пользователи онлайн

Сейчас на форуме нет ни одного пользователя.

Сообщения профилей

дарида написал(а) в профиле dyuhish.
Здравствуйте, напишите почту, скину ноты
Alex_Bond88 написал(а) в профиле serget.
Здравствуйте! Нет, Червону руту к сожалению не нашёл. Если Вам не тяжело, не могли,бы поделится нотами:
01-А музыка звучит,
02-Полонез Огинского.

Я вечером, посмотрю что есть у меня, пришлю Вам список, если что то Вас заинтересует, с удовольствием поделюсь!
С уважением, Алексей.
Egorie написал(а) в профиле bayanmir.
Здравствуйте! Опять обращаюсь к Вам с просьбой. Позвонил в сервис-центр "Dr Sound". Хотел заказать резиновые контакты для Roland FR-3xb. Для заказа они попросили ПАРТНОМЕР для резиновых контактов. Нет ли у Вас информации или каких-то схем с обозначениями. В 2017 году Вы мне очень помогли. Инструмент прекрасно работает. Но изнашиваются эти резиновые контакты. Уже не раз менял их местами. Всего Вам доброго.
nikolushan написал(а) в профиле Eugenie R..
ПРОДАЮ
nikolushan написал(а) в профиле Eugenie R..
А цифровой баян ROLAND FR-7xb не хотите ? Пятирядный , есть выборка, 14 регистров и масса всяких наворотов. Игра СОЛО , под минусовки и т.д.

Топ меценатов