Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)