MIDI контроллер

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Аватара пользователя
B@R5uk
Собутыльник Кота
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Re: MIDI контроллер

Сообщение B@R5uk »

Что-то разбираться придётся значительно больше, чем я планировал. Неужели нельзя не городить огород, а сделать всё на одном МК без всяких преобразований "миди-->юсб"?
Аватара пользователя
servio
Родился
Сообщения: 19
Зарегистрирован: Пт окт 21, 2011 18:27:34
Откуда: Киев
Контактная информация:

Re: MIDI контроллер

Сообщение servio »

B@R5uk писал(а):Что-то разбираться придётся значительно больше, чем я планировал. Неужели нельзя не городить огород, а сделать всё на одном МК без всяких преобразований "миди-->юсб"?


Готовую схему и прошивку для клавы под USB найти будет не просто. Если бы я делал клавиши, то упростил бы схему и прошивку проекта C-r-o-w, а выход MIDI через FT232RL подключил бы к USB. Установил бы на комп транслятор UART-MIDI от Roland и наслаждался бы результатом. Куда уже проще.
Очестратор
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт апр 19, 2012 12:08:44
Откуда: г.Киселевск

Re: MIDI контроллер

Сообщение Очестратор »

Midi-клава с усб выходом? Запросто. Берем V-USB стек, и прикручиваем его к процедуре опроса клавиш. Всё! Никаких огородов. Как основу можно взять вот этот http://avargesnano.narod.ru/3/MIDI-DJ-CJ-CONTROLLER-3.0.html проект, и выбросить из него ненужное, оставив только работу USB стека. И добавить еще процедуру динамического опроса клавиш, которая пишется за один вечер :) По факту, в программе (там есть исходники) есть очень важная процедурка MidiSend () , что и выплевывает в программный усб мидисообщения.

Есть еще более сложный, но надежный способ. Берем связку FT232RL + atmega8 . Первая микруха у нас формирует виртуальный ком-порт - драйвера не требуются. Контроллер же занят только тем, что опрашивает клавиши и передает нажатия-отпускания на выход своего UARTа в FT232. Затем качаем программку Com2Midi (или как-то так, название не помню) и получаем в системе виртуальный midi порт. Что интересно, скорость приема сообщений в этом случае у нас может быть далеко не 31250 бод, можно и 115 все поставить :)

И метод для тяжеловесов. Берем Xmega с нативным USB на борту, и пишем ему программу "с нуля". Еще и дрова для используемой ОС. Зато в этом случае будет самый легальный метод (в частности многие usb midi фабричные клавиатуры устроены подобным образом).
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: MIDI контроллер

Сообщение BCluster »

Лучше покажите пример работы с динамической клавиатурой ))) А то работы много, некогда взяться )
Аватара пользователя
B@R5uk
Собутыльник Кота
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Re: MIDI контроллер

Сообщение B@R5uk »

Очестратор писал(а):Как основу можно взять вот этот http://avargesnano.narod.ru/3/MIDI-DJ-CJ-CONTROLLER-3.0.html

Большое СПАСИБО! Вот от этого уже можно отталкиваться, как раз то, что я хотел.
Очестратор
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт апр 19, 2012 12:08:44
Откуда: г.Киселевск

Re: MIDI контроллер

Сообщение Очестратор »

B@R5uk, не за что :)

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

Для чего нужны диоды и как организуется динамический опрос на обычной двумерной клаве надеюсь, вы знаете. Это описано в любом самоучителе по МК. А тут у нас - просто две клавы.
По конструктиву может быть как две пары контактов на клавишу, так
и "переключающий" контакт на 2 положения. Рассмотрим самый простой вариант
клавиатуры с одной клавишей. Заранее условимся, что верхний контакт при отжатой клавише у нас замкнут, нижний - разомкнут.
1.Поймать момент размыкания верхнего контакта. Записываем в массив номер ноты и текущее значение системного 16 разрядного таймера МК, который считает по кругу и едем далее.
2. Ни один контакт не замкнут (на деле это 1-2 мм хода клавиши).
Ждем замыкание нижнего контакта или верхнего.Если замкнулся верхний контакт - сбрасываем номер ноты в массиве и выходим к п.1.
3.Если замкнулся нижний контакт, захватываем текущее значение системного таймера и вычисляем разницу между "старым" и "новым" = это уже почти готовое velocity только сырое. Ну и конечно, нужно учитывать переход таймера через ноль, это уже тонкости программирования.
4.Обычно значение громкости клавиши не шлется напрямую, а коррелируется через график, который может быть линейным, логарифмическим, обратнологарифмическим,ступенчатым и т.д. В общем случае, приводим показания таймера к значению 0-127, которое и будет являться искомым velocity. Так как таймер у нас 16-битный, можно его настроить таким образом, чтобы он переполнялся каждые 5 секунд. В любом случае, velocity там будет очень мелкое, около 1. Диапазоны измерений времени нажатия: стаккато 0.01 сек, легато 3-5сек. Вот отсюда и пляшем.
5.Отправляем посылку NOTE ON в компьютер\секвенсор\синтезатор.
6. Далее ждем размыкания нижнего контакта и замыкания верхнего. Тут уже время считать не нужно, будем считать, что при замыкании верхнего контакта музыкант отжал клавишу.Как только это произошло, отправляем NOTE OFF.

