Содержание

@amperka/ringtone

Модуль позволяет воспроизводить мелодии заданные в формате RTTTL (Ring Tone Text Transfer Language). Формат был распространён на старых мобильных телефонах, когда они ещё не поддерживали проигрывание полноценных звуковых файлов.

Целевым устройством может быть модуль-зуммер, динамик или даже шаговый мотор, подключённый через драйвер с интерфейсом STEP/DIR.

var player = require('@amperka/ringtone').create(P3);
 
var melody = 'Flinstones:d=4,o=5,b=40:32p,16f6,16a#,' +
  '16a#6,32g6,16f6,16a#.,16f6,32d#6,32d6,32d6,32d#6,' +
  '32f6,16a#,16c6,d6,16f6,16a#.,16a#6,32g6,16f6,16a#.,' + 
  '32f6,32f6,32d#6,32d6,32d6,32d#6,32f6,16a#,16c6,a#,' + 
  '16a6,16d.6,16a#6,32a6,32a6,32g6,32f#6,32a6,8g6,16g6,' + 
  '16c.6,32a6,32a6,32g6,32g6,32f6,32e6,32g6,8f6,16f6,' +
  '16a#.,16a#6,32g6,16f6,16a#.,16f6,32d#6,32d6,32d6,' +
  '32d#6,32f6,16a#,16c.6,32d6,32d#6,32f6,16a#,16c.6,' +
  '32d6,32d#6,32f6,16a#6,16c7,8a#.6';
 
player.play(melody).then(function() {
  print('Melody completed');
});

Примеры мелодий

Больше мелодий: http://syspace.ru/nokiatone/rtttf.htm

Функции модуля

create(opts)

Создаёт новый объект-плеер. В качестве opts принимает пин для проигрывания или объект с полями:

Поля opts могут быть опущены.

Player

Класс объектов-плееров. Используйте create для создания экземпляров.

Player.play([melody][, noteCallback])

Начинает проигрывать RTTTL-мелодию melody. При переходе к очередной ноте вызывает noteCallback с параметрами частоты и длительности ноты. При переходе к паузе вызывает noteCallback с параметром частоты равным 0.

var player = require('@amperka/ringtone').create();
player.play(':d=4,o=5,b=90:g,d,g,d,g,b,a#,a,g,d,g,d,g', function(freq, duration) {
  print('Tone at', freq, 'Herz for', duration, 'seconds');
});

Если при создании объекта был указан пин, воспроизводит необходимые частоты на этом пине с помощью ШИМ-сигнала. Если параметр melody опущен, используется мелодия заданная при создании.

var player = require('@amperka/ringtone').create({
  pin: P3,
  melody: ':d=4,o=5,b=90:g,d,g,d,g,b,a#,a,g,d,g,d,g'
});
 
player.play();

Функция возвращает объект-обещание, который можно использовать для вызова функции по завершению проигрывания:

// ...
player.play(melody).then(function() {
  print('Melody completed');
});

Player.stop()

Прерывает воспроизведение мелодии. Приводит к моментальному переходу к ноте-паузе: пин проигрывания будет выключен, функция обратного вызова для play будет вызвана с нулевыми параметрами.