Mercurial > hg > silvet
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 |