Это - общий принцип. Для кучи клавиш нам понадобится всего лишь перебирать ногами контроллера, считывать показания входов и кидать значение в массив. В принципе, алгоритм не сильно усложнится. Главная суть в вышеприведенном методе - то, что не нужно программно бороться с дребезгом контактов. Т.е. можно сканировать на максимальной скорости. Ложные срабатывания в силу использования двух контактов и строгой их очередности нажатия, фактически исключены. А поскольку не нужно будет тупить, ожидая пока пройдет дребезг, можно организовать еще ряд фишечек на том же МК, как-то: колеса модуляции и громкости, жк экран и т.д.
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: MIDI контроллер

Сообщение BCluster »

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

По этому делу есть какие-то данные? У меня были проблемы с подбором зависимости...
Диапазоны измерений времени нажатия: стаккато 0.01 сек, легато 3-5сек. Вот отсюда и пляшем.

Ну уж слишком шировкий диапазон мне кажется... Плюс к тому думаю индивидуально. У меня например контакты оч близко друг к другу
Очестратор
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт апр 19, 2012 12:08:44
Откуда: г.Киселевск

Re: MIDI контроллер

Сообщение Очестратор »

BCluster, можно использовать табличный метод. Забить несколько табличек заранее вычислив их. И не придется грузить ядро мудреной математикой. Вычислить можно в том же Маткаде.

Диапазон измерений тут действительно надо подбирать опытным путем, ведь зависит еще и от расстояния между контактами. Вообще механика тут сильно влияет даже на простой пружинной клаве. Основные фазы хода клавиши:
1. От верхнего упора вниз X мм до размыкания верхнего контакта.
2. Расстояние от размыкания верхнего контакта до замыкания нижнего.
3. Ход до упора вниз, зажат нижний контакт.
Вот в зависимости от этих данных следует подбирать переменные.

А еще график велосити позволяют обрабатывать уже в компьютере программы-хосты. Например, это реализовано в Steinberg Grand Piano или Cubase - по сути это даже удобнее, видишь график, тут же по ощущениям рисуешь его или ломаешь как угодно. А клавиатура при этом выдает строго линейное велосити без всяких обработок. Можно и так.
Antonio kotE
Родился
Сообщения: 1
Зарегистрирован: Вс июл 15, 2012 12:02:53

Re: MIDI контроллер

Сообщение Antonio kotE »

Доброва времени суток :) собрал контроллер usb 3.0 от avarges, работает хорошо, определяется, но частенько бывают беспричинные на мой взгляд зависания контроллера, т.е. прекращает обновляться информация на дисплее и по midi прекращает передаваться информация. Помогает только повторное включение. В чем причина может быть ??? :cry: не могу понять никак
Очестратор
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт апр 19, 2012 12:08:44
Откуда: г.Киселевск

Re: MIDI контроллер

Сообщение Очестратор »

Хм. Я не повторял ту конструкцию, но сдается мне, виснет контроллер. А причин тысячи - может быть и программный глюк, может быть и неоптимальная разводка, может быть и с портом USB на компе что-то. Попробуй искусственно вызвать это зависание, если таки вообще никакой логики прослеживаться не будет, тогда есть вероятность что где-то косяк в монтаже (например плохо припаянная нога).
Burenkov
Родился
Сообщения: 5
Зарегистрирован: Пт авг 31, 2012 14:56:18
Контактная информация:

Re: MIDI контроллер

Сообщение Burenkov »

Выложу свою статью на эту тему, может быть кому то будет интересно. Проект правда для гитарных миди контроллеров, особенность в использовании преимущественно кнопок, а не потенциометров и фейдеров, но работа с ацп описана. В доке есть ссылки на исходники. Хотелось бы развить этот проект именно как open hardware/software, если появятся заинтересованные люди буду рад сотрудничеству!
http://bjdevices.ru/manuals/BJ_Devices_ ... _Guide.pdf
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: MIDI контроллер

Сообщение isx »

