MIDI контроллер

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

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

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

Сообщение staba »

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

Сообщение staba »

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

Сообщение isx »

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

Сообщение staba »

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

Сообщение staba »

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

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

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

Сообщение isx »

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

Сообщение voronin_10 »

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

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

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

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

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

Сообщение staba »

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

Сообщение isx »

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

Сообщение staba »

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

Сообщение 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

Сообщение isx »

Cat346 писал(а):1) Я СИ не знаю 2) Посмотрев код MIDI-DJ-CJ-CONTROLLER-2 на асме пришел к выводу что на асме его можно написать в 3 раза
компактнее и как следствие результат будет в 2 раза быстрее.
А в чём вопрос/проблема?
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 39
Зарегистрирован: Чт ноя 12, 2009 21:00:32
Откуда: С луны упал.

Сообщение 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

Сообщение isx »

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

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

Сообщение 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
Ответить

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