Nocturnal Programmer's Machine

    jazz-midi-headless

    1.0.7 • Public • Published

    jazz-midi-headless

    MIDI for headless testing

    npm npm build

    Usage

    npm install jazz-midi-headless --save-dev

    JSDOM

    const JZZ = require('jzz');
    const JMH = require('jazz-midi-headless')(JZZ);
    const JSDOM = require('jsdom').JSDOM;
    
    (async () => {
      const dom = await JSDOM.fromFile('test.html', {
        resources: 'usable',
        runScripts: 'dangerously',
        beforeParse: window => { JMH.enable(window); }
      });
      // ...
    })();

    Puppeteer

    const JZZ = require('jzz');
    const JMH = require('jazz-midi-headless')(JZZ);
    const puppeteer = require('puppeteer');
    
    (async () => {
      const browser = await puppeteer.launch();
      const page = await browser.newPage();
      await JMH.enable(page);
      await page.goto('test.html');
      // ...
    })();

    Playwright

    const JZZ = require('jzz');
    const JMH = require('jazz-midi-headless')(JZZ);
    const playwright = require('playwright');
    
    (async () => {
      for (const browserType of ['chromium', 'firefox', 'webkit']) {
        const browser = await playwright[browserType].launch();
        const context = await browser.newContext();
        const page = await context.newPage();
        await JMH.enable(page);
        await page.goto('test.html');
        // ...
      }
    })();

    Virtual ports

    Normally, jazz-midi-headless sees all regular MIDI ports available on your system via the JZZ and jazz-midi.
    You can create virtual MIDI ports and (optionally) hide the regular ones.

    Using JZZ virtual ports:

    const JZZ = require('jzz');
    const JMH = require('jazz-midi-headless')(JZZ);
    
    const virtual_midi_out = new JZZ.Widget();
    JZZ.addMidiOut('VIRTUAL MIDI-Out', virtual_midi_out);
    virtual_midi_out.connect(function(msg) { console.log('MIDI received: ' + msg); });
    
    const virtual_midi_in = new JZZ.Widget();
    JZZ.addMidiIn('VIRTUAL MIDI-In', virtual_midi_in);
    
    JZZ({ engine: 'none' });
    // ...
    virtual_midi_in.noteOn(0, 'C#5', 127);
    // ...

    Using web-midi-test virtual ports:

    const JZZ = require('jzz');
    const JMH = require('jazz-midi-headless')(JZZ);
    const WMT = require('web-midi-test');
    
    const virtual_midi_out = new WMT.MidiDst('VIRTUAL MIDI-Out');
    virtual_midi_out.connect();
    virtual_midi_out.receive = function(msg) { console.log('MIDI received:', msg); };
    
    const virtual_midi_in = new WMT.MidiSrc('VIRTUAL MIDI-In');
    virtual_midi_in.connect();
    
    global.navigator = WMT;
    
    JZZ({ engine: 'webmidi' });
    // ...
    virtual_midi_in.emit([0x90, 0x61, 0x7f]);
    // ...

    Please check the test directory for more examples.

    Install

    npm i jazz-midi-headless

    DownloadsWeekly Downloads

    4

    Version

    1.0.7

    License

    MIT

    Unpacked Size

    21.3 kB

    Total Files

    12

    Last publish

    Collaborators

    • jazz-soft