In [8]:
import numpy as np
from scipy.io import wavfile
import matplotlib.pyplot as plt
In [18]:
sr = 44100
bpm = 120
bps = bpm/60
seconds_per_beat = 1/bps
samples_per_beat = seconds_per_beat * sr
nbeats = 4
nseconds = nbeats * samples_per_beat
nsamples = int(nseconds * sr)
In [12]:
kick1 = wavfile.read("kick1fpm.wav")
kick1sr, kick1data = kick1
kick1data = kick1data.astype(np.float64)
In [10]:
output = np.zeros(nsamples,dtype=np.float64)
In [14]:
def writeinto(target, source, position, mult=1.0):
    tlen = len(target)
    slen = len(source)
    wlen = min(tlen-position,slen)
    sslice = source[:wlen]
    target[position:position+wlen] = sslice
    if mult != 1.0:
        target[position:position+wlen] = sslice*mult
    else:
        target[position:position+wlen] = sslice
def addinto(target, source, position, mult=1.0):
    tlen = len(target)
    slen = len(source)
    wlen = min(tlen-position,slen)
    sslice = source[:wlen]
    if mult != 1.0:
        target[position:position+wlen] += sslice*mult
    else:
        target[position:position+wlen] += sslice
In [20]:
spb = samples_per_beat
for i in range(nbeats):
    pos = int(i*spb)
    print(pos,spb)
    writeinto(output,kick1data,pos)
0 22050.0
22050 22050.0
44100 22050.0
66150 22050.0
In [21]:
plt.plot(output)
Out[21]:
[<matplotlib.lines.Line2D at 0x76873c08d650>]
No description has been provided for this image
In [22]:
from IPython.display import Audio
Audio(output,rate=sr)
Out[22]:
Your browser does not support the audio element.
In [26]:
wavfile.write("output.wav",sr,output)
In [ ]: