Самодельный MIDI Controller

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

А этого я не понял. Если писать в MIDI, то получается весьма компактно. Например, из имеющихся у меня MIDI файлов самый большой - около 800 кбайт. А бОльшая часть - от единиц до десятков кабйт.

Что за метод, я не знаю, а потому и всего последующего не понял.

Не думаю, что форум - подходящее для этого место.
Напишу в ЛС.

Если зажигать светодиод только в момент сканирования, то так можно еще и сэкономить на "светоизоляции" отдельных пар.
10_10_2023

Доброго времени суток, sandriano!
Наступил у меня какой – то период нехороший (атака - болячек, млять…): апатия, всяческое отвращение к любому труду, пассивное созерцание окружающего, «самокопание» - хандра! В последнее время, к сожалению, такое бывает; наверное старость, хотя в душе - я еще «пацан» и мне только – 25!
И зачем я сломал (разобрал) свою миди на AT89S8252? Ведь там почти все работало… Сэмплы - хриповатый, с «продувкой» и вибрацией, саксофон, звучание органной «короны» HAMMOND - вкл. все регистры – tutti, его квинт – регистры (5-1/3, 2-2/3, , 1-1/3 ), терц – регистр (1-3/5 ) вместе звучат «клево» - сольно, но в аккордах не строят, «душещипательные» переливы Leslie (эфф. вращающихся динамиков), колокола - все было…
Но это не демонтаж - просто консервация.
Хандра, «прогу» для RP2040 наверное буду переписать на С

Еще раз в Рунете зашел на сайт Ю. Петелина, «Вперёд… в прошлое»
уважаю АВТОРА! У него все просто и доходчиво – прямо на пальцах! Просмотрел наверное все его посты.
Очень советую посетить: https://www.petelin.ru/articles.html, https://petelin.ru/books/studio/33.htm
 
10_10_2023

Доброго времени суток, sandriano!
Наступил у меня какой – то период нехороший (атака - болячек, млять…): апатия, всяческое отвращение к любому труду, пассивное созерцание окружающего, «самокопание» - хандра! В последнее время, к сожалению, такое бывает; наверное старость, хотя в душе - я еще «пацан» и мне только – 25!
И зачем я сломал (разобрал) свою миди на AT89S8252? Ведь там почти все работало… Сэмплы - хриповатый, с «продувкой» и вибрацией, саксофон, звучание органной «короны» HAMMOND - вкл. все регистры – tutti, его квинт – регистры (5-1/3, 2-2/3, , 1-1/3 ), терц – регистр (1-3/5 ) вместе звучат «клево» - сольно, но в аккордах не строят, «душещипательные» переливы Leslie (эфф. вращающихся динамиков), колокола - все было…
Но это не демонтаж - просто консервация.
Хандра, «прогу» для RP2040 наверное буду переписать на С

Еще раз в Рунете зашел на сайт Ю. Петелина, «Вперёд… в прошлое»
уважаю АВТОРА! У него все просто и доходчиво – прямо на пальцах! Просмотрел наверное все его посты.
Очень советую посетить: https://www.petelin.ru/articles.html, https://petelin.ru/books/studio/33.htm
Вот с передачей midi- usb на Си у меня, муха-бл…ха –проблема, пока не знаю, как это сделать… Буду учиться.
И еще возникла идея: обязательно сделать педальку для регулировки частоты эффекта «лесли» (он же файзер, фленжер), как на оригинальном Hammondе. У меня их уже много – будет «до кучи»…
 
Вот с передачей midi- usb на Си у меня, муха-бл…ха –проблема, пока не знаю, как это сделать… Буду учиться.
И еще возникла идея: обязательно сделать педальку для регулировки частоты эффекта «лесли» (он же файзер, фленжер), как на оригинальном Hammondе. У меня их уже много – будет «до кучи»…
Имеется старенькая Vermona- 1F: штатный «файзер» и пружинный ревербератор переделаны с применением мксх эхо – процессора РТ2399 . Добавлены эфф. фленджер (пишется с буквой «Д»), дилей (регулируемый повтор), хорус (3 линии задержки).
 
Здравствуйте, Геннадий.
И зачем я сломал (разобрал) свою миди на AT89S8252? Ведь там почти все работало… Сэмплы - хриповатый, с «продувкой» и вибрацией, саксофон, звучание органной «короны» HAMMOND - вкл. все регистры – tutti, его квинт – регистры (5-1/3, 2-2/3, , 1-1/3 )
Что-то я не пойму, если речь идет о MIDI клавиатуре, то причем здесь конкретные сэмплы?
А если не клавиатура - тогда что?
штатный «файзер» и пружинный ревербератор переделаны с применением мксх эхо – процессора РТ2399 .
Купил в свое время десяток таких микросхем и один собранный модуль, но до сих пор не знаю, куда их приткнуть - там аналоговое управление, цифрового нет. Ну и куча всякой обвязки. У меня пока планы реализовать все эффекты, связанные с задержкой на встроенной памяти микроконтроллера. Даже собрал аппаратную часть макета на stm32f407 с внешними АЦП и ЦАП (есть вариант и на встроенных, но не устроил уровень шума), но - тоже творческий кризис, и пока лежит, дожидается своего часа.
 
Здравствуйте, Геннадий.

Что-то я не пойму, если речь идет о MIDI клавиатуре, то причем здесь конкретные сэмплы?
А если не клавиатура - тогда что?

Купил в свое время десяток таких микросхем и один собранный модуль, но до сих пор не знаю, куда их приткнуть - там аналоговое управление, цифрового нет. Ну и куча всякой обвязки. У меня пока планы реализовать все эффекты, связанные с задержкой на встроенной памяти микроконтроллера. Даже собрал аппаратную часть макета на stm32f407 с внешними АЦП и ЦАП (есть вариант и на встроенных, но не устроил уровень шума), но - тоже творческий кризис, и пока лежит, дожидается своего часа.
10_10_2023_

Добрый день, Сергей!
Про РТ2399 и Vermonу- 1F – это я попутно, попались на глаза, ностальгия…
А шумит РТ2399 действительно, но попадаются отдельные экз. «малошумящие».
Собирал 2 раза ревербератор по сх. из «В помощь радиолюбителю выпуск № 95» или «Радио 1986 г. № 1 стр.46»; в принципе одинаковые, дельта – модуляция, в линии задержки использованы динамические ОЗУ К565РУ3А.

Такая гадость! Эти ОЗУ первоначально использовались в КЭАТС КВАНТ:
во - первых сложное управление – строки, столбцы, во – вторых обязательная регенерация. Станция работает, работает, и вдруг –«оба-на» - СТОП, останов – сбой памяти (К565РУ3А) , «слилась версия» ПО. Ну и все отсюда истекающее…

В ревербераторе я использовал статич. ОЗУ MB8464A-10L (1 МБ), за счет увеличения тактовой частоты (до 4 мГц) и тонкой отстройки ЦАП, АЦП шумы были заметно меньше, чем у РТ2399. Сейчас то сплю, то не сплю – болячка задолбала, погода такая…
 
10_10_2023_

Добрый день, Сергей!
Про РТ2399 и Vermonу- 1F – это я попутно, попались на глаза, ностальгия…
А шумит РТ2399 действительно, но попадаются отдельные экз. «малошумящие».
Собирал 2 раза ревербератор по сх. из «В помощь радиолюбителю выпуск № 95» или «Радио 1986 г. № 1 стр.46»; в принципе одинаковые, дельта – модуляция, в линии задержки использованы динамические ОЗУ К565РУ3А.

Такая гадость! Эти ОЗУ первоначально использовались в КЭАТС КВАНТ:
во - первых сложное управление – строки, столбцы, во – вторых обязательная регенерация. Станция работает, работает, и вдруг –«оба-на» - СТОП, останов – сбой памяти (К565РУ3А) , «слилась версия» ПО. Ну и все отсюда истекающее…

В ревербераторе я использовал статич. ОЗУ MB8464A-10L (1 МБ), за счет увеличения тактовой частоты (до 4 мГц) и тонкой отстройки ЦАП, АЦП шумы были заметно меньше, чем у РТ2399. Сейчас то сплю, то не сплю – болячка задолбала, погода такая…
Болячка эта у меня - фантомная боль, на самом деле болеть – то нечему…

Сейчас думаю: продолжить и доделать проект на Сircuitpython? По ходу дела все проблемы в библиотеке Adafruit_CircuitPython_MIDI, загружал БОЛЕЕ свежие версии библиотеки и Сircuitpython: результат – те же самые продукты, но только вид сбоку…Винда видит мой девайс как аудио устройство USB, а не устройство midi. Пытался работать с разными DAW, но только FL Studio работает корректно, но вот засада: FL Studio вер. 20 – слишком запутанная и сложная, вдобавок сильно грузит процессор ПК – почти 100%. Переписать библиотеку под себя?

