Library for the scopitone workshop

npm install scop
24 downloads in the last month

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

npm loves you