Mercurial > hg > dml-open-cliopatria
comparison dml-cla/python/key_tonic_hist.py @ 0:718306e29690 tip
commiting public release
author | Daniel Wolff |
---|---|
date | Tue, 09 Feb 2016 21:05:06 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:718306e29690 |
---|---|
1 # Part of DML (Digital Music Laboratory) | |
2 # Copyright 2014-2015 Samer Abdallah, University College London | |
3 | |
4 # This program is free software; you can redistribute it and/or | |
5 # modify it under the terms of the GNU General Public License | |
6 # as published by the Free Software Foundation; either version 2 | |
7 # of the License, or (at your option) any later version. | |
8 # | |
9 # This program is distributed in the hope that it will be useful, | |
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 # GNU General Public License for more details. | |
13 # | |
14 # You should have received a copy of the GNU General Public | |
15 # License along with this library; if not, write to the Free Software | |
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
17 | |
18 # -*- coding: utf-8 -*- | |
19 __author__="samer" | |
20 | |
21 from rdfutils import * | |
22 from n3Parser import * | |
23 from pitchutils import * | |
24 from aggregate import * | |
25 from csvutils import csv_map_rows | |
26 from warnings import warn | |
27 | |
28 def tonic_from_n3(filename): | |
29 graph=get_rdf_graph_from_n3(filename) | |
30 max_time = 0 | |
31 tonic = None | |
32 for ev, time in graph.subjects_objects(ev_ns.time): | |
33 t = parse_xsd_duration(graph.value(time,tl_ns.at)) | |
34 if t>max_time: tonic = graph.value(ev,af_ns.feature) | |
35 return tonic-1 | |
36 | |
37 def tonic_from_csv(filename): | |
38 # format: time, pitch_class_number, pitch_class_name | |
39 return int(csv_map_rows(filename,3,lambda row:row[1])[-1])-1 | |
40 | |
41 | |
42 def aggregate(inputs): | |
43 parser_table = { 'n3':tonic_from_n3, | |
44 'csv':tonic_from_csv } | |
45 hist = 12*[0] | |
46 def accum(f): hist[decode_tagged(parser_table,f)] += 1 | |
47 stats=for_each(inputs,accum) | |
48 return { 'result': discrete_hist(pitch_class_names,hist), 'stats':stats } |