--- /dev/null
+% Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/voice-2.midi
+\version "2.13.53"
+
+\layout {
+ \context {
+ \Voice
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ \remove "Rest_engraver"
+ \consists "Completion_rest_engraver"
+ }
+}
+
+% included from ./out-www/voice-2.header
+\header {
+texidoc="midi2ly --duration-quant quantizes durations of notes"
+options="--duration-quant=4"
+}
+% end
+
+trackAchannelA = {
+
+ % [SEQUENCE_TRACK_NAME] control track
+
+ % [TEXT_EVENT] creator:
+
+ % [TEXT_EVENT] GNU LilyPond 2.13.54
+
+ \time 4/4
+
+ \tempo 4 = 60
+
+}
+
+trackA = <<
+ \context Voice = voiceA \trackAchannelA
+>>
+
+
+trackBchannelA = \relative c {
+ r4*1/8 c4*7/8
+ c4*7/8 r4*1/8
+}
+
+trackB = <<
+ \context Voice = voiceA \trackBchannelA
+>>
+
+
+\score {
+ <<
+ %\set Score.midiChannelMapping = #'voice
+ \context Staff=trackB \trackB
+ >>
+ \layout {}
+ \midi {}
+}
--- /dev/null
+% Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/voice-2.midi
+\version "2.13.53"
+
+\layout {
+ \context {
+ \Voice
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ \remove "Rest_engraver"
+ \consists "Completion_rest_engraver"
+ }
+}
+
+% included from ./out-www/voice-2.header
+\header {
+texidoc="midi2ly --start-quant quantizes start of notes"
+options="--start-quant=4"
+}
+% end
+
+trackAchannelA = {
+
+ % [SEQUENCE_TRACK_NAME] control track
+
+ % [TEXT_EVENT] creator:
+
+ % [TEXT_EVENT] GNU LilyPond 2.13.54
+
+ \time 4/4
+
+ \tempo 4 = 60
+
+}
+
+trackA = <<
+ \context Voice = voiceA \trackAchannelA
+>>
+
+
+trackBchannelA = \relative c {
+ r4*1/8 c4*7/8
+ c4*7/8 r4*1/8
+}
+
+trackB = <<
+ \context Voice = voiceA \trackBchannelA
+>>
+
+
+\score {
+ <<
+ \set Score.midiChannelMapping = #'voice
+ \context Staff=trackB \trackB
+ >>
+ \layout {}
+ \midi {}
+}
if start_quant_clocks:
t = quantise_clocks (t, start_quant_clocks)
-
if (e[1][0] == midi.NOTE_OFF
or (e[1][0] == midi.NOTE_ON and e[1][2] == 0)):
debug ('%d: NOTE OFF: %s' % (t, e[1][1]))
return 'voice' + number2ascii (i)
return ''
+def lst_append (lst, x):
+ lst.append (x)
+ return lst
+
def get_voice_layout (average_pitch):
d = {}
for i in range (len (average_pitch)):
- d[average_pitch[i]] = i
+ d[average_pitch[i]] = lst_append (d.get (average_pitch[i], []), i)
s = list (reversed (sorted (average_pitch)))
non_empty = len (filter (lambda x: x, s))
names = ['One', 'Two']
for i, n in zip (s, names):
if i:
v = d[i]
+ if type (v) == list:
+ d[i] = v[1:]
+ v = v[0]
layout[v] = n
return layout