Skip to content

Commit

Permalink
more minim goodness
Browse files Browse the repository at this point in the history
  • Loading branch information
Jonathan Feinberg committed Aug 16, 2010
1 parent 8439c1a commit 6715564
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 3 deletions.
61 changes: 61 additions & 0 deletions examples.py/Library/Minim (Sound)/BandPassFilter/BandPassFilter.py
@@ -0,0 +1,61 @@
"""
* Band Pass Filter
* by Damien Di Fede. (Adapted to Python by Jonathan Feinberg)
*
* This sketch demonstrates how to use the BandPass effect.
* Move the mouse left and right to change the frequency of the pass band.
* Move the mouse up and down to change the band width of the pass band.
"""

from ddf.minim import Minim, AudioPlayer
from ddf.minim.effects import BandPass

def setup():
size(512, 200, P2D)

global minim, groove, bpf

minim = Minim(this)

groove = minim.loadFile("groove.mp3")
groove.loop()
# make a band pass filter with a center frequency of 440 Hz and a bandwidth of 20 Hz
# the third argument is the sample rate of the audio that will be filtered
# it is required to correctly compute values used by the filter
bpf = BandPass(440, 20, groove.sampleRate())
groove.addEffect(bpf)

def draw():
background(0)
stroke(255)
# draw the waveforms
# the values returned by left.get() and right.get() will be between -1 and 1,
# so we need to scale them up to see the waveform
for i in xrange(groove.right.size() - 1):
x1 = map(i, 0, groove.bufferSize(), 0, width)
x2 = map(i + 1, 0, groove.bufferSize(), 0, width)
line(x1, height / 4 - groove.left.get(i) * 50,
x2, height / 4 - groove.left.get(i + 1) * 50)
line(x1, 3 * height / 4 - groove.right.get(i) * 50,
x2, 3 * height / 4 - groove.right.get(i + 1) * 50)

# draw a rectangle to represent the pass band
noStroke()
fill(255, 0, 0, 60)
rect(mouseX - bpf.getBandWidth() / 20, 0, bpf.getBandWidth() / 10, height)

def mouseMoved():
# map the mouse position to the range [100, 10000], an arbitrary range of passBand frequencies
passBand = map(mouseX, 0, width, 100, 2000)
bpf.setFreq(passBand)
bandWidth = map(mouseY, 0, height, 50, 500)
bpf.setBandWidth(bandWidth)
# prints the new values of the coefficients in the console
bpf.printCoeff()

def stop():
# always close Minim audio classes when you finish with them
groove.close()
# always stop Minim before exiting
minim.stop()

Binary file not shown.
6 changes: 3 additions & 3 deletions examples.py/Library/Minim (Sound)/LoadSample/LoadSample.py
Expand Up @@ -41,11 +41,11 @@ def setup():
# always start Minim before you do anything with it
global minim
minim = Minim(this)
global kick
# load BD.mp3 from the data folder with a 1024 sample buffer
# kick = Minim.loadSample("BD.mp3")
kick = minim.loadSample("BD.mp3")
# load BD.mp3 from the data folder, with a 512 sample buffer
global kick
kick = minim.loadSample("BD.mp3", 2048)
#kick = minim.loadSample("BD.mp3", 2048)

def draw():
background(0)
Expand Down

0 comments on commit 6715564

Please sign in to comment.