-
-
Save dayvsonlima/686a6591917dfd71fe22789e8ae2141a to your computer and use it in GitHub Desktop.
A Demonstration of Minim in Ruby-Processing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Sounder sounds for class | |
# Requires an active microphone to pick up anything | |
require 'ruby-processing' | |
class MinimTest < Processing::App | |
load_library "minim" | |
import "ddf.minim" | |
import "ddf.minim.analysis" | |
def setup | |
@minim = Minim.new(self) | |
@input = @minim.get_line_in | |
@fft = FFT.new(@input.left.size, 44100) | |
@beat = BeatDetect.new | |
@radius = 0 | |
end | |
def draw | |
background 0 | |
stroke 255 | |
draw_beat | |
draw_waveform | |
draw_frequency | |
end | |
def draw_beat | |
@beat.detect @input.left | |
@radius = 100 if @beat.is_onset | |
@radius *= 0.95 | |
oval width/2, height/2, @radius, @radius | |
end | |
def draw_waveform | |
scale = height / 4 | |
(@input.buffer_size - 1).times do |i| | |
line(i, scale + @input.left.get(i)*scale, | |
i+1, scale + @input.left.get(i+1) * scale) | |
end | |
end | |
def draw_frequency | |
@fft.forward @input.left | |
scale = width / 50 | |
50.times do |i| | |
@fft.scale_band i, i * 0.35 + 1 | |
@fft.scale_band i, 0.3 | |
line i*scale, height, i*scale, height - @fft.get_band(i)*4 | |
end | |
end | |
end | |
MinimTest.new :width => 700, :height => 700, :title => "Minim Test" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment