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

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

Пт май 16, 2014 10:06:18

А никто и не претендовал на 100% авторство прошивки, просто каждый исправлял её под свои нужды.
На мой взгляд использовать мегу16 на 5 фейдеров нецелесообразно, так как при каждом переключении внутреннего мультиплексора уйдёт больше времени, чем с использованием внешнего мультиплексора. Можно применить внешний быстрый ацп и несколько мультиплексоров. Да и под энкодеры можно взять мк с большим количеством внешних прерываний (вроде меги 88).

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

Пт май 16, 2014 12:27:26

staba писал(а):А никто и не претендовал на 100% авторство прошивки, просто каждый исправлял её под свои нужды.


:shock:

V-USB-MIDI Software License
The V-USB-MIDI performs the MIDI stream connection over low-speed USB.
The V-USB-MIDI is developed by Martin Homuth-Rosemann.
This program (not including usbdrv) is free software; you can redistribute
it and/or modify it under the terms of the GNU General Public License (GPL2)
as published by the Free Software Foundation. A copy of the GPL version 2
can be found in the appendix of this document.
Since V-USB-MIDI works together with usbdrv, you must follow OBJECTIVE
DEVELOPMENT's license agreement on the occasion of use of this program.
CAUTION
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
Using the MIDI stream over low-speed USB is NOT allowed by the USB
1.x and 2.0 standard. Use at your own risk. There is NO GUARANTEE that
current or future operating systems support MIDI over low speed USB.
Martin Homuth-Rosemann

GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

тут сгрызли кусок....

1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.


2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.


тут сгрызли кусок....


staba писал(а):На мой взгляд использовать мегу16 на 5 фейдеров нецелесообразно, так как при каждом переключении внутреннего мультиплексора уйдёт больше времени, чем с использованием внешнего мультиплексора. Можно применить внешний быстрый ацп и несколько мультиплексоров.


1) Да больше, но не настолько больше что бы не хватило на 5 файдеров....
2) подготовка к производству печатных плат у нас стоит больше чем сами платы... Если я закажу 1 большую это будет стоить дороже чем 5шт мег16 + 5шт мелких плат.
3) не говоря уже о её монтаже и о её разводке

у меня файдеров далеко не 10 и уже похоже что намного больше 20
~ 40-60шт

staba писал(а):Да и под энкодеры можно взять мк с большим количеством внешних прерываний (вроде меги 88).


У меня в девайсе минимум 20шт, а так знакомый думает о 40шт и более
под 20 энкодеров? это 60 ног... и что все на прерывания посадить?
а не проще ли мегу16 с 4 портами = 32 дата ноги и 2 из них на I2C а 30 оставшихся ног на 10 энкодеров?

и в ДИП корпусе - так и платы В РАЗЫ дешевле заказать и пайка дешевле...

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

Пт май 16, 2014 12:50:40

Все же оставшиеся вопросы вынесу в отдельный пост.

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

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

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

У меня кол-во органов управления ГОРАЗДО больше чем у встреченных мной самодельных конструкций.

Такое кол-во оправдано, так как управлять надо шестью созданными нами диммерными блоками (по два диммерных
блока на фазу) и у каждого блока на борту 12 каналов по 2 кВт каждый.

6*12=72 канала * 2 кВт = 144 кВт нагрузки размазанных по 3м фазам.

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

Пт май 16, 2014 15:09:44

Cat346 писал(а):а если энкодер крутили то выдаем
принятое ранее значение с инкрементом или декриментом? Или как в комповой мышке направление и значение смещения?


Первый вариант. Вот только я не понимаю, что именно вы строите, DMX пульт или миди клавиатуру? Если пульт - то не вижу смысла в энкодерах, с фейдерами нагляднее и обратную связь городить не нужно, тем более что DMX таковой и не имеет, да и значений всего 128.
staba писал(а):У меня в девайсе минимум 20шт, а так знакомый думает о 40шт и более
под 20 энкодеров? это 60 ног... и что все на прерывания посадить?
а не проще ли мегу16 с 4 портами = 32 дата ноги и 2 из них на I2C а 30 оставшихся ног на 10 энкодеров?

Ну не 60, а достаточно 20. Если быстродействие не так важно, то можно и на одном мк всё собрать: 64 фейдера, несколько энкодеров влезут и мелкосхему для dmx и вот вам готовое решение. :)

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

Пт май 16, 2014 15:16:51

И посмотрите на проект midibox, там не спроста с атмег на стм32 перескочили, и не садят всего лишь 5 фейдеров на 1 мк. Да и dmx у них присутствует.

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

Сб май 17, 2014 10:52:18

staba писал(а):Вот только я не понимаю, что именно вы строите, DMX пульт или миди клавиатуру?


1 - я горожу самопальную замену DMX пульта, по причине нехватки финансов купить ТЕАТРАЛЬНЫЙ DMX пульт
(который в отличие от китайских мыргалок стоит под 9 кило $)
2 - городить мне намного проще не занимаясь написанием мозгов.... а поставить готовые (линукс пакет qlcplus 4.7.0)
3 - а раз так то мне надо как то загрузить данные в qlcplus 4.7.0 и как то выгрузить их. Если это линукс то делать это
надо стандартными методами. На выгрузку артнет на загрузку MIDI.

staba писал(а):Если пульт - то не вижу смысла в энкодерах, с фейдерами нагляднее и обратную связь городить не нужно,
тем более что DMX таковой и не имеет, да и значений всего 128.


1 - в театре идут сцены... по очереди... файдеры моторизованные стоят очень дорого (45*60шт = 2700$ без доставки)
если нам надо уменьшить какой-то канал который ушел вперед по партитуре, а файдер остался на месте то мы получим
скачек... а не плавное подгручивание...
2 - ДМХ не имеет в прямом смысле этого слова так как 1 файдер в разных сценах управляет разными эфектами а к эфектам
привязаны разные каналы и не факт что линейно... Зато обратную связь имеет МИДИ.
А так же можно поднять свой DMX скаллер и переключать каналы на ручник и крутить их.
3 - на текущем пульте (198х затертого года выпуска с дискетами 5,25") эфекты в отличие от значения ДМХ канала имеют
градацию от 0 до 99 единиц.

staba писал(а):Ну не 60, а достаточно 20. Если быстродействие не так важно, то можно и на одном мк всё собрать
: 64 фейдера, несколько энкодеров влезут и мелкосхему для dmx и вот вам готовое решение. :)


1 - быстродействие важно.
2 - у светорежиссера есть БОЛЬШОЕ желание получить на каждый эффект пару = файдер + энкодер
3 - в "мелкосхему для dmx" не влезут эффекты. Они влезут в интерпретатор бэйсика который можно поднять на отдельном мк...
но это работа на пол года... дешевле, логичнее и проще прилепиться к проге на линуксе

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

Сб май 17, 2014 11:07:20

staba писал(а):И посмотрите на проект midibox, там не спроста с атмег на стм32 перескочили,
и не садят всего лишь 5 фейдеров на 1 мк. Да и dmx у них присутствует.


И что? По ТЗ к текущему проекту их железо не проходит (очень мелкое однако).
Мне ПРОЩЕ и дешевле по комплектухе делать так.
Причем на данном этапе ковыряюсь с проектом бесплатно...

и пока доковыриваю железо, остались нерешенными вопросы по софту:


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

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

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

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

Вс май 18, 2014 12:28:23

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

Какие вам угодно, главное чтоб ваша программа их понимала.
staba писал(а):у светорежиссера есть БОЛЬШОЕ желание получить на каждый эффект пару = файдер + энкодер

Тогда и в этом моменте непонятно такое желание. Если на одном канале будет энкодер и фейдер, то может произойти ситуация подобно той, что вы описали. К примеру фейдер стоит в нулевом положении, энкодером измените значение к примеру до 120, а дернув фейдер значение канала опять вернётся к нулю, и произойдёт резкий скачёк.

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

Вт май 20, 2014 00:11:17

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


