def command_instrumental(*args): if len(args) != 2: usage() return w = wav.Wav(args[0]) out = music.extract_instrumentals(w.time_series) wav.write(args[1], out, w.sample_rate)
def generate(wavlist): """Generates basic mashup from list of waves Arguments: wavlist -- list of wav.Wav instances. Assumes at least one wav is present and that 44100 Hz is an appropriate sample rate. Returns numpy array of mashed-up samples suitable for output """ SAMPLES = 100 base = music.extract_instrumentals(wavlist[0].time_series) base_segment = (0, 0, wavlist[0].nsamples, 0, .7) motifs = [] for i, w in enumerate(wavlist[1:]): print 'resampling wave', i + 1 signal = w.resample(SAMPLES) print 'finding motifs for wave', i + 1 motif = mta.get_longest_motif(signal) motifs.append([i + 1, motif]) random.shuffle(motifs) segments = [base_segment] wavs = [base] start = 10 * SEC iterator = itertools.cycle(motifs) while start < wavlist[0].nsamples: (i, (mstart, mend)) = next(iterator) end = start + ((mend - mstart) / float(SAMPLES)) * wavlist[i].nsamples end = int(end) offset = mstart segment = (i, start, end, offset, 0.8) segments.append(segment) wavs.append(w.time_series) start = end + 5 * SEC print "mashing..." return construct(wavs, segments)