def test_dynamics_linear_crecendo(self): from sebastian.core.transforms import dynamics s1 = self.make_sequence() s1 = s1 * 5 velocitied = s1 | dynamics("ppp", "fff") self.assertEqual([p["velocity"] for p in velocitied], [24, 34, 44, 54, 64, 74, 84, 94, 104, 114])
def test_all_dynamic_markers(self): from sebastian.core.transforms import dynamics s1 = self.make_sequence() velocities = ["pppppp", "ppppp", "pppp", "ppp", "pp", "p", "mp", "mf", "f", "ff", "fff", "ffff"] for velocity in velocities: dynamiced = s1 | dynamics(velocity) self.assertTrue("velocity" in dynamiced[0])
def test_all_dynamic_markers(self): from sebastian.core.transforms import dynamics s1 = self.make_sequence() velocities = [ "pppppp", "ppppp", "pppp", "ppp", "pp", "p", "mp", "mf", "f", "ff", "fff", "ffff" ] for velocity in velocities: dynamiced = s1 | dynamics(velocity) self.assertTrue("velocity" in dynamiced[0])
def test_dynamics(self): from sebastian.core.transforms import dynamics s1 = self.make_sequence() dynamiced = s1 | dynamics("ff") self.assertEqual([p.tuple("velocity") for p in dynamiced], [(94, ), (94, )])
from sebastian.lilypond import write_lilypond # construct sequences using lilypond syntax melody = parse("e4 e f g g f e d c c d e") A = parse("e4. d8 d2") Aprime = parse("d4. c8 c2") two_bars = melody + A + melody + Aprime two_bars = two_bars | midi_to_pitch() two_bars = two_bars | add({"octave": 5}) velocities = [ "pppppp", "ppppp", "pppp", "ppp", "pp", "p", "mp", "mf", "f", "ff", "fff", "ffff" ] for d in velocities: two_bars_with_dynamics = two_bars | dynamics(d) write_midi.write("ode_%s.mid" % (d, ), [two_bars_with_dynamics]) two_bars_ff_lily = two_bars | dynamics("ff") | lilypond() write_lilypond.write("ode_ff.ly", two_bars_ff_lily) crescendo = two_bars | dynamics("ppp", "ff") write_midi.write("ode_crescendo.mid", [crescendo]) write_lilypond.write("ode_crescendo.ly", crescendo | lilypond()) diminuendo = two_bars | dynamics("mf", "pppp") write_midi.write("ode_diminuendo.mid", [diminuendo]) write_lilypond.write("ode_diminuendo.ly", diminuendo | lilypond())
from sebastian.lilypond.interp import parse from sebastian.core.transforms import dynamics, lilypond, midi_to_pitch, add from sebastian.midi import write_midi from sebastian.lilypond import write_lilypond # construct sequences using lilypond syntax melody = parse("e4 e f g g f e d c c d e") A = parse("e4. d8 d2") Aprime = parse("d4. c8 c2") two_bars = melody + A + melody + Aprime two_bars = two_bars | midi_to_pitch() two_bars = two_bars | add({"octave": 5}) velocities = ["pppppp", "ppppp", "pppp", "ppp", "pp", "p", "mp", "mf", "f", "ff", "fff", "ffff"] for d in velocities: two_bars_with_dynamics = two_bars | dynamics(d) write_midi.write("ode_%s.mid" % (d,), [two_bars_with_dynamics]) two_bars_ff_lily = two_bars | dynamics("ff") | lilypond() write_lilypond.write("ode_ff.ly", two_bars_ff_lily) crescendo = two_bars | dynamics("ppp", "ff") write_midi.write("ode_crescendo.mid", [crescendo]) write_lilypond.write("ode_crescendo.ly", crescendo | lilypond()) diminuendo = two_bars | dynamics("mf", "pppp") write_midi.write("ode_diminuendo.mid", [diminuendo]) write_lilypond.write("ode_diminuendo.ly", diminuendo | lilypond())
def test_dynamics(self): from sebastian.core.transforms import dynamics s1 = self.make_sequence() dynamiced = s1 | dynamics("ff") self.assertEqual([p.tuple("velocity") for p in dynamiced], [(94,), (94,)])