В MicroPython – синтаксис «слегонца» отличается, но нет такого количества библиотек и нет функции midi – USB. Все начать писать заново на Си?
 
Болячка эта у меня - фантомная боль, на самом деле болеть – то нечему…

Сейчас думаю: продолжить и доделать проект на Сircuitpython? По ходу дела все проблемы в библиотеке Adafruit_CircuitPython_MIDI, загружал БОЛЕЕ свежие версии библиотеки и Сircuitpython: результат – те же самые продукты, но только вид сбоку…Винда видит мой девайс как аудио устройство USB, а не устройство midi. Пытался работать с разными DAW, но только FL Studio работает корректно, но вот засада: FL Studio вер. 20 – слишком запутанная и сложная, вдобавок сильно грузит процессор ПК – почти 100%. Переписать библиотеку под себя?

В MicroPython – синтаксис «слегонца» отличается, но нет такого количества библиотек и нет функции midi – USB. Все начать писать заново на Си?
Или еще раз покопаться, млять, в системном реестре, но делать все деликатно и осторожно. Иначе можно нах, убить mouse или клавиатуру, или еще что –нибудь…Как тогда сделать «откат», «горячими» клавишами при нерабочей клавиатуре?
 
Геннадий, что-то мы совсем отошли от темы MIDI контроллеров.
Давайте переместимся в личную переписку (пиктограмма почтового конверта в верхнем правом углу).
 
рискую бан.... но конкуренция - двигатель прогресса. Но делаю правда, штучно. На базе 1707219765504.pngSTM32.

242882
 
  • Like
Реакции: mitinglas
рискую бан.... но конкуренция - двигатель прогресса. Но делаю правда, штучно. На базе Посмотреть вложение 242882STM32.

Посмотреть вложение 242882
Конкуренция это отлично! Мне нужно было именно 100мм + энкодер. И чтобы все с девайса. Так что рискую банк, но толе фото повешу
2V2A8660.jpg
 
  • Like
Реакции: dim3740
Конечно. Кстати, запросов на 4, а то 2 фейдера гораздо больше, чем на 8. А вот ранжирование, имхо, вы тоже внедрите. Даже 100 мм порой не спасает от требуемой точности значения.

И если не секрет, как у вас дно то к крышке крепится? На наборе фоток на сайте не понятно. А резиновые ножки такие, имхо, долго не продержатся.
 
  • Like
Реакции: MidiShip
Конечно. Кстати, запросов на 4, а то 2 фейдера гораздо больше, чем на 8. А вот ранжирование, имхо, вы тоже внедрите. Даже 100 мм порой не спасает от требуемой точности значения.

И если не секрет, как у вас дно то к крышке крепится? На наборе фоток на сайте не понятно. А резиновые ножки такие, имхо, долго не продержатся.
Ножки отлично держатся на удивление! А как крепится - секрет фирмы)
 
Конкуренция это отлично! Мне нужно было именно 100мм + энкодер. И чтобы все с девайса. Так что рискую банк, но толе фото повешу

А! Понятно. Большой -большой секрет))) Вот тут свою орфографию подправьте только, а то несолидно для большой фирмы:)
 
А! Понятно. Большой -большой секрет))) Вот тут свою орфографию подправьте только, а то несолидно для большой фирмы:)
а, понял) сори, поназадевал букв и т9) Но уже поправить почему-то нельзя
 
Последнее редактирование:
Подскажите, плиз...
Есть намерение купить миди клаву iCon 88, без лишних кнопок и наворотов, только питчбэнд, модуляция, пару кнопок +/- и энкодер.
Но периодически требуется экспрессионный CC11. В этой клаве с тыла есть гнездо для подключения педали экспрессии (на озоне есть за пару тыр) , но лично мне будет неудобно, например, прописывать пачку дудок ногой (сфорцандо, затем крещендо).
Теоретически, можно ли обычный ползунковый потенциометр подключить ко гнезду экспрессии миди клавы, и будет ли работать такая копеечная приблуда?
P.S. Уж красивую коробочку как нить заколхожу под это дело.)
P.P.S Вышеупомянутые контроллеры как-то и не нужны. Да даже в целях экономии.
 