Я вот тут поразмыслил и понял, что если делать Диджейский пульт, то лучше сделать отдельно микшер и отдельно вертаки. Можно конечно и на вертаки навешать несколько кнопочек, но не много и вертаки обязательно надо делать на аппаратном USB, иначе будут сильно тупить и пролетать при вращении. Решил возобновить свой проект, но исключить вертаки. Должно получится 256 кнопок и 96 резюков (это максимальное количество, конечно можно все и не ставить). Всё будет с динамическим опросом, поэтому одновременно можно нажимать сколько угодно кнопок, пока Атмега не зависнет :) . Вообщем проблем возникнуть не должно, схема будет примитивная - МК, обвязка для программного USB и 8 мультиплексоров для максимального количества крутилок.
Была мысль перевести на дисплей, но не хватает ног. А потом подумал, в принципе он только для "понтов" стоять будет.
К чему я это всё написал? Остались свободные 3 цифровые ноги (и можно одну-две из АЦП взять, 64 резюка я думаю всё равно хватит за уши). Может есть какие-нибудь мысли, чем интересным можно эти ноги забить?
Burenkov
Родился
Сообщения: 5
Зарегистрирован: Пт авг 31, 2012 14:56:18
Контактная информация:

Re: MIDI контроллер

Сообщение Burenkov »

isx писал(а):Я вот тут поразмыслил и понял, что если делать Диджейский пульт, то лучше сделать отдельно микшер и отдельно вертаки. Можно конечно и на вертаки навешать несколько кнопочек, но не много и вертаки обязательно надо делать на аппаратном USB, иначе будут сильно тупить и пролетать при вращении. Решил возобновить свой проект, но исключить вертаки. Должно получится 256 кнопок и 96 резюков (это максимальное количество, конечно можно все и не ставить). Всё будет с динамическим опросом, поэтому одновременно можно нажимать сколько угодно кнопок, пока Атмега не зависнет :) . Вообщем проблем возникнуть не должно, схема будет примитивная - МК, обвязка для программного USB и 8 мультиплексоров для максимального количества крутилок.
Была мысль перевести на дисплей, но не хватает ног. А потом подумал, в принципе он только для "понтов" стоять будет.
К чему я это всё написал? Остались свободные 3 цифровые ноги (и можно одну-две из АЦП взять, 64 резюка я думаю всё равно хватит за уши). Может есть какие-нибудь мысли, чем интересным можно эти ноги забить?

Можно через сдвиговый регистр подключить сколько угодно семисегментников - полноценный дисплей получится. Можно обойтись двумя ногами, но можно использовать три ноги (OE на регистре), чтобы не мерцало при перерисовке
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: MIDI контроллер

Сообщение isx »

Семисигмент это не интересно... Я думал если символьник подключу, то можно было бы шкалу сделать, чтоб визуально показывала текущее положение потенциометра или кнопки. Но, всё же и это бесполезная вещь...
Аватара пользователя
headshotbacs
Вымогатель припоя
Сообщения: 641
Зарегистрирован: Пт ноя 28, 2008 20:34:39
Откуда: Краматорск

Re: MIDI контроллер

Сообщение headshotbacs »

isx писал(а):Семисигмент это не интересно... Я думал если символьник подключу, то можно было бы шкалу сделать, чтоб визуально показывала текущее положение потенциометра или кнопки. Но, всё же и это бесполезная вещь...


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

Изображение
Вложения
сjdjmidi2.0.jpg
(102.9 КБ) 1255 скачиваний
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: MIDI контроллер

Сообщение isx »

Д просто так :))
Не знаю чем можно ноги занять свободные... Может есть другие мысли, кроме дисплея?
Аватара пользователя
liv6125
Встал на лапы
Сообщения: 115
Зарегистрирован: Сб май 02, 2009 22:25:22
Откуда: Орловская область г. Ливны
Контактная информация:

Re: MIDI контроллер

Сообщение liv6125 »

как насчет индикации :)
Burenkov
Родился
Сообщения: 5
Зарегистрирован: Пт авг 31, 2012 14:56:18
Контактная информация:

Re: MIDI контроллер

Сообщение Burenkov »

на фейдеры вот такие штуки можно поставить) имхо нтересно будет выглядеть http://catalog.gaw.ru/index.php?page=co ... l&id=17788
вот еще что можно поставить http://avpg2.homepage.t-online.de/img/RS60N11M9_2.JPG
но это конечно дороговато
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: MIDI контроллер

Сообщение isx »

liv6125 писал(а):как насчет индикации

А что, так сказать, "индицировать" то будем? :)
Burenkov писал(а):вот еще что можно поставить http://avpg2.homepage.t-online.de/img/RS60N11M9_2.JPG
но это конечно дороговато

А зачем так напрягаться то? Будут стоять простые потенциометры, только не радиальные, а линейные. У меня в прошлом проекте такие стояли, и работали отлично :)
Burenkov
Родился
Сообщения: 5
Зарегистрирован: Пт авг 31, 2012 14:56:18
Контактная информация:

Re: MIDI контроллер

Сообщение Burenkov »

Ну хз, просто кроме чегонить светодиодного, или вот этой фигни к миди контроллеру вроде и не поключишь
Ответить

Вернуться в «Интеграция с ПК»