UNPKG

p5.gibber.js

Version:

Music and audio programming for p5.js

60 lines (46 loc) 1.64 kB
<head> <script language="javascript" src="../resources/p5.min.js"></script> <script src="../resources/p5.gibber.min.js" type="text/javascript" charset="utf-8"></script> <script language="javascript" src="sketch.js"></script> <link rel="stylesheet" href="../resources/examples.css"> <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="../resources/monokai_sublime.css"> <script src="../resources/highlight.pack.js"></script> <script>hljs.initHighlightingOnLoad();</script> </head> <body> <div id='code'> <pre><code>// sketch.js // fftSize must be at least 32, and a power of 2 (32,64,128,256 etc.) var fftSize = 32 function setup() { createCanvas( windowWidth, windowHeight ) drums = EDrums('x*o*x*o-') drums.amp = .75 bass = FM('bass') .note.seq( [0,0,0,7,14,13].rnd(), [1/8,1/16].rnd(1/16,2) ) rhodes = Synth( 'rhodes', {amp:.35} ) .chord.seq( Rndi(0,6,3), 1 ) .fx.add( Delay() ) fft = FFT( fftSize ) Gibber.scale.root.seq( ['c4','ab3','bb3'], [4,2,2] ) Gibber.scale.mode.seq( ['Minor','Mixolydian'], [6,2] ) noStroke() colorMode( HSB, 255 ) } function draw() { background( 64 ) var numBars = fftSize / 2, barHeight = ( height - 1 ) / numBars, barColor = null, value = null for( var i = 0; i < numBars; i++ ) { barColor = color( ( i / numBars ) * 255, 255, 255 ) fill( barColor ) // read FFT value, which ranges from 0-255, and scale it. value = ( fft[ i ] / 255 ) * width rect( 0, barHeight * i, value, barHeight ) } } </code></pre> </body>