Теоретически, можно ли обычный ползунковый потенциометр подключить ко гнезду экспрессии миди клавы, и будет ли работать такая копеечная приблуда?
Мимопроходил. Учти, что в педали (как и в PB/MW) потенциометр работает не на весь диапазон, только на определённый сектор. Стандартный потенциометр на 10к используется примерно от 2к5 до 7к5. Например, если решишь использовать ползунок, то я бы попробовал последовательно постоянный резистор 2к5 и ползунок на 5к. Уточни этот момент у более сведущих.

Ну, или найти где-ньть б/у модуль PB/MW и с ним колдовать. Привычный формат всё же. Но то ж наверняка с заменой потенциометров...
 
  • Like
Реакции: ESSE
Есть намерение купить миди клаву iCon 88
Перед покупкой настоятельно советую пощупать её вживую. Я купил себе iCON iKeyboard 8x несколько месяцев назад. Честно говоря я разочарован. Клавиатура на ощупь как M-audio Keystation, велосити хреновое, настроить его нормально невозможно, то что предлагают (варианты программно) полная фигня. Колёса модуляции и питча кошмарно неудобные от слова совсем ни по размерам ни по упругости ни по месту расположения (кто придумал их в таком месте поставить), софт по управлению и прошивке кривой, в кубике ведёт себя неадекватно, при нажатии на кнопочки (слева) в кубике раздаются звуки как при нажатии кнопок на старом телефоне, чтобы это пофиксить надо скакать с бубном и плавить мозги :).
 
  • Like
Реакции: ESSE
@Catcher Sounds, спасибо за инфу.
софт по управлению и прошивке кривой, в кубике ведёт себя неадекватно, при нажатии на кнопочки (слева) в кубике раздаются звуки как при нажатии кнопок на старом телефоне, чтобы это пофиксить надо скакать с бубном и плавить мозги
Вот я и говорю - намерен купить простую 88 - без этих всяких кнопочек и пр. , только необходимый минимум.
А вот по велосити - озадачил. Надо может быть действительно попробовать.
 
А вот по велосити - озадачил. Надо может быть действительно попробовать.
Именно так, и колёса питча и модулящии кошмар, я нигде таких неудбных не встречал. Только пробовать вживую.
 
  • Like
Реакции: ESSE
и колёса питча и модулящии кошмар, я нигде таких неудбных не встречал.
А что значит - неудобные ? По-расположению что-ли, чисто тактильно ? Или по неправильному срабатыванию 0-127 ?
 
А что значит - неудобные ? По-расположению что-ли, чисто тактильно ? Или по неправильному срабатыванию 0-127 ?
СЕйчас попробую подробнее объяснить.
Расположение очень неудобное, на любой мидиклаве или синтезаторе колёса выше (дальше от края) и большим пальцем левой руки удобно их крутить (да любым вобщем-то :)), но тут колёса низко положены, ладонь вообще непонятно как держать, обычно мы опираемся почти ребром ладони (плюс мизинец и безымянный пальцы), или цепляемся пальцами за край клавиатуры, а тут ладонь или в воздухе или на столе лежит ниже уровня клавы, и постоянно в напряжении от этого неудобного положения, колесо питча выскальзывает (пружина сильная внутри), сам размер и форма сплошное недоразумение (выемка под палец абсолютно не функциональна, непонятно под какие руко-пальцы делали).
Срабатывание нормальное.
Да и ещё некоторые клавиши ненормально передают велосити, как будто уже "устали".
 
  • Like
Реакции: ESSE
Я в своё время купился на немногочисленные обзоры и цену такую низкую, но надо было срочно покупать т.к. моя Novation lanchkey 61 стала глючить и вырубать кубейс (да да прям вот так, вырубать), а старая m-audio keystation 88 уже неадекватная стала, прострелы от износа. Поэтому поспешил предупредить и считаю лучше поискать что-нить другое, пусть подороже, но лучше. И обязательно надо самому всё щупать, все обзоры либо реклама, либо люди не компетентны в данном вопросе.
 
  • Like
Реакции: ESSE
Спасибо, буду думать. Внимательно тут посмотрел - у обычной клавы колёса чуть по-другому расположены ( от края самой клавиатуры), нежели от нафаршированной. С другой стороны - оч редко пользуюсь питчем, частенько - MW и экспрессией.
Короче, будем посмотреть.

