MIDI - клавиатура

Я чего-то не понимаю.
Какое это имеет отношение к MIDI клавиатуре?
По моим представлениям MIDI клавиатура должна выдавать одно сообщению при нажатии на клавишу и дно - при отпускании. Канал, естественно, настраивается. Причем для разных клавиш каналы могут быть разные. Плюс сообщения от слайдеров и колес. Плюс Active Sense. Плюс учет Running Status.
Можете привести какой либо иллюстрирующий пример?

  1. Я как-то с трудом представляю, как на такой клавиатуре можно что-то сыграть.
  2. Еще меня настораживают слова “с разной громкостью и(или) октавой”. Что такое “с разной громкостью” - понятно, но что такое “с разной октавой”? В MIDI вообще нет понятия октавы.

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

Логично.

Похоже, Вы путаете октаву с секундой. Это немножечко разные интервалы.
А вот “играть в октаву” - это функция синтезатора (мозгов), а не MIDI клавиатуры. Соответственно, назначать две ноты (в октаву) на одну клавишу не нужно.

А вот это - тоже не функции MIDI клавиатуры. Скорее, это функция отдельного устройства, например, такого:

Это опять же функция не MIDI клавиатуры, а микшерного пульта.

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

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

Почитал ваши темы и понял. Вас. Вы два устройства разделили. А я наоборот объединяю.

Изменит.
По поводу “полноценного синтезатора” без динамики у меня вопросов нет.

PS. IMHO: синтезатор (мозги) и клавиатура (зубы) - это два разных устройства, которые нецелесообразно совмещать в экспериментальном дивайсе (в серийном - возможно, но никак не в экспериментальном). Вы сами очень скоро почувствуете бесперспективность использования нединамической клавиатуры, и у Вас возникнет вопрос подключения к Вашему синтезатору внешнего источника MIDI сигнала.

PPS. Да еще один вопрос: я тут посмотрел, что такое Юность-21, и обнаружил, что у нее 48 клавиш, а не 40.

Почитал и похоже что у ТС все смешалось в кучу.
Задача MIDI клавиатуры выдавать последовательности кодов MIDI на определенные события физических кнопок.
Простые клавиатуры умеют определять силу удара по клавишам путем измерения времени срабатывания двух контактов (но там обычно стоит опто датчик).
Хорошие клавиатуры уже аналоговые и там измеряется больше параметров , чем на клавиатурах с простыми контактами, они могут даже определять вибрацию кнопки ( не знаю как это в музыке называется)
В вашем наипростейшем случае есть событие нажатия кнопки и событие отпускания кнопки. Так как нет определения скорости нажатия - то она берется фиксированной или меняется в зависимости от положения органов управления клавиатурой. Код посылаемый по MIDI берется из массива по индексу , только массив многомерный , один индекс - это номер кнопки , а другие - это системные настройки и положение органов управления , такие как педаль или др.
Задача очень проста . Составляете в памяти массив данных для разных режимов и их комбинаций. Опрашиваете кнопки , по факту нажатия и отжатия табличным способом из массива получаете что нужно отправить по MIDI, и этот код передается функции отправки , обычно это буфер UARTa MIDI порта.
Не нужно начинать с программирования. Нужно понять логику работы.
А задача синтезатора уже по MIDI нотам выдать звук и остальные эфекты. И он тоже имеет свои настройки и на одну и туже ноту может генерировать звук балалайки или пианино.
Очень уж давно делал одному барабанщику совмещение ударной установки с ДМХ512 светом , а также выдачей MIDI команд на синтезатор. Видео с его странички ютуба

В демке играет профи барабанщик.
И раз это экспериментальный девайс - то нужно позаботиться больше о гибкости настроек , чем программировании.
И еще совет: выкинуть эти регистры с I2C и заменить их на регистры параллельного ввода и последовательного вывода. Будет в разы проще. Подали импульс загрузки - считали все кнопки , потом подаем импульса сдвига и сразу анализируем состояние кнопки. Это значительно упростит обработчик. Индекс нажатой кнопки == номеру сдвигающего импульса. Будет в разы быстрее и проще вашей системы.
На этом все. Успехов если пойдете своим путем.

Не знаю как вы читаете, но там так и написано: ВСЕ В ОДНОЙ КУЧЕ! у меня есть старый советский синтезатор, на основе его механики и миди модуля(ОН В ВИДЕ ЧИПА НА ПЛАТЕ! НЕТ У НЕГО НАСТРОЕК. КРОМЕ ТЕХ КОТОРЫЕ Я НЕ ПЕРЕДАМ! НЕЕЕЕТТТТТУУУУУУ! НИ КРУТИЛОК, НИ КНОПОК, ТОЛЬКО МИДИ И ЮСБ ВХОД!) как это объяснить еще я не знаю. Может когда вы про миди модуль слышите, у вас в голове кетрон или роланд возникает, я хз.
Велосити- константа! Что там в современных клавиатурах тут не рассматривается.
Регистры по и2с - константа! Я так захотел. У меня их ведро, куда хочу туда и ставлю.
Если нужно будет оперативно менять громкость поставлю ножную педаль, что на всей советской технике была.
И самый главный вопрос - зачем отвечать на те вопросы, которые я не задавал!? Почему нельзя просто ответить на поставленный вопрос!? Тем более это раздел для новичков, кому ваше умничество тут нужно!?
Всем спасибо! Ваша помощь неоценима! Тема закрыта.

@Jeka , тут на форуме живут люди в общем-то отзывчивые: если видят, что новичок делает ошибки - подсказывают и советуют, как исправить.
Но если новичок сам не только не видит ошибки, но даже не хочет их видеть, тут ему ничем не поможешь - сам себе злобный Буратино. А ответы на вопросы даются последовательно - в том порядке, в котором ведется проектирование. Если на ранних этапах проектирования допущена ошибка, то обсуждать вопросы поздних этапов - преждевременно, нужно сначала исправить ошибку.

PS. У любого синтезатора “чипа на плате” есть настройки. Описаны в дэйташите. Почитайте. И еще: педалью регулируется не громкость (СС-07 Volume), а Expression (CC-0B).

У синтезатора есть не настройки, а параметры. И значение этих параметров синтезатору может передать кто угодно. Вот мое устройство и будет их передавать.
Вы издеваетесь или не понимаете!? У советской музыкальной техники не было динамических клавиш и педалью регулировалась именно общая громкость на выходе усилителя. Иначе как вы сыграете разные по громкости звучания ноты!? В реальном пианино клавиши динамические и педаль там для выразительности. Так же и в современных синтезаторах. А у меня старый советский синтезатор. С педалью громкости. Общей! Но, т.к. усилитель с колонками у меня другое устройство, то управлять я буду громкостью миди канала.
Я прашивал про код, а вы мне зачем-то про клавиши и регистры. А как узнали, что клавиши не динамические, так все, приехали. Срочно выбросить!

Как говорил кот Матроскин: “У меня дядя работает на гуталиновой фабрике (заводе по производству ИМС) , вот он и шлет всем посылками”
https://yandex.ru/video/preview/4115236717038414563

В общем…взял я себе современную миди клавиатуру. Axelvox key49j. А юность лучше в музей сдам…

Причина? Не смогли осилить написание кода из 20 строк?

так про код вам уже все ответили в первых 20 сообщениях

У западной техники 60-х тоже не было динамических клавиш.
И что теперь?

Я уже писал, что не общая громкость, а экспрессия, и не на выходе, а на входе.

Затем, что начинать надо не с кода, а с общего проектирования.

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

1 лайк

Андриано сказал, что без динамических клаыиш клавиатура не кошерная будет. А я задумался…в чем-то он прав. Ну и компактнее она, вес меньше. Может и до юности руки дойдут.

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

Так в советском синтезаторе была педаль громкости, которая и косвенно управляла динамикой через общую громкость. Не понимаю почему нельзя парамер СС 07 привязать к педали?

Привязать можно.
К педали вообще можно привязать что угодно, чем, например, на угодил Bank Select или Modulation Wheel, а также Balance или Pan?
Но единственной правильной привязкой педали громкости будет CC-0B Expression. Именно потому, что этот MIDI-контрол был специально сделан для педали громкости. А CC-07 используется для балансировки громкости с другими инструментами.
Другими словами: Expression - это регулировка для исполнителя, а Volume - для звукооператора.