Espruino:Примеры/MIDI-контроллер с помощью BLE-функции Puck.js: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighligh...»)
 
Нет описания правки
Строка 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="html5" enclose="div">
Правильно запрограммировав [[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) { ... }

См.также

Внешние ссылки