annotate yeti/templates.yeti @ 13:e15bc63cb146

Ranges, EM initialisation
author Chris Cannam
date Fri, 21 Mar 2014 18:12:38 +0000
parents 0f6db1895e1c
children a91de434feb8
rev   line source
Chris@12 1
Chris@12 2 module templates;
Chris@12 3
Chris@12 4 vec = load may.vector;
Chris@13 5 mat = load may.matrix;
Chris@12 6
Chris@12 7 // Load instrument templates
Chris@12 8
Chris@12 9 instruments = [
Chris@12 10 "bassoon",
Chris@12 11 "cello",
Chris@12 12 "clarinet",
Chris@12 13 "flute",
Chris@12 14 "guitar",
Chris@12 15 "horn",
Chris@12 16 "oboe",
Chris@12 17 "tenorsax",
Chris@12 18 "violin",
Chris@12 19 "piano-maps-SptkBGCl"
Chris@12 20 ];
Chris@12 21
Chris@12 22 loadTemplates () = mapIntoHash id
Chris@12 23 do instrument:
Chris@12 24 readFile "../data/\(instrument).csv" "UTF-8"
Chris@12 25 do istr:
Chris@13 26 mat.fromColumns
Chris@12 27 (map do line:
Chris@12 28 vec.fromList (map number (strSplit "," line))
Chris@13 29 done (istr.lines ()));
Chris@12 30 done;
Chris@12 31 done instruments;
Chris@12 32
Chris@13 33 //!!! these ranges are hardcoded in the original (and are a bit more restrictive)
Chris@13 34 extractRanges templates = mapIntoHash id
Chris@13 35 do instrument:
Chris@13 36 levels = map vec.sum (mat.asColumns (templates[instrument]));
Chris@13 37 first = length levels - length (find (>0) levels);
Chris@13 38 last = length (find (>0) (reverse levels)) - 1;
Chris@13 39 { lowestNote = first, highestNote = last }
Chris@13 40 done (keys templates);
Chris@13 41
Chris@12 42 {
Chris@13 43 loadTemplates,
Chris@13 44 extractRanges
Chris@12 45 }
Chris@12 46