def get_key_profiles(): """ Return dictionary of typical pitch class distribution for all keys """ profiles = {} for tonic in pd.NOTES: for scale in pd.SCALES: key = pd.Key(tonic, scale) profiles[key] = key.get_key_profile() return profiles
def test_audio_file_in_A_minor(self): dist = pd.PitchDistribution.from_file('tests/testaudio/Dragonfly.mp3') actual = self.krumhansl_schmuckler.get_key(dist) expected = pd.Key('A', 'minor') self.assertEqual(actual, expected)
def test_audio_file_in_F(self): dist = pd.PitchDistribution.from_file('tests/testaudio/Morning_Mandolin.mp3') actual = self.krumhansl_schmuckler.get_key(dist) expected = pd.Key('F', 'major') self.assertEqual(actual, expected)
def test_audio_file_in_G(self): dist = pd.PitchDistribution.from_file('tests/testaudio/Campfire_Song.mp3') actual = self.krumhansl_schmuckler.get_key(dist) expected = pd.Key('G', 'major') self.assertEqual(actual, expected)
def test_leading_tone(self): values = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3] dist = pd.PitchDistribution(values) actual = self.krumhansl_schmuckler.get_key(dist) expected = pd.Key('G#', 'major') self.assertEqual(actual, expected)
def test_add_4_triad(self): values = [2, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0] dist = pd.PitchDistribution(values) actual = self.krumhansl_schmuckler.get_key(dist) expected = pd.Key('A', 'major') self.assertEqual(actual, expected)
def test_get_key_profile_with_loop(self): actual = pd.Key('F', 'major').get_key_profile().to_array() expected = [0.13, 0.10, 0.06, 0.14, 0.03, 0.11, 0.03, 0.09, 0.16, 0.03, 0.09, 0.03] self.assertEqual(actual, expected)
def test_get_key_profile_sanity_check(self): actual = pd.Key('A', 'major').get_key_profile().to_array() expected = pd.MAJOR_SCALE_PROFILE self.assertEqual(actual, expected)
def test_audio_file_in_G_minor(self): dist = pd.PitchDistribution.from_file('tests/testaudio/Butchers.mp3') actual = self.naive_bayes.get_key(dist) expected = pd.Key('G', 'minor') self.assertEqual(actual, expected)
def test_add_4_triad(self): values = [2, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0] dist = pd.PitchDistribution(values) actual = self.naive_bayes.get_key(dist) expected = pd.Key('A', 'major') self.assertEqual(actual, expected)
def test_leading_tone(self): values = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3] dist = pd.PitchDistribution(values) actual = self.naive_bayes.get_key(dist) expected = pd.Key('G#', 'major') self.assertEqual(actual, expected)