iCon 1.jpg


iCon 2.jpg
 
  • Like
Реакции: Catcher Sounds
Здравствуйте, помогите библой (ардуино) обработать PitchBend, получаемый на МИДИ вход, только поменяв МИДи канал на TX. Никаких колесиков и analogRead не требуется. Код ниже.

#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
byte Ch;

void setup() {
MIDI.begin(MIDI_CHANNEL_OMNI);
MIDI.turnThruOff();
Serial1.begin(31250);
}

void loop() { // меняем канал входящих на фиксированный = Сh
if (MIDI.read())
{
// 3 примера работающих методов
if (MIDI.getType() == midi::Stop) Serial1.write(0xFC); // uart
if (MIDI.getType() == midi::Clock) MIDI.sendRealTime(midi::Clock); // или можно библой
if (MIDI.getType() == midi::NoteOff) {
byte note = MIDI.getData1();
byte velocity = MIDI.getData2();
Serial1.write(0x80 + Ch - 1);
Serial1.write(note);
Serial1.write(velocity);
}

// а вот тут не знаю как нужно....
if (MIDI.getType() == midi::PitchBend) {
//byte note = MIDI.getData1();
типа MIDI.sendPitchBend(note, Ch - 1); //??
или как -то через сериал...
}
}
}
 
А что значит "обрабатывать pitchbend"? Что именно нужно сделать?
И, на всякий случай: параметры pitchbend - 2 байта. Соответственно, вычитывать нужно оба.
И влияет он на канал целиком, т.е. все ноты, а не на одну.

Да, если требуется просто транслировать весь MIDI поток на другой канал, то библиотека MIDI вообще не нужна.
 
Последнее редактирование:
@sandriano, это конвертер МИДИ каналов. Нужно принять, заменить канал, и отправить на выход без изменений остальных параметров.

Нужна гибкая система. В отношении Питча ничего сейчас не нужно делать, но может потребоваться. По остальным МИДИ сообщениям делаются изменения не только МИДИ каналов.
 
Последнее редактирование:
@sandriano, это конвертер МИДИ каналов. Нужно принять, заменить канал, и отправить на выход без изменений остальных параметров.

Нужна гибкая система. В отношении Питча ничего сейчас не нужно делать, но может потребоваться. По остальным МИДИ сообщениям делаются изменения не только МИДИ каналов.
dim3740, у Вас первый и второй абзацы противоречат друг другу. "без изменений" и "делаются изменения" - вещи несовместимые.

Хорошо, я дам вариант, как бы делал следующую задачу:
1. Стандартное устройство MIDI: один вход, один выход, никаких разветвителей. Весь обмен по Serial.
2. Ретранслятор - сам никаких команд не выполняет.
3. Во всех канальных сообщениях подменяет номер канала, а все остальное передает без изменений.
Теперь, почему без библиотек.
Чтобы выполнить команду, необходимо принять ее последний байт. Т.е. выполнение для 3-байтовых команд может начаться не ранее чем через 1 мс после начала приема. Задержка 1 мс или более. А ретранслировать команду можно побайтно: задержка 0.3 мс.
Как реализовано в библиотеке, я не знаю (я не пользуюсь MIDI библиотеками - пишу свое), если библиотека ориентирована на выполнение команд, задержка будет не менее 1 мс.
В общем, проще написать свое, чем ковыряться (а иногда и исправлять ошибки) в готовой библиотеке.
Код писал прямо здесь, не проверял.

const byte channel = 9; // задаем номер выбранного канала - именно по нему будут уходить преобразованные команды

void setup() {
Serial.begin(31250);
}

viod loop() {
if(Serial.available()) { // реагируем только после того, как порт что-то пришло
byte b = Serial.read();
if((b & 0x80) == 0) { // проверяем старший бит, выбирая только данные
Serial.write(b); // отправляем байт данных на выход без изменений
return; // больше нам здесь делать нечего
}
if((b & 0xF0) == 0xF0) { // выбираем системные команды
Serial.write(b); // отправляем на выход без изменений
return; // больше нам здесь делать нечего
}
// мы отселектировали все, что можно. У нас остались только канальные сообщения, поэтому больше проверок не делаем,
Serial.write((b & 0xF0) | channel); // подменяем канал и отправляем на выход
}
}
 

Сейчас просматривают