MIDI контроллер

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
кирилл555
Встал на лапы
Сообщения: 101
Зарегистрирован: Вс сен 18, 2011 17:31:19

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

Сообщение кирилл555 »

а можно просто поставить атмегу по мощнее, чтобы хотя бы каналов 30 было?
[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x20.gif[/img][/url]
staba
Родился
Сообщения: 19
Зарегистрирован: Сб фев 01, 2014 21:50:39

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

Сообщение staba »

Тут нужно искать не мощнее, а с аппаратным usb, или делать на двух микроконтроллерах: один выдаёт миди сигналы, а другой преобразовывает их в usb. Этим я сейчас и занимаюсь. А при 30 канал, думаю тормозить не так сильно будет как при 48. Вы пробовали?
staba
Родился
Сообщения: 19
Зарегистрирован: Сб фев 01, 2014 21:50:39

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

Сообщение staba »

Собрал на двух контроллерах и огорчился. Оказалось, что тормозит не из-за софтового usb, а из-за АЦП, очень много времени уходит на опрос стольких каналов.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Это не из-за ацп, а от такого количества мультиплексоров. Мощнее нужен МК.
staba
Родился
Сообщения: 19
Зарегистрирован: Сб фев 01, 2014 21:50:39

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

Сообщение staba »

Я это и имел ввиду, 16 Мгц мало.
staba
Родился
Сообщения: 19
Зарегистрирован: Сб фев 01, 2014 21:50:39

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

Сообщение staba »

Ради интереса попробовал собрать всё это дело на atmega 128, оставил 16 каналов для переменников и сделал 24 кнопки. Работать можно. Сравнивая с некоторыми заводскими есть даже и преимущества, например энкодер без инерции работает.
Диджей
Родился
Сообщения: 3
Зарегистрирован: Вт апр 16, 2013 15:15:20

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

Сообщение Диджей »

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

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

Сообщение isx »

:facepalm: Опять.... Прочтите последние 2 страницы хотя-бы...
voronin_10
Родился
Сообщения: 4
Зарегистрирован: Ср мар 26, 2014 00:21:14

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

Сообщение voronin_10 »

http://avargesnano.narod.ru/3/MIDI-DJ-C ... R-3.0.html
прочитай внимательно и все вопросы отпадут сами собой
Диджей
Родился
Сообщения: 3
Зарегистрирован: Вт апр 16, 2013 15:15:20

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

Сообщение Диджей »

Собрал я наконец контроллер на atmega8, использую два мультиплексора. с прошивкой помог staba, за что ему огромное спасибо! Вот прошивка для ATmega8 на два мультиплексора и два энкодера, еще на 19 ноге МК висит светодиод. пользуйтесь, кому надо
Вложения
midi16%2B6%2Bled.hex
(9.25 КБ) 579 скачиваний
Диджей
Родился
Сообщения: 3
Зарегистрирован: Вт апр 16, 2013 15:15:20

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

Сообщение Диджей »

Вот фото моего контроллера
http://s019.radikal.ru/i629/1403/00/47ba687b6b71.jpg
staba
Родился
Сообщения: 19
Зарегистрирован: Сб фев 01, 2014 21:50:39

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

Сообщение staba »

А никто не пробовал всё это дело собирать на STM32? Может есть желающие? Можно объединиться :)
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Начинаю осваивать STM. На той неделе отладчик прилетел, да только вот времени пока нет..(
staba
Родился
Сообщения: 19
Зарегистрирован: Сб фев 01, 2014 21:50:39

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

Сообщение staba »

Я тоже прикупил stm32f4discovery и несколько чипов из линейки f100, потихонечку осваиваю, но тоже нет времени(
Аватара пользователя
Cat346
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Чт ноя 12, 2009 21:00:32
Откуда: С луны упал.

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

Сообщение Cat346 »

isx писал(а):Это не из-за ацп, а от такого количества мультиплексоров. Мощнее нужен МК.


Здравствуйте.
Наткнулся на данную ветку форума собрав на макетке MIDI-DJ-CJ-CONTROLLER-2
опишу что получилось ниже, а вопросы вынесу в начало поста.

1) Ни у кого случаем нет исходника от MIDI-DJ-CJ-CONTROLLER-2 ?
2) Ни у кого случаем нет исходника от MIDI-DJ-CJ-CONTROLLER-3 (желательно под WinAvr) с установленным свежим USB блоком?
3) Какова логика работы с энкодером? Принимаем значение от компа и копию храним у себя, а если энкодер крутили то выдаем
принятое ранее значение с инкрементом или декриментом? Или как в комповой мышке направление и значение смещения?
4) Какие значения управляющих байтов в пакете оптимально использовать под свои энкодеры, кнопки и файдеры?
В MIDI-DJ-CJ-CONTROLLER-2 были задействованы B0 5A 3C = Control90 60, B0 5B 01 = ReverbDepth 1 и т.д.

