def test_chord_notes_midi_notes(self): region = as_region('[:CEG]') parsed_chord = Chord.parse(region) parsed_chord.resolve(Song()) self.assertEquals(parsed_chord.midi_notes, [24, 28, 31]) region = as_region('[:C+EG+]') parsed_chord = Chord.parse(region) parsed_chord.resolve(Song()) self.assertEquals(parsed_chord.midi_notes, [25, 28, 32])
def test_chord_descriptor_midi_notes(self): region = as_region('[B]') parsed_chord = Chord.parse(region) parsed_chord.resolve(Song()) self.assertEquals(parsed_chord.midi_notes, [35, 39, 42]) region = as_region('[B-]') parsed_chord = Chord.parse(region) parsed_chord.resolve(Song()) self.assertEquals(parsed_chord.midi_notes, [34, 38, 41])
def test_chord_with_bass(self): region = as_region('[:DFA]') parsed_chord = Chord.parse(region) parsed_chord.resolve(Song()) self.assertEquals(parsed_chord.bass_midi_note, 14) region = as_region('[:DFA/C]') parsed_chord = Chord.parse(region) parsed_chord.resolve(Song()) self.assertEquals(parsed_chord.bass_midi_note, 12)
def test_subticks(self): song_lines = """ *song: tempo_bpm=120, ticks_per_beat=4, subticks_per_tick = 5 | [C] c """ parse_string = StringToParse('test_string', song_lines) song = Song.parse(parse_string) self.assertEqualsDisplaying( song, Song([ SongValuesCommand([ SetSongTempoBpm(120), SetSongTicksPerBeat(4), SetSongSubTicksPerTick(5) ]), BarLine(), Chord(ScaleNote(0), descriptor=''), Note(0, duration=(1, 1)) ]))
def test_parse_song_cut(self): song_lines = """ *song: tempo_bpm=120, ticks_per_beat=4 | [C] c e [:FAC] e ! c | [G] r2 """ parse_string = StringToParse('test_string', song_lines) song = Song.parse(parse_string) self.assertEqualsDisplaying( song, Song([ SongValuesCommand( [SetSongTempoBpm(120), SetSongTicksPerBeat(4)]), Note(0, duration=(1, 1)), BarLine(), Chord(ScaleNote(4), descriptor=''), Rest((2, 1)) ]))
def test_parse_song(self): parse_string = StringToParse('test_string', self.song_lines) song = Song.parse(parse_string) self.assertEqualsDisplaying( song, Song([ SongValuesCommand( [SetSongTempoBpm(120), SetSongTicksPerBeat(4)]), TrackValuesCommand('chord', [SetTrackOctave(2), SetTrackInstrument(40)]), TrackValuesCommand( 'bass', [SetTrackOctave(1), SetTrackVolume(90)]), Chord(ScaleNote(0), descriptor=''), Note(0, duration=(1, 1)), Note(2, duration=(1, 1)), Chord(ScaleNote(3), other_notes=[ScaleNote(5), ScaleNote(0)]), Note(2, duration=(1, 1)), Note(0, duration=(1, 2)), Note(0, duration=(1, 2)), BarLine(), Chord(ScaleNote(4), descriptor=''), Note(4, duration=(1, 1)), Rest((2, 1)) ])) chord_track = song.tracks['chord'] self.assertEquals(chord_track.instrument, 40) self.assertEquals(song.tracks['bass'].volume, 90) self.assertEquals(len(chord_track.items), 3) self.assertEquals(len(song.tracks['melody'].items), 6) self.assertEquals(chord_track.items[0].midi_notes, [36, 40, 43]) self.assertEquals(chord_track.items[1].bass_midi_note, 29) self.assertEquals(song.bar_ticks, [0, 16, 32])