node package manager


scop Build Status Dependency Status

Library for the scopitone workshop


  • install with npm install scop --save
  • check the demo sample:
var Scop = require('scop').Scop,
    Notes = require('scop').Notes,
    // new instance of the arduino controler 
    scop = new Scop('/dev/ttyACM0');
// bpm and sequence to be played 
var bpm = 180;
var seq = [
    {id: Notes.A},
    {id: Notes.A},
    {id: Notes.A},
    {id: Notes.B},
    {id: Notes.C},
    {id: Notes.B, duration: Notes.blanche},
    {id: Notes.A, duration: Notes.blanche},
    {id: Notes.C},
    {id: Notes.B},
    {id: Notes.B},
    {id: Notes.A}
// only start playing when the serial port is open 
scop.on('ready', function() {
    // play the sequence at the defined bpm, bpm);
    // loop the sequence after a 1s pause 
    scop.on('played', function() {
        setTimeout(function() {
  , bpm);
        }, 1000);



A class that instanciate a serial port communication with the arduino. When the serial port is opened, it sends a 'ready' event., bpm:Number)

Play sequentially the motors. The sequence provided is an array of numbers. Each of this numbers corresponds to a combination of motors to play during the measure. If you put a 0 (or scop.none) on the array it means no motor will be played during the measure. When the sequence is finished, an event is sent.


Motor combinations representing notes and chords. And note durations