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

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighligh...»)
 
Нет описания правки
 
(не показаны 3 промежуточные версии 2 участников)
Строка 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">
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-данные внутри веб-страницы.
 
{{Примечание1|Способ рассылки BLE-данных в [[Puck.js]] модифицирован, поэтому название [[Puck.js]] будет изменено на [[PuckCC]].}}
 
{{Примечание1|Чтобы всё это работало автоматически, может потребоваться [[Mac]].}}
 
Функция midi.send() отправляет команду типа '''Control Change'''. Зачастую вместо неё лучше вызвать '''midi.noteOn(0,note,velocity)''' или '''midi.noteOff(0,note,0)'''.
 
==Справочник==
 
Отсчёт каналов в этих функциях начинается с нуля, так что канал ''«0»'' на самом деле означает канал ''«1»''.
 
<syntaxhighlight lang="javascript">
// Превращает устройство в 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>


=См.также=
=См.также=
{{ads}}


=Внешние ссылки=
=Внешние ссылки=
Строка 16: Строка 63:
<references />
<references />


{{Навигационная таблица/Espruino}}
{{Навигационная таблица/Портал/Espruino}}
{{Навигационная таблица/Телепорт}}

Текущая версия от 20:45, 22 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


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) { ... }

См.также

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