Skip to content

ephemeralwaves/L-System-Music-Module

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 called fractalmelody.mid (this name can be changed in Melody.js) 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

About

Npm module for monophonic melody generation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published