Music in my mind 
Blog

Виртуальный контроль

В данной статье хочу привлечь Ваше внимание к новой или уже не совсем тенденции в использовании в работе с DJ Software или DAW системах различных поверхностей, с помощью которых можно управлять этим софтом. Наиболее часто используемой поверхностью является touch screen монитор или экран планшета. Есть достаточное уже количество софта, которое позволяет управлять различными программами касанием по поверхности экрана.

Для iPAD наиболее частым упоминанием является использование приложения TouchOSC (4.99$), которое посылает сообщения по протоколу Open Sound Control (OSC) через сеть wi-fi.

 

 

С помощью приложения TouchOSC Editor создаем необходимую поверхность с нужными нам кнопками, слайдерами и энкодерами. Для добавления элемента на рабочую поверхность, щелкните по ней правой кнопкой мыши, раскроется список с элементами

 

 

Более подробно о настройках можно прочитать здесь (там же можно и скачать):

http://hexler.net/docs/touchosc-editor

Но одного iPAD и программ TouchOSC для работы с такими приложениями как Traktor или Ableton нам не достаточно. Встроенной поддержки в Traktor и Ableton OSC нет. В старых версиях Трактора она была, но в текущей версии нет, видимо чтобы не создавать конкуренции своим контроллерам. С Ableton другая ситуация, Max4Live ведь умеет общаться с Ableton Live, значит поддержка скрыта от обычных пользователей. В сети можно найти решение поддержки OSC в Live с помощью специального скрипта на языке Python. Кому интересно читаем здесь:

http://forum.ableton.com/viewtopic.php?t=66118

Как можно выйти из положения. Если Вы используете Mac OS, то вместо Python script можно использовать приложение OSCulator (19$) для перевода сообщений OSC в MIDI, в Windows - приложение PureData. Для Windows потребуется еще и виртуальный кабель Midi Yoke или LoopBe30 (19.9$), если Вашему приложению не нужно принимать миди сообщения, то можно обойтись и LoopBe1. С установкой Midi Yoke в Windows7 могут возникнуть проблемы (нет поддержки этой ОС), обычно решается отключением UAC перед установкой. Виртуальный кабель используется для передачи миди сообщений между приложениями, например между PureData и Traktor.

После того как установлено соединение с приложением, производится настройка управления. За 10$ Вам готовы оказать помощь эти ребята:

http://www.touchosc-templates.com/

Интересным показался проект от future-instruments - Surface Editor (http://www.future-instruments.net/surfaceeditor/

 

 

Это java приложение, которое позволяет создавать виртуальные контроллеры для управления различным софтом либо миди сообщениями, либо OSC. Включает в себя набор контроллеров и имеет готовый plugin для Ableton – LivePAD. Приложение бесплатное, работает под MacOSX, Windows, Linux. Необходимо установить java версии 6. Для работы в Windows c миди также потребуется наличие виртуального кабеля (Midi Yoke, LoopBe). В режиме редактирования создается необходимая поверхность с контроллерами, контроллерам назначаются сообщения (MIDI или OSC). Для реального управления переходим в Play режим. Управление мышью или касанием по touch экрану.

Для iPAD еще рекомендую решения от iximix.com такие как TrakProDJ (9.99$), LiveRemote (9.99$).

 

 

Они в первую очередь ориентированы для работы с MACOSX, так как для соединения используется сетевой миди драйвер, который появился в MACOS с версии 10.4, а в iOS с версии 4.2 он входит в состав службы Core-Midi (все это также справедливо и для TouchOSC). Таким образом соединяем iPAD с компьютером по Wifi-Midi. Не так все плохо и для пользователей Windows. Для реализации Wifi-Midi необходимо установить драйвер rtpMidi, драйвер и инструкция по установке находится здесь (если не установлен iTunes, то потребуется еще и компонент Apple Bonjour):

http://www.tobias-erichsen.de/rtpMIDI.html.

Проверено лично, все работает. Естественно, что в этом варианте виртуалные миди кабели нам уже не нужны, так как rtpMidi теперь и есть тот самый кабель. А что если вместо PureData для TouchOSC использовать rtpMidi? Думаю должно получиться, TouchOSC поддерживает Midi. Будет время обязательно проверю.

TrakProDJ в работе:

 

Еще одно решение для iPAD - вариант все в одном Midi Touch.

 

 

Тут же и рисуем и работаем.

 

 

Стоимость 17.99$, дороговато в сравнении с другими.

 

Отмечу, что для iPAD есть возможность соединения с hardware с помощью адаптера Line 6 MIDI Mobilizer, что открывает новые горизонты использования планшета.

 

 

Для Windows 7 и Traktor Pro есть мощное решение от http://www.smithsonmartin.com/ - Emulator. Цена кусается – 249$ (а ведь все начиналось с Mono touch за 30$), возможна покупка с экраном 32”/42”, цены далеко за 2000$

Большой загадкой для меня пока является, как автору удалось внедрить в свое приложение деки из Трактора, без помощи NI видимо не обошлось. У кого есть соображения на этот счет просьба поделиться с автором этой статьи. Похоже что touch интерфейс перекрывает родной Тракторовский, за исключением дек.

Но если у Вас есть навыки программирования (желательно на java), то все возможно сделать своими руками. Я покажу на собственном примере с чего можно начать. Наиболее быстрым решением для меня показалось использование языка Processing (http://processing.org), хотя по сути это обычная java.

 

 

У Processing есть свой простой, но достаточно удобный IDE. Что самое важное, для Processing есть необходимые готовые библиотеки gui компонентов, это controlP5 и G4P; для работы с midi - proMidi и themidibus, для OSC – oscP5, для реализации поддержки multi touch экранов – TUIO Client. Каждая библиотека включает в себя набор примеров по применению. Но пока остановимся на отрисовке поверхности и работе с midi в Processing. Для gui компонентов я выбрал G4P. Использовал на поверхности такие элементы как GLabel (метка, используем для вывода текста), GSlider (слайдер, есть вертикальный GVertSlider и горизонтальный GHorzSlider), GKnob (круглая кнопка, используем для энкодеров эквалайзера), GButon (прямоугольная кнопка, используем как pad кнопка или обычная кнопка для play, sync и т.п). Все элементы создаются на поверхности через программный код. В настоящее время, автор библиотеки G4Pдоделывает инструмент, который будет позволять создавать элементы визуально и затем переносить в программу их код. Для примера я создал такую поверхность для работы с Traktor:

 

 

Как видите все выглядит очень прилично, правда пришлось создать свои элементы Indicator и Led, которые я использую для отображение уровня сигнала деки и beat match-инга.

Каждый контроллер должен посылать миди сообщение при изменении своего положения. Для работы с миди я выбрал themidibus, хотя изначально выбор пал на proMidi, которая оказалось с багом. proMidi почему-то не отрабатывает на приеме сообщение controller change со значением равным нулю.

Так как мы имеем дело не с железом, а с программой, нам нужны виртуальные миди порты для приема и передачи миди сообщений. Так как все происходит в Windows 7 я использую для этого виртуальный кабель Midi Yoke, сначала использовал LoobBe1, но так как я обрабатываю и входящие миди сообщения, чтобы исключить прием обратно отправленных своих же сообщение, перешел на бесплатный Midi Yoke. Midi Yoke позволяет использовать до 16-ти виртуальных кабелей. Один кабель используем для midi in, другой для midi out. Для установки в Windows 7 Вам потребуется отключить UAC. (Усть еще один вариант виртуального кабеля от автора выше упомянутого rptMidi - loopMidi, но не было еще времени проверить его работоспособность).

 

 

Перейдем к themidibus.

Подключиться к портам можно по названию порта или его номеру, посмотреть номер и имя можно с помощью MidiBus.list(). Например по имени это будет так:

MidiBus myBus = new MidiBus(this,” In From MIDI Yoke: 2”, ” Out To MIDI Yoke: 1”)

При перемещении слайдера или энкодера отправляем controller change сообщение:

myBus.sendControllerChange(theChannel, theNumber, theValue),

где

theChannel – номер миди канала от 0 до 15 (нумерация всегда идет с нуля);

theNumber – номер контроллера от 0 до 127;

theValue – значение контроллера от 0 до 127.

При нажатии на кнопку нам нужно отправлять 2 сообщения. При нажатии NoteOn, после отпускания NoteOff:

myBus.sendNoteOn(theChannel, thePitch, theVelocity) и myBus.sendNoteOff(theChannel, thePitch, theVelocity),

где

theChannel – номер миди канала от 0 до 15 (нумерация всегда идет с нуля);

thePitch – в нашем контексте это номер ноты от 0 до 127;

theVelocity – значение velocity, в нашем случае в обоих случаях используем 127, хотя можно указать любое значение большее 0. Учтите что NoteOn c velocity = 0 эквивалентно NoteOff.

Traktor отображает ноты не по номерам, а по названию, перевод номеров на буквенное отображение:

 

 

После того как приложение создано, создаем миди маппинг в Traktor-е. Тестовая программа использует Midi Yoke 1 для OUT и Midi Yoke 2 для IN, значит в Traktor в Port In указываем Midi Yoke 1, а Port Out – Midi Yoke 2, т.е. наоборот. Маппинг создается так же как при работе с обычным железным контроллером. Естественно функция Learn так же работает.

В итоге первый блин вышел таким образом:

Пока это все. В планах следующее.

В данный момент занимаюсь multi touch, поэтому переезжаю на java в eclipse, так как используется framework MT4j - Multitouch for Java. Хочу заметить, что до сих пор все сделано с использованием бесплатных средств.

Подумываю о Delphi XE2, тем более я много лет разрабатывал приложения на Delphi под Windows, но с тех пор конечно прошло прилично времени. Сейчас Delphi XE2 позволяет создавать приложения кроме Windows и для MacOsX, содержит компоненты для создания приложений с поддержкой multi touch, поддержка Windows 64-bit. Но отпугивает нереальная цена на Delphi XE2.

Спрашивается, а зачем мне все это нужно, уже есть решения. Ну во-первых мне интересно сделать похожее своими руками, во-вторых не скажу, что уже есть 100% удобный мне инструмент, тем более бесплатный, к тому же в своем коде я сам себе хозяин, в третьих мне кажется что использование multi touch и производных технологий будет только увеличиваться, так что нужно быть в курсе происходящего.

Если у Вас есть вопросы, предложения, идеи, замечания, дополнения - You Are Welcome!

2 ▲
12 September 2011 11:48

Комментарии

Закрепленный комментарий
Dmitry Ultra  22 September 2011 23:13
Протестировал работу loopMidi, однозначно на 7-ой винде нужно использовать вместо Midi Yoke, который собственно и не рассчитан на работу в 7-ке. loopMidi может создавать несколько виртуальных кабелей, бесплатный, но есть возможность и поддержать автора.
Протестировал работу loopMidi, однозначно на 7-ой винде нужно использовать вместо Midi Yoke, который собственно и не рассчитан на работу в 7-ке. loopMidi может создавать несколько виртуальных кабелей, бесплатный, но есть возможность и поддержать автора.
Пожалуйста, зарегистрируйтесь (это быстро!) или войдите, чтобы оставлять comments и делать ещё массу прикольных вещей.