А схЭмку дадите?

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

Вт май 20, 2014 10:29:17

Схема на 51-ой странице, последний пост. Ножки PC0 и PC1 входы мультиплексора, к остальным ножкам этого порта можно подключить кнопки.

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

Вт май 27, 2014 16:40:54

Мой алгоритм обработки энкодера от китай мышки, на CodeVisionAVR
Код:
#define   A_Enc PINB.2
#define   B_Enc PINB.3

_____

if(A_Enc == B_Enc)
      {             
        move=1;
        if(!A_Enc)
          begin_position=0;
        else
          begin_position=1; 
      }
      else
      {
       
        if(begin_position)
        {
           if(!A_Enc && B_Enc && move)
           {
             value++;
             move=0;
           }
           if(A_Enc && !B_Enc && move)
           {
             value--;
             move=0;
           }
        }
        else
        {
           if(!A_Enc && B_Enc && move)
           {
             value--;     
             move=0;
           }
           if(A_Enc && !B_Enc && move)
           {
             value++;
             move=0;
           }
           
        }
       
      }

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

Ср май 28, 2014 17:30:53

staba писал(а):Про логику работы я вам уже ответил, вот только хранить данные у себя не нужно, пусть этим софт занимается, а ваш пульт только будет отдавать значение инкремента или декримента определённого канала.


сегодня весь день ковырялся - не вышло (не исключено что чего то не знаю или не так делаю,
плюс долго ловил глюки в кривом дескрипторе - пока не отловил)...

очень давно прошу пояснения по командам... пока пояснения так и не добился...

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


на данный момент о командах на поворот энкодера знаю только это.

Код:
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--;
}


Программа qlcplus для миди формата имеет 3 режима
Input - вход от устройства
Output - ДМХ выход (но только на 128 каналов и каналы и ползунки это совсем разные категории)
Feedback - обратная связь (повернули файдер программно в девайс прилетело значение поворота)

Программа qlcplus отправляет команды

Для режима Channel=1, Mode=Note Velocity, InitMessage=None
09 90 01 29 00 00 00 00
01 - номер канала (первый канал = 00, а так от 00 до 7F - выше не пашет, причем 7F=128каналу)
29 - значение канала (от 00 до 7F)
90 - это Channel=1
91 - это Channel=2
99 - это Channel=10
9F - это Channel=16

Для режима Channel=1, Mode=Control Change, InitMessage=None
0B B0 01 29 00 00 00 00
01 - номер канала (первый канал = 00, а так от 00 до 7F - выше не пашет, причем 7F=128каналу)
29 - значение канала (от 00 до 7F)
B0 - это Channel=1
B1 - это Channel=2
B9 - это Channel=10
BF - это Channel=16

Для режима Channel=1, Mode=Program Change, InitMessage=None
0C C0 01 00 00 00 00 00
01 - номер канала (первый канал = 00, а так от 00 до 7F - выше не пашет, причем 7F=128каналу)
А вот значение он вообще не возвращает....
С0 - это Channel=1
С1 - это Channel=2
С9 - это Channel=10
СF - это Channel=16

ПРОБЛЕМА В ТОМ, ЧТО 0B B0 01 00 00 00 00 00 СОВПАДАЕТ С КОМАНДОЙ - "энкодер влево"
вот только программа qlcplus не воспринимает это как енкодер, а как канал номер 2 (01 в пакете) в значение 00

staba писал(а):Какие вам угодно, главное чтоб ваша программа их понимала.


А ЧТО ЕСТЬ СТАНДАРТНОГО?

staba писал(а):Если на одном канале будет энкодер и фейдер, то может произойти ситуация подобно той, что вы описали. К примеру фейдер стоит в нулевом положении, энкодером измените значение к примеру до 120, а дернув фейдер значение канала опять вернётся к нулю, и произойдёт резкий скачёк.


