
MIDI контроллер
- goodspeedmen
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Вс дек 13, 2009 01:04:42
- Контактная информация:
Re: MIDI контроллер
вот нашол на просторах интернета интересную схему динамической миди клавиатуры http://midi.rni.ru/keyb.html это не реклама может кто в протеусе с эмулирует. 

Голосовой чат.
Re: MIDI контроллер
To All
Хочу делать по схеме Avargesa на 16меге...
http://avargesnano.narod.ru/MIDI-DJ-CJ- ... R-2.0.html
Как упростить эту схему (и код?) чтобы на 4 потенциометра было только? без кнопок, индикации и миди выхода
И возможно ли переделать это всё на контроллер по проще по типу меги8 ?
з.ы. юсб обязателен
Хочу делать по схеме Avargesa на 16меге...
http://avargesnano.narod.ru/MIDI-DJ-CJ- ... R-2.0.html
Как упростить эту схему (и код?) чтобы на 4 потенциометра было только? без кнопок, индикации и миди выхода
И возможно ли переделать это всё на контроллер по проще по типу меги8 ?
з.ы. юсб обязателен
-
spongebob
- Грызет канифоль
- Сообщения: 289
- Зарегистрирован: Пт мар 20, 2009 12:25:47
- Откуда: Ivanovo
- Контактная информация:
Re: MIDI контроллер
код имхо обрезать не придётся
потенциометры ненужные выкидываеш, освободившиеся от них ноги МК вешаеш на землю
кнопки и индикацию выкидываеш, миди выкидываеш.
а на мегу8 портнётся без проблем, имхо
потенциометры ненужные выкидываеш, освободившиеся от них ноги МК вешаеш на землю
кнопки и индикацию выкидываеш, миди выкидываеш.
а на мегу8 портнётся без проблем, имхо
Re: MIDI контроллер
Товарищ Avarges не могли бы Вы выложить полный проект для компилятора на котором писали,а то в хексе ничего не ясно
И если есть фото внутренностей конечное то тоже было бы оч круто
Я думаю не один я скажу вам спасибо
И если есть фото внутренностей конечное то тоже было бы оч круто
Я думаю не один я скажу вам спасибо

- Avarges
- Вымогатель припоя
- Сообщения: 512
- Зарегистрирован: Вт дек 22, 2009 02:24:50
- Контактная информация:
Re: MIDI контроллер
MTBiker писал(а):Товарищ Avarges не могли бы Вы выложить полный проект для компилятора на котором писали,а то в хексе ничего не ясно
И если есть фото внутренностей конечное то тоже было бы оч круто
Я думаю не один я скажу вам спасибо
Исходники у меня в некрасивом состоянии, поэтому лучше для модификаций и собственных разработок брать базовый вариант, от которого отталкивался и я это V-USB-MIDI в гугле (и здесь в теме есть).
Re: MIDI контроллер
Кто может подсказать по поводу ошибки :
"Устройство usb неопознано
Это устройство было остановлено, поскольку оно сообщило о возникновении неполадок. (Код 43)"

Вроде всё правильно ... В чём ошибка, подскажите
Avarges
Не очень понятно, эти детали необязательны? или только c3
"Устройство usb неопознано
Это устройство было остановлено, поскольку оно сообщило о возникновении неполадок. (Код 43)"

