l-system-melody

1.0.2 • Public • Published

Based on the the Fractal-Music-Generator Musescore 2.0 plugin, an npm module to create monophonic melodies using L-Systems.

I created this as a compositional tool and the rule set can be changed to generate different melodies. The rule set I used is one that is usually used in visual art to generate Koch curves, rules : (F -> F+F-F-F+F).

The melody generator interprets each “F” as a note and each “+” or “-” as going up or down a pitch. I set my start note to “C4”, confined the melody to only move up and down the C pentatonic scale and created the score below using the Koch curve ruleset as seen above. The rule set can be changed by changing 'therules' array.

Install

npm i l-system-melody

OR

git clone https://github.com/ephemeralwaves/L-System-Music-Module.git
 
npm install

Run

node example.js

This should output a midi file which can be played or examined in sheetmusic software like Musescore.

Usage

const Lindenmayer = require('l-system-melody').Lsystem;
const lindenmayer = new Lindenmayer();
const Melody = require('l-system-melody').Melody;
const melody = new Melody();
 
// Initializing a L-System that produces the Koch-curve
var numberOfIterations = 4; // how many l-system iterations to pre-compute
var theString = 'F'; // "axiom" or start of the string
var theRules = []; // array for rules
theRules[0] = ['F', 'F+F-F-F+F']; // rules based on Koch Curve
var computedString; // variable to store the computed string
 
// Compute L-System
lindenmayer.compute(numberOfIterations,theString,theRules, function(theString) {
  computedString = theString;
  return computedString;
});
 
//Create Melody
melody.create(computedString);
 

API

new Lindenmayer()

Create a generator instance.

.compute(numberOfIterations,thestring,theRules)

numberOfIterations

Number of times you want to iterate on the rule set

thestring

The starting string from which to iterate from

therules

The rule set, in example file the rule is set to F+F-F-F+F

Package Sidebar

Install

npm i l-system-melody

Weekly Downloads

1

Version

1.0.2

License

ISC

Unpacked Size

44.1 kB

Total Files

9

Last publish

Collaborators

  • ephemeralwaves