annotate yeti/em.yeti @ 13:e15bc63cb146

Ranges, EM initialisation
author Chris Cannam
date Fri, 21 Mar 2014 18:12:38 +0000
parents
children a91de434feb8
rev   line source
Chris@13 1
Chris@13 2 module em;
Chris@13 3
Chris@13 4 mm = load may.mathmisc;
Chris@13 5 vec = load may.vector;
Chris@13 6 mat = load may.matrix;
Chris@13 7
Chris@13 8 initialiseEM ranges notes size =
Chris@13 9 {
Chris@13 10 pitches = // z in the original
Chris@13 11 array (map do note:
Chris@13 12 map \(mm.random ()) [0..size.columns-1]
Chris@13 13 done [0..notes-1]),
Chris@13 14 sources =
Chris@13 15 mapIntoHash id // u in the original
Chris@13 16 do instrument:
Chris@13 17 array (map do note:
Chris@13 18 if note >= ranges[instrument].lowestNote and
Chris@13 19 note <= ranges[instrument].highestNote
Chris@13 20 then vec.ones size.columns
Chris@13 21 else vec.zeros size.columns
Chris@13 22 fi
Chris@13 23 done [0..notes-1])
Chris@13 24 done (keys ranges);
Chris@13 25 };
Chris@13 26
Chris@13 27 {
Chris@13 28 initialiseEM
Chris@13 29 }
Chris@13 30
Chris@13 31