Описание - на winXP программа контроля от MIDI-DJ-CJ-CONTROLLER-2 не видит девайс в упор
(как на чистых ХР 32х SP1 или SP2 так и последних звериных сборках SP3, зато работает и в win 7 32х и в win 8 64х).
USB блок интегрированный в MIDI-DJ-CJ-CONTROLLER-2 - допотопный. И отсюда проблемы со спячкой и выдачей конфиг
дескриптора (смотрел на USBlyzer2.1) на всех вин, а под winXP работает не со всеми программами (просто не видит USB коннекта).

Почему сам не пересоберу исходник от MIDI-DJ-CJ-CONTROLLER-3 ?
1) Я СИ не знаю 2) Посмотрев код MIDI-DJ-CJ-CONTROLLER-2 на асме пришел к выводу что на асме его можно написать в 3 раза
компактнее и как следствие результат будет в 2 раза быстрее.

Для чего мне MIDI-DJ-CJ-CONTROLLER-2 под winXP?
Смотрю обмен между программами контроля и железкой все тем же USBlyzer2.1 и переделываю свой исходник на асме с мк
имеющим аппаратный USB 2.0 (AT90usb162) под данный тип обмена.

Почему у всех на 40 каналов тормоза?
Но на 40 каналов тормозит не столько медленный софтовый USB, не тормознутый код на СИ написанный без прерывания по АЦП
или недостаток частоты тактирования (16 мегагерц для проекта выше крыши) а тормознутый встроенный в мегу АЦП и еще более
тормознутый коммутатор, которых не хватает быстро переживать 40 каналов.

Что я хочу сделать?
На данный момент я прорабатываю вопрос возможности создать USB - MIDI клавиатуру для программы qlcplus 4.7.0
Но что бы данную клавиатуру можно было бы использовать в качестве самостоятельной DMX консоли
И далее возможно несколько вариантов - сложный и понятный = со своими мозгами на меге и файлами на SD карточке
и простой зато неизученный c утрамбованной в арм пакет qlcplus 4.7.0 запихнутый в Cubieboard A20 с той же самой SD карточкой.

На чем можно реализовать?
Исходя из возможности заказа печатных плат и возможности вырезать любой корпус на лазерном прессе и покрасить его в любой цвет
порошковой краской, прихожу к выводу о целесообразности модульной конструкции (в первой сборке 10 файдеров + 20 энкодеров
+ 20 кнопок в энкодерах + 20 самостоятельных кнопок + 4 оси + 116 светодиодов) вся обвязка I2C шинкой.

пока теоретически конструкцию вижу вида:

По краям два тачевых модуля которые нужны для одновременного контроля угла поворота и склонения двух DMX голов с двух рук.
(на профессиональных DMX консолях под это приспособлен джойстик или трекбол) Т.е. нечто на подобие продаваемого Vmetr но
на 2 координаты = 2 оси обслуживающие каждый 48 светодиодов и 2х координатный мультитачевый емкостной тачскрин на bf6852a.
Дисплея под тачем не будет (все равно все управление на ощупь т.к. все внимание за синхронизацией эффектов на сцене)
Под тачем размещу только 2 линейки светодиодов и подсвеченную панельку из орг. стекла с цифрами 0-9.

по центру несколько (в первой версии два) аналоговых модулей на основе меги16 несущих на борту 5 файдеров (ползунковых резистора),
10 кнопок (в первой версии макс и мин значение файдера при нажатии) и 10 светодиодов (под каждой кнопкой).
(только 5файдеров на мегу, что бы получить минимальное время опроса всех файдеров работая с встроенным в мегу АЦП)

над каждым аналоговым модулем модуль энкодеров на основе меги16 несущий на борту 10 энкодеров.

В качестве ведущего модуля плата на AT90usb162 ведущая по I2C шине все остальное на нее повешенное.

выше была теория, а практически - если время на реализацию у меня будет + у знакомых необходимость в миди клавиатуре не отпадет.

Городить большой проц, внешнее АЦП и кучу проводов к кучи элементов управления - считаю бессмысленным, проще
в готовую плату запаять готовые компоненты, запихнуть их в вырезанный прессом = готовый корпус и не возиться с проводами
и напильником совсем.

Ничего не забыл?
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Cat346 писал(а):1) Я СИ не знаю 2) Посмотрев код MIDI-DJ-CJ-CONTROLLER-2 на асме пришел к выводу что на асме его можно написать в 3 раза
компактнее и как следствие результат будет в 2 раза быстрее.

А в чём вопрос/проблема?
Аватара пользователя
Cat346
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Чт ноя 12, 2009 21:00:32
Откуда: С луны упал.

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

Сообщение Cat346 »

isx писал(а):А в чём вопрос/проблема?


1) Ни у кого случаем нет исходника от MIDI-DJ-CJ-CONTROLLER-2 ?

2) Ни у кого случаем нет исходника от MIDI-DJ-CJ-CONTROLLER-3 (желательно под WinAvr) с установленным свежим USB блоком?
(сам я его туда не поставлю, со время сборки автором юсб сильно изменился.... а си я не знаю)

3) Какова логика работы с энкодером? Принимаем значение от компа и копию храним у себя, а если энкодер крутили то выдаем
принятое ранее значение с инкрементом или декриментом? Или как в комповой мышке направление и значение смещения?

