Osc control что
Необходимость в таком стандарте возникла примерно к концу 70-х годов. В то время синтезаторы управлялись напряжением с помощью интерфейса CV/Gate. Существовало несколько его видов, однако, наибольшую популярность получил вариант, предложенный фирмой Roland: в нем при увеличении напряжения на 1 В, частота генерируемого тона увеличивалась на одну октаву. Главным недостатком такого интерфейса является то, что с помощью него можно управлять только одним голосом полифонии. Для извлечения дополнительной ноты нужно добавлять еще один интерфейс CV/Gate. Кроме того, таким способом передается только сам факт нажатия клавиши и ее высота, чего однозначно мало для выразительной игры.
Другим недостатком синтезаторов того времени была сложность настройки. Для каждого нового звука музыкантам приходилось настраивать инструмент заново, что было очень не удобно на живых выступлениях. На концертах тех времен часто можно было увидеть целые стеллажи из синтезаторов — так музыканты выходили из ситуации. Со временем в инструменты были встроены мини-компьютеры, с помощью которых можно было сохранять положения ручек в пресеты.
Однако, есть еще один момент, который оказал большое влияние на разработку MIDI.
Несомненно, у каждого синтезатора свой характер звучания, каждый из них был силен в определенных типах звуков. Поэтому многие музыканты того времени практиковали игру сразу на двух инструментах, как бы используя лучшее из разных моделей. Наслоение звуков из различных синтезаторов стало исполнительским приемом, визитной карточкой многих музыкантов. [1]
2 История появления
К началу 80-х большинство производителей осознали необходимость создания единого интерфейса. Задача стояла такая: разработать стандарт передачи действий исполнителя в цифровой форме между всеми типами электромузыкальных инструментов. [1]
- Июнь 1981 — на выставке NAMM произошел первый разговор на тему единого интерфейса между главами Sequential Circuits, Roland и Oberheim.
- Осень 1981 — первая версия интерфейса под названием UMI (Universal Musical Interface).
- Июнь 1982 — на выставке NAMM были представлены плоды международной разработки. Ввиду возможных юридических проблем от названия UMI пришлось отказаться в пользу MIDI.
- Октябрь 1982 — закончена предварительная спецификация MIDI.
- Декабрь 1982 — выпушен первый синтезатор, оборудованный MIDI-интерфейсом — Sequencial Circuits Prophet 600.
- 1983 — сформированы комитет по MIDI-стандартам (JMSC), международная группа пользователей MIDI (IMUG), выпущена спецификация MIDI 1.0.
- 1984 — сформирована ассоциация MIDI-производителей (MMA).
3 Основы
Сам протокол состоит из трех частей [1]: спецификация формата данных, аппаратная спецификация интерфейса и спецификация хранения данных. В данной статье будет идти речь только о первой части.
4 Недостатки
Часть 2. Open Sound Contol
«Open Sound Control — это новый, оптимизированный для современных сетевых технологий протокол для взаимодействия компьютеров, звуковых синтезаторов и других мультимедиа устройств» — так был представлен OSC на международной конференции по компьютерной музыке в 1997 году [3]. OSC не является протоколом в том виде, каким является MIDI, так как он не описывает требований к аппаратному обеспечиванию — спецификации описывают лишь формат передачи данных. В этом плане OSC больше схож с XML или JSON, нежели с MIDI [8].
Пока оставим технические подробности и начнем с самого начала, с истории.
1 История, области применения
Open Sound Control был создан в 1997 году Мэттью Райтом (Matthew Wright) и Эдрианом Фридом (Adrian Freed) в Университете Калифорнии в центре новой музыки и аудио технологий (CNMAT — Center of New Music and Audio Technologies). Разработчики хотели использовать высокоскоростные сетевые технологии в интерактивной компьютерной музыке [4]. OSC не важно, по какому протоколу передаваться, так как он представляет собой всего лишь формат данных (binary message format), хотя большинство реализаций используют TCP/IP или UDP. Другой причиной создания было то, что MIDI с его нотами, каналами и контроллерами логично не подходил к разрабатывающемуся в то время синтезатору CAST (CNMAT Additive Synthesis Tools), оно и понятно, ведь MIDI — это клавишно-ориентированный протокол, который разрабатывался для управления одним синтезатором с другого [1].
- Языки программирования: C/C++, Java, Php, Python, Ruby.
- Среды визуального программирования и синтеза: Bidule, Chuck, Common Music CPS, Intakt, Max/MSP, Open Sound World, Pd, SuperCollider, Reaktor, VVVV.
- Устройства для работы с сенсорами: EtherSense, Gluion, IpSonLab Kroonde, Lemur, Smart, Controller, Teabox, Toaster.
- Другие программы: EyesWeb, Picker, SonART, SpinOSC.
2 Особенности
/synth1/noteoff 54
/synth1/noteon 60
Фактически они могут прийти в обратном порядке:
/synth1/noteoff 60
/synth1/noteon 54
4 Pattern matching
- "?" — соответствует любому одному символу.
- "*" — соответствует последовательности из нуля или любого другого числа символов.
- Символы в квадратных скобках (например, "[string]") — соответствует любому символу в строке. В квадратных скобках дефис (-) и восклицательный знак (!) имеют специальное значение:
дефис между двумя символами означает диапазон чисел в ASCII последовательности (дефис в конце строки не имеет специального значения);
Осваиваем простейший микроконтроллер PIC. Часть 1
Выбор микроконтроллера обычно осуществляется под необходимые задачи. Для изучения хорошо подойдет популярный МК с минимальным набором периферии: PIC16F628A.
Первым делом необходимо скачать документацию по выбранному микроконтроллеру. Достаточно зайти на сайт производителя и скачать Datasheet.
На первых страницах перечислены основные характеристики МК (русское описание).
- микроконтроллер содержит внутренний генератор на 4 MHz, так же можно подключить внешний кварц частотой до 20 MHz
- 16 ног микроконтроллера можно использовать как цифровые входы\выходы
- есть 2 аналоговых компаратора
- 3 таймера
- CCP модуль
- USART модуль
- 128 байт энергонезависимой памяти EEPROM
Схема расположения выводов:
Vdd — питание.
Vss — земля.
Это минимум, необходимый для работы МК.
Остаются доступными 16 ног МК. Не сложно посчитать, что использование каждой ноги каким-либо модулем уменьшает максимальное число используемых цифровых портов.
Компилятор
Как я уже писал в предыдущих статьях, самым простым и легким я посчитал компилятор JAL с IDE JALEdit.
Качаем JALPack, устанавливаем.
В этом паке содержаться все необходимые библиотеки, а так же примеры их использования.
Запускаем JALEdit. Открываем пример програмы для нашего микроконтроллера: 16f628a_blink.jal, дабы не портить исходник, сразу сохраняем ее в новый файл, к примеру, 16f628a_test.jal.
-
выбор МК и его конфигурация
include 16f628a -- подключение библиотеки нашего МК
--
-- This program assumes a 20 MHz resonator or crystal
-- is connected to pins OSC1 and OSC2.
pragma target clock 20_000_000 -- oscillator frequency
-- configuration memory settings (fuses)
pragma target OSC HS -- HS crystal or resonator
pragma target WDT disabled -- no watchdog
pragma target LVP disabled -- no Low Voltage Programming
pragma target MCLR external -- reset externally
--
alias led is pin_A0
pin_A0_direction = output
enable_digital_io() -- переключение всех входов\выходов на цифровой режим
forever loop
led = on
_usec_delay( 250000 )
led = off
_usec_delay( 250000 )
end loop
Code :58/2048 Data:4/208 Hardware Stack: 0/8 Software Stack :80
Если прочитать комментарии, то станет ясно, что данная программа рассчитана на использование внешнего кварца 20MHz.
Так как у нас его пока нет, разберемся с конфигурацией и перепишем программу на использование внутреннего генератора.
Конфигурация
В разных микрокотнролерах существуют различные наборы конфигурационных битов. Узнать о назначении каждого бита можно в даташите (стр. 97).
В подключенной библиотеке каждому биту и каждому его значению присвоена читабельная переменная, остается только выбрать необходимые нам параметры.
-- Symbolic Fuse definitions
-- -------------------------
--
-- addr 0x2007
--
pragma fuse_def OSC 0x13 < -- oscillator
RC_CLKOUT = 0x13 -- rc: clkout on ra6/osc2/clkout, rc on ra7/osc1/clkin
RC_NOCLKOUT = 0x12 -- rc: i/o on ra6/osc2/clkout, rc on ra7/osc1/clkin
INTOSC_CLKOUT = 0x11 -- intosc: clkout on ra6/osc2/clkout, i/o on ra7/osc1/clkin
INTOSC_NOCLKOUT = 0x10 -- intosc: i/o on ra6/osc2/clkout, i/o on ra7/osc1/clkin
EC_NOCLKOUT = 0x3 -- ec
HS = 0x2 -- hs
XT = 0x1 -- xt
LP = 0x0 -- lp
>
pragma fuse_def WDT 0x4 < -- watchdog timer
ENABLED = 0x4 -- on
DISABLED = 0x0 -- off
>
pragma fuse_def PWRTE 0x8 < -- power up timer
DISABLED = 0x8 -- disabled
ENABLED = 0x0 -- enabled
>
pragma fuse_def MCLR 0x20 < -- master clear enable
EXTERNAL = 0x20 -- enabled
INTERNAL = 0x0 -- disabled
>
pragma fuse_def BROWNOUT 0x40 < -- brown out detect
ENABLED = 0x40 -- enabled
DISABLED = 0x0 -- disabled
>
pragma fuse_def LVP 0x80 < -- low voltage program
ENABLED = 0x80 -- enabled
DISABLED = 0x0 -- disabled
>
pragma fuse_def CPD 0x100 < -- data ee read protect
DISABLED = 0x100 -- disabled
ENABLED = 0x0 -- enabled
>
pragma fuse_def CP 0x2000 < -- code protect
DISABLED = 0x2000 -- off
ENABLED = 0x0 -- on
>
Изменим конфигурацию под себя:
pragma target clock 4_000_000 -- указываем рабочую частоту, необходимо для некоторых функций расчета времени
-- конфигурация микроконтроллера
pragma target OSC INTOSC_NOCLKOUT -- используем внутренний генератор
pragma target WDT disabled -- сторожевой таймер отключен
pragma target PWRTE disabled -- таймер питания отключен
pragma target MCLR external -- внешний сброс активен
pragma target BROWNOUT disabled -- сбос при падении питания отключен
pragma target LVP disabled -- программирование низким напряжением отключено
pragma target CPD disabled -- защита EEPROM отключена
pragma target CP disabled -- защита кода отключена
Моргаем светодиодом по нажатию кнопки
Модифицируем программу так, что бы светодиод моргал только тогда, когда зажата кнопка.
Решив данную задачу мы научимся работать с цифровыми портами как в режиме входа, так и в режиме выхода.
Цифровой выход
Выберем еще неиспользуемую ногу МК. Возьмем, к примеру, RB5(pin 11). Данная нога не имеет дополнительных функций, потому она нам более нигде не понадобится.
В режиме цифрового выхода МК может притягивать к ноге либо питание, либо землю.
Подключать нагрузку можно как к плюсу, так и к минусу. Разница будет лишь в том, когда и в какую сторону потечет ток.
В первом случае ток потечет от МК при установке единицы, а во втором — к МК при установке нуля.
Дабы светодиод зажигался от логической единицы, остановимся на первом варианте.
Для ограничения тока через ногу (максимально допустимо 25 мА на цифровой вход или 200 мА на все порты) установлен токоограничительный резистор. По простейшей формуле высчитываем минимальное значение в 125 Ом. Но так как предел нам не нужен, возьмем резистор в 500 Ом (а точнее ближайший подходящий).
Для подключения более мощной нагрузки можно использовать транзисторы в различных вариантах.
Цифровой вход
Возьмем вторую неиспользуемую нигде ногу — RB4 (pin 10, указанная в распиновке функция PGM отностися к LVP, который мы отключили).
В режиме цифрового входа микроконтроллер может считывать два состояния: наличие или отсутствие напряжения. Значит нам необходимо подключить кнопку так, что бы в одном состоянии на ногу шел плюс, а во втором состоянии — к ноге подключалась земля.
В данном варианте резистор используется в качестве подтяжки (Pull-up). Обычно для подтяжки применяют резистор номиналом 10 кОм.
Впрочем, подтягивающий резистор не всегда необходим. Все ноги PORTB (RB0-RB7) имеют внутреннюю подтяжку, подключаемую программно. Но использование внешней подтяжки куда надежнее.
Можно подключать не только кнопку, главное помнить о ограничении тока через МК.
Кнопка сброса
Пока не забыли, что мы активировали внешний сброс, добавим аналогичную кнопку на ногу MCLR (pin 4).
После нажатия такой кнопки МК начнет выполнение программы с нуля.
Прошивка
Присваиваем нашему светодиоду и кнопке переменные:
enable_digital_io() -- переключение всех входов\выходов на цифровой режим
--
alias led is pin_B5 -- светодиод подключен к RB5
pin_B5_direction = output -- настраиваем RB5 как цифровой выход
--
alias button is pin_B4 -- кнопка подключена к RB4
pin_B4_direction = input -- настраиваем RB4 как вход
led = off -- выключаем светодиод
Теперь присваивая переменной led значения 1 или 0 (on или off, true или false, другие алиасы..) мы будем подтягивать к нужной ноге МК или плюс, или минус, тем самым зажигая и гася светодиод, а при чтении переменной button мы будем получать 1 если кнопка не нажата и 0 если кнопка нажата.
Теперь напишем необходимые нам действия в бесконечном цикле (эти действия будут выполняться постоянно. При отсутствии бесконечного цикла МК зависнет):
forever loop
led = off -- выключаем светодиод
_usec_delay( 500000 ) -- ждем 0,5 сек
if Button == 0 then -- если кнопка нажата, выполняем действия
led = on -- зажигаем светодиод
_usec_delay( 500000 ) -- ждем 0,5 сек
end if
end loop
Задержка считается просто:
частота генератора у нас 4MHz. Рабочая частота в 4 раза меньше: 1 MHz. Или 1 такт = 1 мкс. 500.000 мкс = 0,5 с.
Errors :0 Warnings :0
Code :60/2048 Data:4/208 Hardware Stack: 0/8 Software Stack :80
Теперь нам необходимо записать эту прошивку в МК, собрать устройство согласно схеме и проверить, что у нас все получилось как надо.
Программатор
Все таже схема:
- PGD — pin 13
- PGC — pin 12
- MCLR(Vpp) — pin 4
- Vdd — pin 14
- Vss — pin 5
Некачественная пайка — одна из основных проблем неработоспособности устройства.
Не повторяйте мои плохие привычки: не используйте навесной монтаж.
В качестве питания 5В в данном случае использовался хвост от старой PS/2 мыши, вставленный в разъем для мыши.
Подключаем к компьютеру.
Качаем и запускаем WinPic800.
Идем в Settings->Hardware, выбираем JDM и номер порта, на котором висит программатор
Нажимаем Hardware Test, затем Detect Device
Открываем нашу прошивку pic628a_test.hex
На вкладке Setting можно проверить, что конфигурационные биты выставлены верно, при желании тут же их можно изменить
Program All, затем Verify All
Если ошибок не возникло, продолжаем паять.
Результат
От программатора нам мешает только высокое напряжение (12в) на MCLR. Дабы не отпаивать весь программатор, можно отпаять только один провод… Или просто не подключать программатор к COM порту. Остальные провода нам мешать не будут (а подключенные питание и земля только упростят пайку).
Кнопку на MCLR паять можно по желанию, но подтяжка обязательна.
При повторном подключении программатора резистор необходимо будет убрать, иначе он подтянет 12в к питанию.
Результат работы можно увидеть на видео.
Итак, у нас получилось самое простое устройство на микроконтроллере: мигалка светодиодом.
Теперь нам необходимо научиться пользоваться всей оставшейся периферией, но об этом в следущей статье.
Синхронизация. Новый уровень шоу. V2. NETWORK. Как работает OSC (Open Sound Control)
Int32
Integer 32bit, этот тип данных может хранить в себе натуральное число в диапазоне от -2 147 483 648 до 2 147 483 647. Этот тип используют, когда нужно передать целочисленный номер: для идентификации номера страницы или фейдера, так как в пульте не существует фейдеров и страниц с дробным номером.
Float32
Float 32bit может хранить в себе действительное число c плавающей запятой в диапазоне от -3.4*1038 до +3.4*1038. Этот способ выражения действительного числа позволяет закодировать более точные данные. Часто этим типом данных кодируют уровни фейдеров, вы можете определить диапазон фейдера от нуля до единицы, а вот точность позиционирования фейдера в этом диапазоне может быть огромной, но зачастую производители ограничиваются двумя знаками после запятой.
Blob
Binary Large Object передает оригинальный массив байтов. Очень часто его используют для передачи изображений, звука и видео.
Bool
Boolean – это логический тип данных, который может передать либо ложь, либо истину. Самое распространенное его использование – это описание состояния переключателя, который может быть включен (истина) или выключен (ложь). На самом деле в типологии OSC этот тип данных разделен на две части, каждая из которых несет в себе конкретное состояние. Я объединил их, дабы облегчить понимание этих типов.
Impulse
Это не совсем тип данных как таковой, поскольку он не несет в себе информацию о состоянии аргумента, он инициализирует событие. В описании OSC-протокола он обозначается как “Bang” и часто применяется, когда вам нужно передать информацию о действии (скажем, об открытии страницы или любого другого события) без необходимости передачи аргумента.
Null
Это пустой тип данных, который не содержит в себе ничего. Используется довольно редко, но как дополнительная опция присутствует.
Как видно на схеме, чтобы передать состояние кнопки Flash фейдера номер один на световую консоль Eos, мы должны указать сетевой адрес и порт пульта (192.168.1.101:5004) Далее нужно указать адрес необходимой кнопки, состояние которой мы хотим передать (/eos/fader/1/flash), и в итоге передать аргумент типа Boolean: если кнопка должна быть нажата, то аргумент равен True, если кнопка отпущена, то аргумент равен False.
Резюмируем особенности OSC-протокола
OSC-протокол базируется на интерфейсе передачи данных Ethernet. А это дает сразу несколько преимуществ. Для передачи такого сигнала мы можем использовать стандартное сетевое оборудование, которое намного распространеннее и доступнее, чем специализированные карты синхронизаций. По Ethernet мы можем передать сигнал практически на неограниченное расстояние, используя при этом разные способы передачи: как по радиоканалу, так и по оптике, и по витой паре.
Я считаю, что OSC – самый функциональный и современный протокол синхронизации. С его помощью можно построить сложнейшие системы генеративной синхронизации с большой скоростью передачи данных. При этом, как я уже говорил, благодаря тому, что данный протокол базируется на физическом интерфейсе Ethernet, OSC наследует все преимущества передачи данных по этому интерфейсу. Что делает его намного привлекательнее остальных протоколов синхронизации.
Синхронизация. Новый уровень шоу. V2. NETWORK. OSC (Open Sound Control) для шоу
Немецкая компания - производитель аудио-технологий и решений d&b audiotechnik объявила о выпуске нового мобильного усилителя D40. Четырехканальный усилитель класса D отличается уменьшенными размерами и массой, улучшенным управлением напряжением и увеличенной производительностью системы при значительном снижении энергопотребления для повышения экологичности.
Ильяс Низамов о Yamaha RIVAGE PM5
В январе 2021 года в Москве состоялся концерт группы Therr Maitz где впервые в России в живой концертной работе были использованы новые микшерные консоли Yamaha серии RIVAGE.
Ранее мы публиковали интервью с FOH звукорежиссером концерта, Данилом Хабибуллиным. В этот раз своими впечатлениями поделится мониторный звукорежиссер группы, Ильяс Низамов.
Behringer FLOW 8 цифровой микшер малого формата
Пришло время для чего-то действительно нового, с современными функциями, в простой и легкой форме – пришло время для цифрового микшера Behringer FLOW 8.
«Торнадо» в день «Нептуна»
2019 год стал для компании Guangzhou Yajiang Photoelectric Equipment CO.,Ltd очень богатым на новинки световых приборов. В их числе всепогодные светодиодные поворотные головы высокой мощности: серии Neptune, выпускаемые под брендом Silver Star, и Tornado – под брендом Arctik.
CCS 3.0 Система Согласованности Цвета, версия 3.0…
Художники могут изображать небо красным, ведь они знают, что оно синее.
А вот не художники должны рисовать все, как оно есть, иначе люди подумают, что рисовал дурак.
Coemar: светлое чувство
Представляем вам четыре новых прибора от Coemar.
Panasonic в Еврейском музее
Еврейский музей и центр толерантности открылся в 2012 году в здании Бахметьевского гаража, построенного по проекту архитекторов Константина Мельникова и Владимира Шухова. Когда этот памятник конструктивизма передали музею, он представлял собой практически развалины. После реставрации и оснащения его новейшим оборудованием Еврейский музей по праву считается самым высокотехнологичным музеем России.
О его оснащении нам рассказал его IT-директор Игорь Авидзба.
Ильяс Низамов о Yamaha RIVAGE PM5
В январе 2021 года в Москве состоялся концерт группы Therr Maitz где впервые в России в живой концертной работе были использованы новые микшерные консоли Yamaha серии RIVAGE.
Ранее мы публиковали интервью с FOH звукорежиссером концерта, Данилом Хабибуллиным. В этот раз своими впечатлениями поделится мониторный звукорежиссер группы, Ильяс Низамов.
Денис Солнцев: У меня не было к себе вопросов по выбору профессии
Интервью с художником по свету, создавшим световое оформление 200 музыкальных, драматических и кукольных спектаклей, неоднократным номинант Национальной театральной премии «Золотая Маска» и ее лауреат в номинации «художник по свету».
Дмитрий Кудинов: счастливый профессионал
Интервью с художником по свету Дмитрием Кудиновым.
Мониторинг. Урок 18. Активные контрольные комнаты
Не следует путать новые возможности дизайна активных помещений с «поддерживаемой реверберацией», которая с 1950-х годов использовалась в Королевском фестивальном зале (Royal Festival Hall), а позже в студиях «Лаймхаус» (Limehouse Studios). Это были системы, использующие настраиваемые резонаторы и многоканальные усилители для распределения естественных резонансов до нужной части помещения.
Синхронизация. Часть VIII RTP-MIDI (Apple MIDI)
RTP (Real-time Transport Protocol) – протокол высокого уровня, который базируется на UDP, но при этом имеет свои особенности, которые были специально разработаны для стриминга аудио и видео.
Прокат как бизнес. Попробуем разобраться
Андрей Шилов: "Выступая на 12 зимней конференции прокатных компаний в Самаре, в своем докладе я поделился с аудиторией проблемой, которая меня сильно беспокоит последние 3-4 года. Мои эмпирические исследования рынка проката привели к неутешительным выводам о катастрофическом падении производительности труда в этой отрасли. И в своем докладе я обратил внимание владельцев компаний на эту проблему как на самую важную угрозу их бизнесу. Мои тезисы вызвали большое количество вопросов и длительную дискуссию на форумах в соцсетях."
Читайте также: