Espruino:Примеры/MIDI-контроллер с помощью BLE-функции Puck.js: различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighligh...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =MIDI-контроллер с помощью BLE-функции Puck.js<ref>[https://www.espruino.com/BLE+MIDI www.espruino.com - Bluetooth LE MIDI]</ref>= | ||
В этом руководстве мы создадим [[MIDI-контроллер]] при помощи BLE-функции [[Puck.js]]. Кроме того, по [https://www.espruino.com/Midi этой ссылке] можно почитать о модуле для реализации [[MIDI-контроллер]]а при помощи проводного соединения. | |||
<syntaxhighlight lang=" | Правильно запрограммировав [[Puck.js]], вы можете превратить его в любое [[BLE-устройство]], включая [[MIDI-контроллер]]. | ||
Первыми над этим проектом начали работать [https://github.com/joebowbeer/PuckCC Джо Боубир] и [https://github.com/georgemandis/puck-js-midi-clicker Джордж Мандис]. Но теперь их код преобразован в [https://www.espruino.com/modules/ble_midi.js модуль «ble_midi»] (более подробно о модулях читайте [https://www.espruino.com/Modules тут]), чтобы им было легче пользоваться. | |||
Пользоваться этим модулем очень просто: | |||
<syntaxhighlight lang="javascript" enclose="div"> | |||
var midi = require("ble_midi"); | |||
midi.init(); | |||
setWatch(function() { | |||
// Когда нажата кнопка... | |||
digitalPulse(LED,1,10); | |||
// midi.send(channel, controller, value); | |||
midi.send(0, 60, 100); | |||
}, BTN, { repeat:true, edge:"rising", debounce:10 }); | |||
</syntaxhighlight> | |||
Теперь, когда вы в следующий раз подключитесь к своему [[Puck.js]], он будет воспринят как [[MIDI-инструмент]]. Нажатие на кнопку выполнит функцию send(), которая и отправит MIDI-команду. | |||
Вы даже можете воспользоваться [https://webaudio.github.io/web-midi-api/ Web MIDI API], чтобы получать MIDI-данные внутри веб-страницы. | |||
'''Примечание:''' Способ рассылки BLE-данных в [[Puck.js]] модифицирован, поэтому название [[Puck.js]] будет изменено на [[PuckCC]]. | |||
'''Примечание:''' Чтобы всё это работало автоматически, может потребоваться [[Mac]]. | |||
Функция midi.send() отправляет команду типа '''Control Change'''. Зачастую вместо неё лучше вызвать '''midi.noteOn(0,note,velocity)''' или '''midi.noteOff(0,note,0)'''. | |||
==Справочник== | |||
Отсчёт каналов в этих функциях начинается с нуля, так что канал ''«0»'' на самом деле означает канал ''«1»''. | |||
<syntaxhighlight lang="javascript" enclose="div"> | |||
// Превращает устройство в MIDI-контроллер: | |||
exports.init = function () { ... } | |||
// Отправляет необработанную MIDI-команду: | |||
exports.cmd = function (cmd, d1, d2) { ... } | |||
// Отправляет MIDI-команду типа Control Change | |||
// (0xB0; события потокового управления): | |||
exports.send = function (channel, controller, value) { ... } | |||
// Отправляет MIDI-команду Note On (0x90; активация ноты): | |||
exports.noteOn = function (channel, note, velocity) { ... } | |||
// Отправляет MIDI-команду Note Off (0x80; деактивация ноты): | |||
exports.noteOff = function (channel, note, velocity) { ... } | |||
</syntaxhighlight> | |||
=См.также= | =См.также= |
Версия от 10:53, 6 марта 2021
MIDI-контроллер с помощью BLE-функции Puck.js[1]
В этом руководстве мы создадим MIDI-контроллер при помощи BLE-функции Puck.js. Кроме того, по этой ссылке можно почитать о модуле для реализации MIDI-контроллера при помощи проводного соединения.
Правильно запрограммировав Puck.js, вы можете превратить его в любое BLE-устройство, включая MIDI-контроллер.
Первыми над этим проектом начали работать Джо Боубир и Джордж Мандис. Но теперь их код преобразован в модуль «ble_midi» (более подробно о модулях читайте тут), чтобы им было легче пользоваться.
Пользоваться этим модулем очень просто:
var midi = require("ble_midi");
midi.init();
setWatch(function() {
// Когда нажата кнопка...
digitalPulse(LED,1,10);
// midi.send(channel, controller, value);
midi.send(0, 60, 100);
}, BTN, { repeat:true, edge:"rising", debounce:10 });
Теперь, когда вы в следующий раз подключитесь к своему Puck.js, он будет воспринят как MIDI-инструмент. Нажатие на кнопку выполнит функцию send(), которая и отправит MIDI-команду.
Вы даже можете воспользоваться Web MIDI API, чтобы получать MIDI-данные внутри веб-страницы.
Примечание: Способ рассылки BLE-данных в Puck.js модифицирован, поэтому название Puck.js будет изменено на PuckCC.
Примечание: Чтобы всё это работало автоматически, может потребоваться Mac.
Функция midi.send() отправляет команду типа Control Change. Зачастую вместо неё лучше вызвать midi.noteOn(0,note,velocity) или midi.noteOff(0,note,0).
Справочник
Отсчёт каналов в этих функциях начинается с нуля, так что канал «0» на самом деле означает канал «1».
// Превращает устройство в MIDI-контроллер:
exports.init = function () { ... }
// Отправляет необработанную MIDI-команду:
exports.cmd = function (cmd, d1, d2) { ... }
// Отправляет MIDI-команду типа Control Change
// (0xB0; события потокового управления):
exports.send = function (channel, controller, value) { ... }
// Отправляет MIDI-команду Note On (0x90; активация ноты):
exports.noteOn = function (channel, note, velocity) { ... }
// Отправляет MIDI-команду Note Off (0x80; деактивация ноты):
exports.noteOff = function (channel, note, velocity) { ... }
См.также
Внешние ссылки