Вроде всё правильно ... В чём ошибка, подскажите
Avarges
Также имеются дополнительные детали: C3 (4.7мКф*6.3В)- электролитический конденсатор, служит для стабилизации напряжения питания, C4 (0.1мКф)- керамический конденсатор, защищает микроконтроллер от высокочастотных помех по линии питания, R18 - обеспечивает помехозащищенную логическую единицу на ножке сброса микроконтроллера (если подать логический ноль, тогда микроконтроллер перезагрузится: начнёт программу с начала)
Не очень понятно, эти детали необязательны? или только c3
- Avarges
- Вымогатель припоя
- Сообщения: 512
- Зарегистрирован: Вт дек 22, 2009 02:24:50
- Контактная информация:
Re: MIDI контроллер
MTBiker писал(а):Avarges зачем два кондёра c3, c4 , который из них использовать ?
Вообще-то оба, электролит обычно ставят, чтобы сгладить напряжение после выпрямителя, а керамический около 100нФ чтобы зашунтировать высокочастотные помехи в цепи питания, которые чаще всего возникают из-за скачка тока при переключение выходов самой микросхемы между логическими уровнями.
Re: MIDI контроллер
Avarges посмотри по внимательней они на твоей схеме стоят параллельно, только в разных частях платы
Может у тебя на сайте не доработанная схема выложена?
Кстати есть те кто собрал по Avargesовской схеме рабочий контроллер?
Может у тебя на сайте не доработанная схема выложена?
Кстати есть те кто собрал по Avargesовской схеме рабочий контроллер?
- Avarges
- Вымогатель припоя
- Сообщения: 512
- Зарегистрирован: Вт дек 22, 2009 02:24:50
- Контактная информация:
Re: MIDI контроллер
Всё правильно, их и ставят параллельно, при этом на плате разумнее ставить электролит ближе к источнику питания, а керамику как можно ближе к микросхеме, это всё тонкости радиотехники.
- EternalEngine
- Грызет канифоль
- Сообщения: 266
- Зарегистрирован: Пн фев 02, 2009 08:19:53
- Откуда: Москва
- Контактная информация:
Re: MIDI контроллер
Уважаемый товарищ Avarges, а не могли бы вы рассказать как устроен обмен данных с программой на стороне контроллера? вы используете Sys Ex?
Тоже сейчас занимаюсь написанием прогррамммы под свою миди клавиатуру (в силу гибели залитой пивом аппаратной части
, да заодно и для повышения собственной квалиффикации в устройстве шины усб
)
Есть желание сделать опцию, чтоб можно было назначать из программы номера СС на VST инструменты секвенсора не выходя из последнего. Хочу реализовать два виртуальных миди кабеля. один чтоб работал с упр. программой, а другой с секвенсором.
Есть также дискрипторы для двух виртуальных усб миди на одной конечной точке для контроллера С80, но портировать на тот код что выложен на страничке V-Busа невыходит (сразу видно не русский человек писал
). Никак не могу разобраться с тамошним синтаксисом.
Вы уже модифицировали это устройство, для русского ума
и я был бы вам очень признателен, если бы вы могли пояснить как организована эта библиотека, какие её функции за что отвечают, их синтаксис и порядок вызова.
Сам пишу на дельфи и Qt для ПК, на CodeVision для AVR. Возможно я бы мог быть вам полезен в портировании вашей программы на Mac OS X.
Тоже сейчас занимаюсь написанием прогррамммы под свою миди клавиатуру (в силу гибели залитой пивом аппаратной части
Есть желание сделать опцию, чтоб можно было назначать из программы номера СС на VST инструменты секвенсора не выходя из последнего. Хочу реализовать два виртуальных миди кабеля. один чтоб работал с упр. программой, а другой с секвенсором.
Есть также дискрипторы для двух виртуальных усб миди на одной конечной точке для контроллера С80, но портировать на тот код что выложен на страничке V-Busа невыходит (сразу видно не русский человек писал
Вы уже модифицировали это устройство, для русского ума
Сам пишу на дельфи и Qt для ПК, на CodeVision для AVR. Возможно я бы мог быть вам полезен в портировании вашей программы на Mac OS X.
- Avarges
- Вымогатель припоя
- Сообщения: 512
- Зарегистрирован: Вт дек 22, 2009 02:24:50
- Контактная информация:
Re: MIDI контроллер
SysEx я не использовал. Я просто посылаю миди команду "Ex" в устройство, сначала посылаю заранее известный дескриптор "старт байт", потом засылаю данные и адреса, потом "стоп-байт", всё через эту обычную Ex (питч на x канале, с двумя ASC байтами данных Ex d1 d2). Не нужно начинать с чистого V-USB, лучше взять программу из V-USB-MIDI - там уже описан формат MIDI устройства.
- EternalEngine
- Грызет канифоль
- Сообщения: 266
- Зарегистрирован: Пн фев 02, 2009 08:19:53
- Откуда: Москва
- Контактная информация:
Re: MIDI контроллер
а как насчёт дескриптора для второго виртуального кабеля?
- Avarges
- Вымогатель припоя
- Сообщения: 512
- Зарегистрирован: Вт дек 22, 2009 02:24:50
- Контактная информация:
Re: MIDI контроллер
В дескрипторе я практически не разбирался, вот тут оригинальная программка с дескриптором
http://cryptomys.de/horo/V-USB-MIDI/V-U ... 0.2.tar.gz
внутри кода указана ссылка на пдф файл, в котором описан по английски! формат всех этих миди-юсб дескрпторов, я этот пдф пролистывал и виртуальные миди кабели по одному юсб кабелю это делается точно, но в общем придётся подумать как применить
http://cryptomys.de/horo/V-USB-MIDI/V-U ... 0.2.tar.gz
внутри кода указана ссылка на пдф файл, в котором описан по английски! формат всех этих миди-юсб дескрпторов, я этот пдф пролистывал и виртуальные миди кабели по одному юсб кабелю это делается точно, но в общем придётся подумать как применить
- EternalEngine
- Грызет канифоль
- Сообщения: 266
- Зарегистрирован: Пн фев 02, 2009 08:19:53
- Откуда: Москва
- Контактная информация:
Re: MIDI контроллер
говорю же, у меня есть дескрипторы, правда на с80 (там аппаратный усб есть), но это без разницы. отличаются 4 дополнительными джеками (2 на хост, 2 на контроллер) всё остальное то-же самое. мне нужна помощь чтоб прикрутить их к библиотеке V-BUS, тк разбираться в ней полностью ни времяни ни желания нет. если опять же интересно, могу скинуть на почту, я думаю ты разберёшься. или загляни в ЛС - я там всё расписал.
- VenomXP
- Грызет канифоль
- Сообщения: 293
- Зарегистрирован: Пн дек 24, 2007 07:09:09
- Контактная информация:
Re: MIDI контроллер
тема очень интересная. сам пользуюсь продуктом Guitar Rig но не очень уж удобно переключать эффекты и банки нажатием мышки, приходится постоянно отвлекаться от игры, оригинальный Rig Kontrol стоит порядка 10-15 килорублей, и тратиться на него как-то не очень хочется, хотя там встроенный ADC-DAC и DSP-процессор для обработки звука, хотелось бы повторить данный FootSwitch по средствам V-USB-MIDI, требуется: 10 кнопок, 8 регуляторов, регуляторы подцепить программно оказалось вполне просто, благо в теме вопросы поднимались, а вот на счет кнопок не очень понял структуру команд. проблем с программированием не испытываю, но уж больно не понятен мне процесс обмена и как возможно подцепить кнопки программно. подскажите.
Даташит - библия моя...


- EternalEngine
- Грызет канифоль
- Сообщения: 266
- Зарегистрирован: Пн фев 02, 2009 08:19:53
- Откуда: Москва
- Контактная информация:
Re: MIDI контроллер
Если я тебя правильно понимаю, то кнопка это тот же control change (СС) что и регулятор. значения в диапозоне 0-64 -выкл; 65-127 -вкл.
- VenomXP
- Грызет канифоль
- Сообщения: 293
- Зарегистрирован: Пн дек 24, 2007 07:09:09
- Контактная информация:
Re: MIDI контроллер
то есть получается примерно вот такое:
Код: Выделить всё
while(1)
{
while (!usbInterruptIsReady())
{
usbPoll();
}
if (keyStatus == 1) //key on
{
midiMsg[0] = 0x0B;
midiMsg[1] = 0xB0;
midiMsg[2] = номер_кнопки;
midiMsg[3] = 127;
}
else //key off
{
midiMsg[0] = 0x0B;
midiMsg[1] = 0xB0;
midiMsg[2] = номер_кнопки;
midiMsg[3] = 0;
}
sendEmptyFrame = 0;
usbSetInterrupt(midiMsg, 4);
}Даташит - библия моя...


- EternalEngine
- Грызет канифоль
- Сообщения: 266
- Зарегистрирован: Пн фев 02, 2009 08:19:53
- Откуда: Москва
- Контактная информация:
Re: MIDI контроллер
да, типа того, как один из режимов. ещё можешь посылать 127 при первом нажатии, а при повторном 0. есть ещё режим перебор, я непомню правда как там точно, вроде при нажатии посылается 127 каждый раз. вот почитай.
http://www.muzoborudovanie.ru/articles/midi/midi2.php
здесь полное описание протокола midi. рекомендую прочитать все статьи.
З.Ы. VenomXP, кстать может ты поможешь прикрутить дескриптор?
http://www.muzoborudovanie.ru/articles/midi/midi2.php
здесь полное описание протокола midi. рекомендую прочитать все статьи.
З.Ы. VenomXP, кстать может ты поможешь прикрутить дескриптор?
- VenomXP
- Грызет канифоль
- Сообщения: 293
- Зарегистрирован: Пн дек 24, 2007 07:09:09
- Контактная информация:
Re: MIDI контроллер
огромное спасибо за ссылку!
ну у меня код построен так, что в прерывании идет скан клавиатуры постоянно, поэтому, при нажатии каждый раз будет посылать 127, а когда не нажата постоянно 0. я думаю этого будет достаточно, чтобы хост-прога поняла команды.
всмысле дискриптор, что именно от него требуется?
ну у меня код построен так, что в прерывании идет скан клавиатуры постоянно, поэтому, при нажатии каждый раз будет посылать 127, а когда не нажата постоянно 0. я думаю этого будет достаточно, чтобы хост-прога поняла команды.
всмысле дискриптор, что именно от него требуется?
Даташит - библия моя...


- EternalEngine
- Грызет канифоль
- Сообщения: 266
- Зарегистрирован: Пн фев 02, 2009 08:19:53
- Откуда: Москва
- Контактная информация:
Re: MIDI контроллер
Код: Выделить всё
unsigned char KeyEvent=0;
unsigned char PrevKeyState;
char IsKeyEvent (void);
{
if (PrevKeyState!=KeyState)
KeyEvent=1;
else
KeyEvent=0;
PrevKeyState=KeyState;
return (KeyEvent);
}
//в void main(void)
while(1)
{
while (!usbInterruptIsReady())
{
usbPoll();
}
if (IsKeyEvent()==1)
{
if (PrevKeyState==1) //key on
{
midiMsg[0] = 0x0B;
midiMsg[1] = 0xB0;
midiMsg[2] = номер_кнопки;
midiMsg[3] = 127;
}
else //key off
{
midiMsg[0] = 0x0B;
midiMsg[1] = 0xB0;
midiMsg[2] = номер_кнопки;
midiMsg[3] = 0;
};
};
sendEmptyFrame = 0;
usbSetInterrupt(midiMsg, 4);
}
типа вот так
так же и с потенциометрами. тольк по изменению значения. иначе забьёшь шину, как следствие получишь лаги.