JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 10
  • Score
    100M100P100Q38209F
  • License MIT

Write Impulse Tracker module files with JavaScript.

Package Exports

  • itwriter
  • itwriter/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (itwriter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Create Impulse Tracker .it files from a JSON song datastructure.

See the browser demo here and the node demo in the install section below.

Install

npm i itwriter

Run the node example:

cp node_modules/itwriter/example.js .
node example.js
xmp example.it

Use

Basic usage: const bytebuffer = itwriter(song_structure)

More detailed usage:

import itwriter from "itwriter";

// create a 10ms sinewave sample
const sine = [...(new Array(4410))].map((v, i) => Math.sin(i/10));

const it = itwriter({
  "title": "example",
  "bpm": 120,
  "samples": [{
    "name": "sine wave",
    "samplerate": 44100,
    "channels": [sine]
  }],
  "patterns": [{
    "rows": 32,
    "channels": [{
      0: {
        "note": "C-5",
        "instrument": 0,
        "vol": "v64",
      }
    }]
  }],
  "order": [0],
});

// in Node we can write to disk
import fs from "fs";
fs.writeFileSync("example.it", Buffer.from(it));

// in the browser we can download a blob
document.location.href = URL.createObjectURL(new File([it], "example.it"));

See ./example.js for a detailed example of the JSON song structure.

Notes

  • Currently only patterns and 16-bit mono/stereo samples are supported, not instruments.

Technical references used