annotate yeti/templates.yeti @ 304:f5f3b50b2b9f livemode

Bump version for live mode
author Chris Cannam
date Fri, 05 Dec 2014 16:40:51 +0000
parents 990b8b8b7e25
children
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@23 33 hardcodedRanges = [
Chris@23 34 "bassoon": { lowest = 15, highest = 51 },
Chris@23 35 "cello": { lowest = 15, highest = 60 },
Chris@23 36 "clarinet": { lowest = 29, highest = 68 },
Chris@23 37 "flute": { lowest = 39, highest = 72 },
Chris@23 38 "guitar": { lowest = 19, highest = 55 },
Chris@23 39 "horn": { lowest = 20, highest = 56 },
Chris@23 40 "oboe": { lowest = 37, highest = 70 },
Chris@23 41 "tenorsax": { lowest = 23, highest = 54 },
Chris@23 42 "violin": { lowest = 34, highest = 72 },
Chris@23 43 "piano-maps-SptkBGCl": { lowest = 16, highest = 72 },
Chris@23 44 ];
Chris@23 45
Chris@22 46 //!!! these ranges are hardcoded, in the original (and are a bit more restrictive)
Chris@23 47 extractRanges' templates = mapIntoHash id
Chris@13 48 do instrument:
Chris@13 49 levels = map vec.sum (mat.asColumns (templates[instrument]));
Chris@13 50 first = length levels - length (find (>0) levels);
Chris@13 51 last = length (find (>0) (reverse levels)) - 1;
Chris@14 52 { lowest = first, highest = last }
Chris@13 53 done (keys templates);
Chris@13 54
Chris@23 55 extractRanges templates = hardcodedRanges;
Chris@23 56
Chris@12 57 {
Chris@13 58 loadTemplates,
Chris@13 59 extractRanges
Chris@12 60 }
Chris@12 61