4) Какие значения управляющих байтов в пакете оптимально использовать под свои энкодеры, кнопки и файдеры?
В MIDI-DJ-CJ-CONTROLLER-2 были задействованы B0 5A 3C = Control90 60, B0 5B 01 = ReverbDepth 1 и т.д.

Важны пункты 3 и 4.
USB на AT90usb162 с миди дескриптором уже поднял (клон MIDI-DJ-CJ-CONTROLLER-2), ковыряюсь с периферией и тем что выдавать в порт.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Под третью версию исходники как раз ВИНАВР. USB там только вирт., не видел чтоб кто-то переделывал его на аппаратный.
Энкодер работает так: МК вычисляе направление вращения и в зависимости от этого подаёт на комп либо одно значение либо другое.
Алгоритм формирования значений каналов у меня есть в моей модификации прошивки (там практически рандом), если надо, то могу выложить часть кода, но это возможно только на следущей неделе получится. Код на СИ.
А вообще, прочтите тему, хотябы последние три страницы, и задумайтесь, что будет с вашими энкодерами при такой загрузке МК.....
Аватара пользователя
Cat346
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Чт ноя 12, 2009 21:00:32
Откуда: С луны упал.

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

Сообщение Cat346 »

isx писал(а):Под третью версию исходники как раз ВИНАВР.


Где их можно скачать в полном виде? На сайте автора архив 14102011-sources-djcjmidi3.zip от 2011 в который надо добавить исходники с др. сайтов.
я сам на СИ не работаю, могу попросить собрать в хекс, что то готовое, собирать с разных сайтов и стыковать что изменилось из моих знакомых никто не будет.

isx писал(а):USB там только вирт., не видел чтоб кто-то переделывал его на аппаратный.


цитата моего поста выше
USB на AT90usb162 с миди дескриптором уже поднял (клон MIDI-DJ-CJ-CONTROLLER-2)

это аппаратный USB на основе мною написанного на асме USB кода (без сторонних библиотек)

isx писал(а):Энкодер работает так: МК вычисляе направление вращения и в зависимости от этого подаёт на комп либо одно значение либо другое.
Алгоритм формирования значений каналов у меня есть в моей модификации прошивки (там практически рандом), если надо, то могу выложить часть
кода, но это возможно только на следущей неделе получится. Код на СИ.


помехозащищенный алгоритм опроса энкодера (по 4 состояниям с фильтрацией дребезга) у меня давно работает...
и мк вычисляет значение и направление... пережевывает и пакует для отправки...

проблема в том, что у меня не один энкодер...
что слать на 1 энкодер я из 14102011-sources-djcjmidi3.zip отковырял.

Код: Выделить всё

if (En == 2) { // энкодер влево
   midiMsg[iii++] = 0x0b;
   midiMsg[iii++] = 0xb0+(midiPst[13] & 0x0F); // chanel
   midiMsg[iii++] = midiPst[13+0x10]; // control#
   midiMsg[iii++] = 0x00;
   freeslot--;
}
   if (En == 1) { // энкодер вправо
   midiMsg[iii++] = 0x0b;
   midiMsg[iii++] = 0xb0+(midiPst[13] & 0x0F); // chanel
   midiMsg[iii++] = midiPst[13+0x10]; // control#
   midiMsg[iii++] = 0x7F;
   freeslot--;
}


1) а что делать если у меня их 20 шт и более? какие управляющие байты общеприняты?

2) а что делать с обратной связью (отображение на светодиодах состояния регулируемых величин)?
или энкодеры передавать как файдеры с фиксированным значением?
Так же как в MIDI-DJ-CJ-CONTROLLER-2 кнопки и резисторы опрашивались....

isx писал(а):А вообще, прочтите тему, хотябы последние три страницы, и задумайтесь, что
будет с вашими энкодерами при такой загрузке МК.....


А почитать мой пост ВНИАМТЕЛЬНО?

у меня
на каждые 10 энкодеров 1 мк
на каждые 5 резисторов 1 мк
на каждые 2 оси 1 мк
и один ведущий на USB шину причем с аппаратным USB, а не софтовым тормозом.
И это АСМ а не СИ.

что будет с моими 10-20 мк?
!!!ничего!!! - дружно и очень быстро будут в параллель пережевывать входные данные...
Аватара пользователя
Cat346
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Чт ноя 12, 2009 21:00:32
Откуда: С луны упал.

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

Сообщение Cat346 »

Может кому понадобится... Просто докопался до хронологии...

В начале был создан этот девайс http://cryptomys.de/horo/V-USB-MIDI/

С небольшими изменениями И ЗАТЕРАНИЕМ АВТОРСТВА его исходник был переименован в этот http://avargesnano.narod.ru/MIDI-DJ-CJ- ... R-2.0.html
а потом и в ЭТОТ http://avargesnano.narod.ru/3/MIDI-DJ-C ... R-3.0.html

Если сравнить исходники, то в 3 версии осталось 70% кода от оригинала.
дескрипторы и юсб часть из оригинала перекочевала 1 в 1
Ответить

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