lib/music-transcription/parsing/note_parsing.rb in music-transcription-0.11.0 vs lib/music-transcription/parsing/note_parsing.rb in music-transcription-0.13.0

- old
+ new

@@ -18,105 +18,50 @@ include Link include Duration - def _nt_note - start_index = index - if node_cache[:note].has_key?(index) - cached = node_cache[:note][index] - if cached - node_cache[:note][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true - @index = cached.interval.end - end - return cached + module Note0 + def pl + elements[1] end - - i0 = index - r1 = _nt_polyphonic_note - if r1 - r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true - r0 = r1 - else - r2 = _nt_monophonic_note - if r2 - r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true - r0 = r2 - else - r3 = _nt_rest_note - if r3 - r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true - r0 = r3 - else - @index = i0 - r0 = nil - end - end - end - - node_cache[:note][start_index] = r0 - - r0 end - module RestNote0 - def duration + module Note1 + def first elements[0] end - end - def _nt_rest_note - start_index = index - if node_cache[:rest_note].has_key?(index) - cached = node_cache[:rest_note][index] - if cached - node_cache[:rest_note][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true - @index = cached.interval.end - end - return cached + def more + elements[1] end - - i0, s0 = index, [] - r1 = _nt_duration - s0 << r1 - if s0.last - r0 = instantiate_node(RestNoteNode,input, i0...index, s0) - r0.extend(RestNote0) - else - @index = i0 - r0 = nil - end - - node_cache[:rest_note][start_index] = r0 - - r0 end - module MonophonicNote0 + module Note2 def duration elements[0] end def art elements[1] end - def pl + def pitch_links elements[2] end def acc elements[3] end end - def _nt_monophonic_note + def _nt_note start_index = index - if node_cache[:monophonic_note].has_key?(index) - cached = node_cache[:monophonic_note][index] + if node_cache[:note].has_key?(index) + cached = node_cache[:note][index] if cached - node_cache[:monophonic_note][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + node_cache[:note][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end @@ -130,145 +75,77 @@ else r2 = instantiate_node(SyntaxNode,input, index...index) end s0 << r2 if r2 - r4 = _nt_pitch_link - s0 << r4 - if r4 - r6 = _nt_accent - if r6 - r5 = r6 - else - r5 = instantiate_node(SyntaxNode,input, index...index) - end - s0 << r5 - end - end - end - if s0.last - r0 = instantiate_node(MonophonicNoteNode,input, i0...index, s0) - r0.extend(MonophonicNote0) - else - @index = i0 - r0 = nil - end - - node_cache[:monophonic_note][start_index] = r0 - - r0 - end - - module PolyphonicNote0 - def pl - elements[1] - end - end - - module PolyphonicNote1 - def duration - elements[0] - end - - def art - elements[1] - end - - def pl - elements[2] - end - - def more_pitches - elements[3] - end - - def acc - elements[4] - end - end - - def _nt_polyphonic_note - start_index = index - if node_cache[:polyphonic_note].has_key?(index) - cached = node_cache[:polyphonic_note][index] - if cached - node_cache[:polyphonic_note][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true - @index = cached.interval.end - end - return cached - end - - i0, s0 = index, [] - r1 = _nt_duration - s0 << r1 - if r1 - r3 = _nt_articulation - if r3 - r2 = r3 - else - r2 = instantiate_node(SyntaxNode,input, index...index) - end - s0 << r2 - if r2 - r4 = _nt_pitch_link - s0 << r4 - if r4 - s5, i5 = [], index + i5, s5 = index, [] + r6 = _nt_pitch_link + s5 << r6 + if r6 + s7, i7 = [], index loop do - i6, s6 = index, [] + i8, s8 = index, [] if (match_len = has_terminal?(",", false, index)) - r7 = true + r9 = true @index += match_len else terminal_parse_failure(",") - r7 = nil + r9 = nil end - s6 << r7 - if r7 - r8 = _nt_pitch_link - s6 << r8 + s8 << r9 + if r9 + r10 = _nt_pitch_link + s8 << r10 end - if s6.last - r6 = instantiate_node(SyntaxNode,input, i6...index, s6) - r6.extend(PolyphonicNote0) + if s8.last + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + r8.extend(Note0) else - @index = i6 - r6 = nil + @index = i8 + r8 = nil end - if r6 - s5 << r6 + if r8 + s7 << r8 else break end end - if s5.empty? - @index = i5 - r5 = nil + r7 = instantiate_node(SyntaxNode,input, i7...index, s7) + s5 << r7 + end + if s5.last + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + r5.extend(Note1) + else + @index = i5 + r5 = nil + end + if r5 + r4 = r5 + else + r4 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r4 + if r4 + r12 = _nt_accent + if r12 + r11 = r12 else - r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + r11 = instantiate_node(SyntaxNode,input, index...index) end - s0 << r5 - if r5 - r10 = _nt_accent - if r10 - r9 = r10 - else - r9 = instantiate_node(SyntaxNode,input, index...index) - end - s0 << r9 - end + s0 << r11 end end end if s0.last - r0 = instantiate_node(PolyphonicNoteNode,input, i0...index, s0) - r0.extend(PolyphonicNote1) + r0 = instantiate_node(NoteNode,input, i0...index, s0) + r0.extend(Note2) else @index = i0 r0 = nil end - node_cache[:polyphonic_note][start_index] = r0 + node_cache[:note][start_index] = r0 r0 end module PitchLink0 \ No newline at end of file