Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить

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

Ср мар 05, 2014 19:38:59

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

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

Ср мар 05, 2014 22:43:22

Тут нужно искать не мощнее, а с аппаратным usb, или делать на двух микроконтроллерах: один выдаёт миди сигналы, а другой преобразовывает их в usb. Этим я сейчас и занимаюсь. А при 30 канал, думаю тормозить не так сильно будет как при 48. Вы пробовали?

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

Чт мар 06, 2014 00:22:22

Собрал на двух контроллерах и огорчился. Оказалось, что тормозит не из-за софтового usb, а из-за АЦП, очень много времени уходит на опрос стольких каналов.

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

Чт мар 06, 2014 21:37:55

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

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

Сб мар 08, 2014 18:04:54

Я это и имел ввиду, 16 Мгц мало.

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

Сб мар 08, 2014 18:13:39

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

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

Чт мар 20, 2014 16:20:46

всем привет! я микроконтроллеры осваивать только начинаю, но смог собрать контроллер третьей версии по схеме Avargesа, на atmega8 и одном мультиплексоре (он заработал!!), подскажите как изменить прошивку, чтобы поставить второй мультиплексор, или поделитесь уже готовой если не жалко. буду очень признателен за помощь :))

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

Пн мар 24, 2014 15:54:46

:facepalm: Опять.... Прочтите последние 2 страницы хотя-бы...

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

Ср мар 26, 2014 00:35:37

http://avargesnano.narod.ru/3/MIDI-DJ-C ... R-3.0.html
прочитай внимательно и все вопросы отпадут сами собой

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

Пн мар 31, 2014 12:08:55

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

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

Пн мар 31, 2014 12:15:00

Вот фото моего контроллера
http://s019.radikal.ru/i629/1403/00/47ba687b6b71.jpg

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

Вт апр 01, 2014 18:09:08

А никто не пробовал всё это дело собирать на STM32? Может есть желающие? Можно объединиться :)

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

Вт апр 01, 2014 23:11:51

Начинаю осваивать STM. На той неделе отладчик прилетел, да только вот времени пока нет..(

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

Ср апр 02, 2014 09:40:48

Я тоже прикупил stm32f4discovery и несколько чипов из линейки f100, потихонечку осваиваю, но тоже нет времени(

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

Вт май 13, 2014 13:21:53

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 шине все остальное на нее повешенное.

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

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

Ничего не забыл?

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

Ср май 14, 2014 00:05:03

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

А в чём вопрос/проблема?

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

Ср май 14, 2014 22:36:24

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), ковыряюсь с периферией и тем что выдавать в порт.

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

Чт май 15, 2014 02:34:35

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

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

Чт май 15, 2014 10:49:14

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 мк?
!!!ничего!!! - дружно и очень быстро будут в параллель пережевывать входные данные...

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

Чт май 15, 2014 14:58:58

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

В начале был создан этот девайс 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
Ответить