Если все пойдет так как идит, то на один канал получится:
1) один файдер
2) два светика – зеленый = значение из компа соответствует файдеру и красный = значение из компа НЕ соответствует файдеру
3) энкодер для плавного регулирования пришедшего из компа значения
4) две кнопки Max Min для быстрого переключения
5) осталась кнопка в энкодере.... пока не знаю под что заюзать...
Последний раз редактировалось Cat346 Ср май 28, 2014 18:09:21, всего редактировалось 1 раз.

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

Ср май 28, 2014 17:42:03

mich91 писал(а):Мой алгоритм обработки энкодера от китай мышки, на CodeVisionAVR


Алгоритм - очень кривой, при глюках с дребезгом он насчитает....

Почему кривой и как сделать безглючный подскажет гугль по запросу
"Обработка Инкрементального Энкодера На Прерываниях."

Вопрос в другом - что на энкремент слать?

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

Ср май 28, 2014 19:06:14

Cat346 писал(а):
mich91 писал(а):Мой алгоритм обработки энкодера от китай мышки, на CodeVisionAVR


Алгоритм - очень кривой, при глюках с дребезгом он насчитает....

Почему кривой и как сделать безглючный подскажет гугль по запросу
"Обработка Инкрементального Энкодера На Прерываниях."

Вопрос в другом - что на энкремент слать?

Смотрите в лс.

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

Вт июн 17, 2014 20:12:23

Диджей можешь скинуть схему на два мультиплексора и два энкодера #Будуоченьпризнателен"

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

Вт июн 24, 2014 02:50:46

Привет уважаемые, вот собрал плату на 3 мультиплексора все подпаял, завел ето чудо с 3 купленого контрллера)
и вот опа, немогу замапить вопше ничего
midi ox выдает вот ето только на железном юсб 1,1
на 2.0 все тихо и никаких входных сигналов, в тракторе пробовал "сканить" - глухо

собирал вот ето - avargesnano.narod.ru/3/MIDI-DJ-CJ-CONTROLLER-3.0.html

где собака то зарыта? :shock:
Прошивка в кристале от staba с 51 страницы тоже толком неработает
пока травлю новую плату

1.JPG
(60.74 KiB) Скачиваний: 834

Изображение
Изображение
Изображение

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

Вт июн 24, 2014 23:26:54

А почему пины МЕГИ у вас отзеркалены в СПРИНТе?

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

Сб июл 19, 2014 19:37:32

вот и пришли мои платы (пока не паял - просто приложил детали на них)

Изображение


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


В отличие от софтового тормоза планируется наработать:
файдеров - 30 шт (можно нарастить более)
валкодеров - 30 шт (можно нарастить более)
кнопок 90+30=120 шт (можно нарастить более)
светодиодов - 60 шт (можно нарастить более)
емкосной тачь скрин на 2 оси - 2шт.
хардварный usb
частота опроса от 15 раз в секунду и более.

планируются аппаратные зависимости - один канал может управляться с файдера, валкодера, 3х кнопок.
планируется поддержка обратной связи (отображение на светодиоде совпадает ли файдер с значением).

что уже сделано
1 - профиксили USB дескриптор - он теперь нормально двухтрубный.
2 - наладили обмен между компом и железом по аппаратному юсб на макете.
3 - написал тестовую программу опроса файдеров на макете.
4 - проверили работу с миди-дмх софтом – работает
5 - найден емкосной тачь от сотового с описанием команд по и2ц шине
Последний раз редактировалось Cat346 Сб июл 19, 2014 21:26:54, всего редактировалось 1 раз.

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

Сб июл 19, 2014 20:38:20

Рассказывайте на каком камне делаете, на каком языке пишите.

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

Сб июл 19, 2014 21:33:08

staba писал(а):Рассказывайте на каком камне делаете, на каком языке пишите.


пишу на асме...
каждые 5 файдеров, 10 энкодеров, 10 светодиодов на ATMege16
каждые 15 энкодеров и 15 кнопок с 15 кнопками энкодеров на ATMege16
хардовый юсб на AT90USB162

итог
ATMege16 = 6+2=8 шт
AT90USB162=1 шт

см. посты выше...
Ответить