Beispiel #1
0
    def test_average_pitch_range(self):

        feature = vs.separators.neural.network.features.voice_level.AveragePitchRange

        note1 = vs.Note("C", 4, (0, 0), onset=0)
        note2 = vs.Note("G", 4, (0, 0), onset=1)

        voice1 = vs.Voice(note1)
        voice2 = vs.Voice(note2)

        voice1.link(voice2)

        active_voices = vs.ActiveVoices()

        MIN_PITCH = vs.separators.neural.network.features.constants.MIN_PITCH
        MAX_PITCH = vs.separators.neural.network.features.constants.MAX_PITCH
        GRANULARITY = vs.separators.neural.network.features.constants.GRANULARITY

        interval = (MAX_PITCH - MIN_PITCH) / GRANULARITY

        true_data = [0] * len(np.arange(MIN_PITCH, MAX_PITCH, interval))
        true_data[5] = 1

        expected_data = feature.generate(voice2, active_voices)

        self.assertEqual(true_data, expected_data)
Beispiel #2
0
    def test_position_difference(self):

        feature = vs.separators.neural.network.features.pair_level.PositionDifference

        note1 = vs.Note("C", 4, (0, 0), index=0)
        note2 = vs.Note("D", 4, (0, 0), index=1)
        note3 = vs.Note("E", 4, (0, 1), index=0)

        voice1 = vs.Voice(note1)
        voice2 = vs.Voice(note2)

        active_voices = vs.ActiveVoices()
        active_voices.insert([voice1, voice2])

        data = feature.generate(note3, voice1, active_voices)
        
        self.assertEqual(len(data), 1)
        self.assertEqual(data[0], 1)
Beispiel #3
0
    def test_equal(self):

        note = vs.Note(name="C", octave=4, location=(0, 0))
        voice = vs.Voice(note)

        with self.subTest("equal"):
            self.assertEqual(self.voice, voice)

        with self.subTest("hash"):
            self.assertEqual(hash(self.voice), hash(voice))
Beispiel #4
0
    def setUp(self):

        path = os.path.dirname(os.path.abspath(__file__))
        self.score = vs.Score(f"{path}/test.musicxml")

        voice1 = vs.Voice(self.score[0][0])
        voice2 = vs.Voice(self.score[0][1])
        voice3 = vs.Voice(self.score[1][0])
        voice4 = vs.Voice(self.score[1][1])

        self.active_voices = vs.ActiveVoices()

        self.active_voices.insert([voice1, voice2])

        voice1.link(voice3)
        voice1.link(voice4)
        voice2.link(voice3)
        voice2.link(voice4)

        self.active_voices.insert([voice3, voice4])
Beispiel #5
0
    def test_link(self):

        right_voice = vs.Voice(self.note)
        self.voice.link(right_voice)

        with self.subTest("left voice left length"):
            self.assertEqual(len(self.voice.left), 0)

        with self.subTest("left voice right length"):
            self.assertEqual(len(self.voice.right), 1)

        with self.subTest("right voice left length"):
            self.assertEqual(len(right_voice.left), 1)

        with self.subTest("right voice right length"):
            self.assertEqual(len(right_voice.right), 0)

        with self.subTest("left voice right value"):
            self.assertEqual(next(iter(self.voice.right)), right_voice)

        with self.subTest("right voice left value"):
            self.assertEqual(next(iter(right_voice.left)), self.voice)
Beispiel #6
0
    def setUp(self):

        self.note = vs.Note(name="C", octave=4, location=(0, 0))
        self.voice = vs.Voice(self.note)
Beispiel #7
0
    def test_less_than(self):

        note_d = vs.Note(name="D", octave=4, location=(0, 0))
        voice_d = vs.Voice(note_d)

        self.assertLess(self.voice, voice_d)
Beispiel #8
0
    def test_not_equal(self):

        note = vs.Note(name="D", octave=4, location=(0, 0))
        voice = vs.Voice(note)

        self.assertNotEqual(self.voice, voice)