def test_substitute_reversed(self): sound = SoundBuffer(filename='tests/sounds/linux.wav') waveset = Waveset(sound) rev = waveset.reversed() out = waveset.replace(rev) out = fx.norm(out, 1) out.write('tests/renders/waveset_substitute_reversed.wav')
def test_create_tukey(self): length = 10 shape = dsp.win(shapes.win('sine', length=3), 0, 0.5) chord = tune.chord('i9', octave=2) out = dsp.buffer(length=length) for freq in chord: freq = dsp.wt('sinc', freq, freq * 4) l = Tukey(freq=freq, shape=shape).play(length) l = l.pan(dsp.rand()) out.dub(l) out = fx.norm(out, 0.8) out.write('tests/renders/osc_tukey.wav')
def test_fft_process(self): snd = dsp.read('tests/sounds/guitar1s.wav') length = 2 def cb(pos, real, imag): mag, arg = fft.to_polar(real, imag) mag = fx.lpf(mag, pos * 5000 + 100) return fft.to_xy(mag, arg) bs = dsp.win(shapes.win('sine'), 0.05, 0.3) out = fft.process(snd, bs, length, callback=cb) out = fx.norm(out, 1) out.write('tests/renders/fft_process.wav')
def test_playall(self): events = [] pos = 0 length = 10 while pos < length: events += [ dict(start=pos, length=dsp.rand(0.2, 3), freq=30 * dsp.randint(1, 10), amp=dsp.rand(), voice=dsp.randint(0, 127)) ] pos += dsp.rand(0.01, 0.1) out = soundfont.playall("tests/sounds/florestan-gm.sf2", events) out = fx.norm(out, 0.5) out.write('tests/renders/soundfont_playall.wav')
def test_fft_transform(self): snd = dsp.read('tests/sounds/guitar1s.wav') snd2 = dsp.read('tests/sounds/LittleTikes-B1.wav').cut(0, 1) mod = dsp.buffer(dsp.win('sine', wtsize=len(snd))).remix(1).remix(2) # Transform real1, imag1 = fft.transform(snd) real2, imag2 = fft.transform(snd2) # Do stuff imag = real1 * real2 real = imag1 * imag2 mag, arg = fft.to_polar(real, imag) #mag = fx.lpf(mag, 100) real, imag = fft.to_xy(mag, arg) # Inverse Transform out = fft.itransform(real, imag) out = fx.norm(out, 1) out.write('tests/renders/fft_transform.wav')
def test_playall(self): events = [] pos = 0 length = 3 freqs = tune.degrees(list(range(1, 13))) while pos < length: events += [ dsp.event( onset=pos, length=dsp.rand(0.1, 3), freq=dsp.choice(freqs) * 2**dsp.randint(0, 3), amp=dsp.rand(), voice=dsp.randint(0, 127), ) ] pos += 0.25 out = soundfont.playall("tests/sounds/florestan-gm.sf2", events) out = fx.norm(out, 0.5) out.write('tests/renders/soundfont_playall.wav')
def test_onsets(self): snd = dsp.read('tests/sounds/rain.wav') onsets = mir.onsets(snd, 'specflux') self.assertEqual(len(onsets), 7) onsets = mir.onsets(snd, 'specflux', seconds=False) print(onsets) self.assertEqual(len(onsets), 7) segments = mir.segments(snd, 'specflux') self.assertEqual(len(segments), 7) out = dsp.buffer(length=7) pos = 0 count = 1 for segment in segments: segment = fx.norm(segment.env('pluckout').taper(0.05), 1) segment.write('tests/renders/mir_segment%02d.wav' % count) out.dub(segment, pos) pos += 1 count += 1 out.write('tests/renders/mir_segments.wav')
def test_delay(self): snd = dsp.read('tests/sounds/guitar10s.wav') snd = fx.delay(snd, 1, 0.5) snd = fx.norm(snd, 1) snd.write('tests/renders/fx_delay.wav')
bars = dsp.win('sinc', 3, 40, 50) total_length = sum(bars) stems = {} for stem, cb in ORC.items(): stems[stem] = dsp.buffer(length=total_length) pos = 0 print('STEM', stem) for i, l in enumerate(bars): l = 3 if l <= 0 else l bar = cb(l, pos, total_length) stems[stem].dub(bar, pos) pos += l print(' %s normalize' % stem) stems[stem] = fx.norm(stems[stem], 1) print(' %s write' % stem) stems[stem].write('stem-%s.wav' % stem) print() print('MIXING', total_length) out = dsp.buffer(length=total_length) for stem, layer in stems.items(): out.dub(layer) print('COMPRESSING/WRITING', total_length) out *= 10 out = fx.compressor(out, -10, 10) out = fx.norm(out, 1) out.write('amber-bars.wav')
def test_fold_osc(self): out = Fold('sine', freq=200, amp=[1, 10]).play(1) out = fx.norm(out, 1) out.write('tests/renders/osc_fold.wav')
def test_mdelay(self): snd = dsp.read('tests/sounds/guitar10s.wav') ndelays = 20 snd = fx.mdelay(snd, [ random.triangular(0, 8) for _ in range(ndelays) ], 0.7) snd = fx.norm(snd, 1) snd.write('tests/renders/fx_mdelay.wav')