Esempio n. 1
0
    def test_song(self):
        original = dedent("""\
            Τα μπλε παράθυρά σου

            Bm  Bm  F#  Bm   | 4x

            D
            Περνούσα και σ' αντίκρυζα ψηλά στα παραθύρια   | 2x
            Em
            και τότες πια καμάρωνα τα δυο σου μαύρα φρύδια
            Em                        F#            Bm
            και τότες πια καμάρωνα τα δυο σου μαύρα φρύδια
            """)
        one_up = dedent("""\
            Τα μπλε παράθυρά σου

            Cm  Cm  G   Cm   | 4x

            D#
            Περνούσα και σ' αντίκρυζα ψηλά στα παραθύρια   | 2x
            Fm
            και τότες πια καμάρωνα τα δυο σου μαύρα φρύδια
            Fm                        G             Cm
            και τότες πια καμάρωνα τα δυο σου μαύρα φρύδια
            """)
        transposed = transpose(original, 1)
        assert transposed == one_up
Esempio n. 2
0
    def get(cls, slug, semitones=None, root=None, unicode=False):
        """Load a song from file and optionally transpose it.

        Args:
            slug: The song's slug.
            semitones: Transpose song by given semitones.
            root: Transpose song to the given root.
            unicode: Use unicode sharps and flats in the song's body.
        """
        song = cls.fromfile(filename=slug)
        if semitones is not None:
            song.scale = transpose(song.scale, semitones)
            song.body = transpose(song.body, semitones)
        elif root is not None:
            root = re.sub('s', '#', root)
            old_root = song.scale[0:2].strip()
            song.scale = transpose_to_root(song.scale, old_root, root)
            song.body = transpose_to_root(song.body, old_root, root)
            song.root = root
        if unicode:
            song.scale = to_unicode(song.scale)
            song.body = to_unicode(song.body)

        return song
Esempio n. 3
0
 def test_untransposable(self):
     # Currently doesn't work for a song with both sharps and flats
     original = "A# Bb"
     with pytest.raises(ValueError):
         transpose(original, 1)
Esempio n. 4
0
 def test_transpose_flats(self, semitones, expected):
     assert transpose('AAA Ab Ddim    Db7', semitones) == expected
Esempio n. 5
0
 def test_transpose_sharps(self, semitones, expected):
     assert transpose('AAA G# Ddim    C#7', semitones) == expected