def test_replay(jam_in, audio_file): T = muda.deformers.LogspaceTimeStretch() S = muda.deformers.PitchShift(n_semitones=1) P = muda.Pipeline([('time', T), ('pitch', S)]) # Load in the jam and transform it jam_1 = muda.load_jam_audio(jam_in, audio_file) jam_muda = next(P.transform(jam_1)) # Load a fresh copy of the jam jam_2 = muda.load_jam_audio(jam_in, audio_file) # Pop the audio container out of the jam2 sandbox _audio = jam_muda.sandbox.muda._audio jam_new = muda.replay(jam_muda, jam_2) # 1: check all annotations for a1, a2 in zip(jam_muda.annotations, jam_new.annotations): assert a1 == a2 # 2: check audio assert np.allclose(_audio['y'], jam_new.sandbox.muda._audio['y']) assert _audio['sr'] == jam_new.sandbox.muda._audio['sr'] # Verify that the objects are in fact distinct assert jam_muda is not jam_new
def test_serialize_pipeline(): D1 = muda.deformers.LogspaceTimeStretch() D2 = muda.deformers.LogspaceTimeStretch() P_orig = muda.Pipeline([('stretch_1', D1), ('stretch_2', D2)]) P_ser = muda.serialize(P_orig) P_new = muda.deserialize(P_ser) assert P_orig is not P_new assert P_orig.get_params() == P_new.get_params()
def test_pipeline(jam_fixture): D1 = muda.deformers.TimeStretch(rate=2.0) D2 = muda.deformers.TimeStretch(rate=1.5) P = muda.Pipeline([('stretch_1', D1), ('stretch_2', D2)]) jam_orig = deepcopy(jam_fixture) for jam_new in P.transform(jam_orig): assert jam_new is not jam_orig __test_time(jam_orig, jam_fixture, 1.0) # Verify that the state and history objects are intact __test_deformer_history(D1, jam_new.sandbox.muda.history[0]) __test_deformer_history(D2, jam_new.sandbox.muda.history[-1]) __test_time(jam_orig, jam_new, D1.rate[0] * D2.rate[0])
def test_bad_pipeline_object(): D = muda.deformers.TimeStretch(rate=2.0) muda.Pipeline([('stretch1', D), ('stretch2', 'not a basetransformer')])
def test_bad_pipeline_unique(): D1 = muda.deformers.TimeStretch(rate=2.0) D2 = muda.deformers.TimeStretch(rate=1.5) muda.Pipeline([('stretch', D1), ('stretch', D2)])
import muda import jams import wave jam=jams.JAMS() j_orig = muda.load_jam_audio(jam, '01-Make_It.wav') # f=wave.open('01-Make_It.wav','rb') # params=f.getparams() # n_channels,samp_width,frame_rate,n_frames=params[:4] # # print(samp_width) pitch=muda.deformers.PitchShift(n_semitones=2) stretch=muda.deformers.TimeStretch(rate=0.8) pipline=muda.Pipeline(steps=[('pitch_shift',pitch), ('time_stretch',stretch)]) output_jams=list(pipline.transform(j_orig))