Class BigWaveSynth
- All Implemented Interfaces:
processing.core.PConstants
Initially, we call initWaveDataList() to create a WaveData array with two
operators for the WaveSynth, but you can open one of the JSON files in the
"examples_data/JSON" folder to reconfigure the WaveSynth with a different
pattern. The appearance of a WaveSynth image is governed by the PixelMapGen
we use and by the internal sampling rate of the WaveSynth. You can change
the PixelMapGen we're using with the 'g' key command. You can change the
internal sample rate of the WaveSynth with the 'r' key command. The sound
the WaveSynth can be determined by the internal sampling rate of the
WaveSynth or by the audioOut.sampleRate(). Press the 'p' key to
toggle the playback rate flag, playAtAssignedFrequency. When
playAtAssignedFrequency is true, changing the internal rate of the
WaveSynth will not change the audio frequency. When it's false, the
pitch of the audio will change as the sampling rate changes. See the
renderSignal() and updatAudioChain(sig) methods for
details of how sample rates are used.
Press (tab) to turn animation on or off. Press ' ' (spacebar) to play audio for the point the mouse is currently over Press 'g' to step through PixelMapGen instances hilb3x2Gen, bGen, and zGen. Press 'o' to open a JSON file that defines a WaveSynth. Press 'O' to reopen JSON file, if one is already open, or open a new JSON file. Press 'j' or 'J' to save WaveSynth data to a JSON file. Press 'f' to print the frameRate to the console. Press 'r' to step through different settings of wavesynth.sampleRate. Press 'R' to reset WaveSynth sample rate to genWidth * genHeight. Press 'i' to reset animation step to 0. Press 'p' to toggle playback rate mode. Press 'S' to save WaveSynth audio to a WAV file. Press 'w' or 'W' to toggle audio buffer wrap around. Press 'v' or 'V' to toggle video recording. Press 'h' to show help and key commands.See WaveSynthEditor for the complete set of WaveSynth parameters you can edit in a GUI, load and save to files, and output as video. See also: SimpleWaveSynth, WaveSynthSequencer.
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) int(package private) int(package private) float(package private) ddf.minim.MultiChannelBuffer(package private) int(package private) ddf.minim.AudioOutput(package private) float[](package private) BoustropheGen(package private) int(package private) int(package private) String(package private) File(package private) String(package private) float(package private) PixelMapGen(package private) int(package private) int(package private) MultiGen(package private) boolean(package private) boolean(package private) boolean(package private) boolean(package private) processing.data.JSONObject(package private) String(package private) PixelAudioMapper(package private) float(package private) ddf.minim.Minim(package private) float(package private) int(package private) boolean(package private) float(package private) PixelAudio(package private) boolean(package private) PASamplerInstrumentPool(package private) int(package private) float(package private) int(package private) int(package private) int(package private) float(package private) ADSRParams(package private) float(package private) int(package private) int(package private) int(package private) int(package private) float(package private) processing.core.PImage(package private) ArrayList<TimedLocation>(package private) String(package private) com.hamoid.VideoExport(package private) WaveSynth(package private) int(package private) DiagonalZigzagGenFields inherited from class processing.core.PApplet
args, ARGS_BGCOLOR, ARGS_DISABLE_AWT, ARGS_DISPLAY, ARGS_EDITOR_LOCATION, ARGS_EXTERNAL, ARGS_FULL_SCREEN, ARGS_HIDE_STOP, ARGS_LOCATION, ARGS_PRESENT, ARGS_SKETCH_FOLDER, ARGS_STOP_COLOR, ARGS_UI_SCALE, ARGS_WINDOW_COLOR, DEFAULT_HEIGHT, DEFAULT_WIDTH, disableAWT, displayHeight, displayWidth, dmouseX, dmouseY, emouseX, emouseY, exitCalled, EXTERNAL_MOVE, EXTERNAL_STOP, finished, firstMouse, focused, frameCount, frameRate, frameRateLastNanos, g, height, insideDraw, javaPlatform, javaVersion, javaVersionName, key, keyCode, keyEvent, keyPressed, keyRepeatEnabled, looping, matchPatterns, mouseButton, mouseEvent, mousePressed, mouseX, mouseY, pixelDensity, pixelHeight, pixels, pixelWidth, platform, pmouseX, pmouseY, ratioLeft, ratioScale, ratioTop, recorder, redraw, rheight, rmouseX, rmouseY, rwidth, surface, useNativeSelect, width, windowX, windowYFields inherited from interface processing.core.PConstants
ADD, ALPHA, ALT, AMBIENT, ARC, ARGB, ARROW, BACKSPACE, BASELINE, BEVEL, BEZIER_VERTEX, BLEND, BLUR, BOTTOM, BOX, BREAK, BURN, CENTER, CHATTER, CHORD, CLAMP, CLOSE, CODED, COMPLAINT, CONTROL, CORNER, CORNERS, CROSS, CURVE_VERTEX, CUSTOM, DARKEST, DEG_TO_RAD, DELETE, DIAMETER, DIFFERENCE, DILATE, DIRECTIONAL, DISABLE_ASYNC_SAVEFRAME, DISABLE_BUFFER_READING, DISABLE_DEPTH_MASK, DISABLE_DEPTH_SORT, DISABLE_DEPTH_TEST, DISABLE_KEY_REPEAT, DISABLE_NATIVE_FONTS, DISABLE_OPENGL_ERRORS, DISABLE_OPTIMIZED_STROKE, DISABLE_STROKE_PERSPECTIVE, DISABLE_STROKE_PURE, DISABLE_TEXTURE_MIPMAPS, DODGE, DOWN, DXF, ELLIPSE, ENABLE_ASYNC_SAVEFRAME, ENABLE_BUFFER_READING, ENABLE_DEPTH_MASK, ENABLE_DEPTH_SORT, ENABLE_DEPTH_TEST, ENABLE_KEY_REPEAT, ENABLE_NATIVE_FONTS, ENABLE_OPENGL_ERRORS, ENABLE_OPTIMIZED_STROKE, ENABLE_STROKE_PERSPECTIVE, ENABLE_STROKE_PURE, ENABLE_TEXTURE_MIPMAPS, ENTER, EPSILON, ERODE, ESC, EXCLUSION, FX2D, GIF, GRAY, GROUP, HALF_PI, HAND, HARD_LIGHT, HINT_COUNT, HSB, IMAGE, INVERT, JAVA2D, JPEG, LANDSCAPE, LEFT, LIGHTEST, LINE, LINE_LOOP, LINE_STRIP, LINES, LINUX, MACOS, MACOSX, MAX_FLOAT, MAX_INT, MIN_FLOAT, MIN_INT, MITER, MODEL, MODELVIEW, MOVE, MULTIPLY, NORMAL, OPAQUE, OPEN, OPENGL, ORTHOGRAPHIC, OTHER, OVERLAY, P2D, P3D, PATH, PDF, PERSPECTIVE, PI, PIE, platformNames, POINT, POINTS, POLYGON, PORTRAIT, POSTERIZE, PROBLEM, PROJECT, PROJECTION, QUAD, QUAD_BEZIER_VERTEX, QUAD_STRIP, QUADRATIC_VERTEX, QUADS, QUARTER_PI, RAD_TO_DEG, RADIUS, RECT, REPEAT, REPLACE, RETURN, RGB, RIGHT, ROUND, SCREEN, SHAPE, SHIFT, SOFT_LIGHT, SPAN, SPHERE, SPOT, SQUARE, SUBTRACT, SVG, TAB, TARGA, TAU, TEXT, THIRD_PI, THRESHOLD, TIFF, TOP, TRIANGLE, TRIANGLE_FAN, TRIANGLE_STRIP, TRIANGLES, TWO_PI, UP, VERTEX, WAIT, WHITESPACE, WINDOWS, X, Y, Z -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) voidaudioMouseClick(int mx, int my) Bottleneck method for triggering an audio event at display/mouse coordinates (mx, my).int(package private) floatvoiddraw()voiddrawCircle(int x, int y) (package private) voidvoidfileSelectedOpen(File selection) voidfileSelectedWrite(File selection) processing.data.JSONObjecthilbertLoop3x2(int genW, int genH) Generates a looping fractal signal path consisting of 6 HilbertGens, arranged 3 wide and 2 tall, to fit a 3 * genW by 2 * genH image.voidInitializes a list of WaveData for use by a WaveSynth.initWaveSynth(WaveSynth synth) Sets gain, gamma, isScaleHisto, animSteps, and sampleRate instance variables of a WaveSynth object and generates its first frame of animation.voidvoidstatic voidvoidintplaySample(int samplePos, int samplelen, float amplitude, ADSRParams env, float pitch, float pan) voidprintWaveData(WaveSynth synth) Outputs current WaveSynth settings and WaveData list.voidvoid(package private) intsampleToScreenX(int x) (package private) intsampleToScreenY(int y) voidsaveAudioToFile(float[] samples, float sampleRate, String fileName) voidvoid(package private) intscreenToSampleX(int x) (package private) intscreenToSampleY(int y) voidsettings()voidsetup()voidsetWaveSynthFromJSON(processing.data.JSONObject json, WaveSynth synth) voidshowHelp()voidvoidswapGen(PixelMapGen gen) Sets a new PixelMapGen for a PixelAudioMapper(package private) voidupdateAudioChain(float[] sig) (package private) voidupdateAudioChain(float[] sig, float bufferSampleRate) Methods inherited from class processing.core.PApplet
abs, abs, acos, alpha, ambient, ambient, ambient, ambientLight, ambientLight, append, append, append, append, append, append, applyMatrix, applyMatrix, applyMatrix, applyMatrix, applyMatrix, arc, arc, arraycopy, arraycopy, arraycopy, arrayCopy, arrayCopy, arrayCopy, asin, atan, atan2, attrib, attrib, attrib, attribColor, attribNormal, attribPosition, background, background, background, background, background, background, background, beginCamera, beginContour, beginPGL, beginRaw, beginRaw, beginRecord, beginRecord, beginShape, beginShape, bezier, bezier, bezierDetail, bezierPoint, bezierTangent, bezierVertex, bezierVertex, binary, binary, binary, binary, blend, blend, blendColor, blendMode, blue, box, box, brightness, calcSketchPath, camera, camera, ceil, checkAlpha, checkExtension, choice, choice, circle, clear, clip, color, color, color, color, color, color, color, color, colorMode, colorMode, colorMode, colorMode, concat, concat, concat, concat, concat, concat, concat, constrain, constrain, copy, copy, copy, cos, createFont, createFont, createFont, createGraphics, createGraphics, createGraphics, createImage, createInput, createInput, createInputRaw, createOutput, createOutput, createPath, createPath, createPrimaryGraphics, createReader, createReader, createReader, createShape, createShape, createShape, createWriter, createWriter, createWriter, cursor, cursor, cursor, cursor, curve, curve, curveDetail, curvePoint, curveTangent, curveTightness, curveVertex, curveVertex, dataFile, dataPath, day, debug, degrees, delay, dequeueEvents, desktopFile, desktopPath, die, die, directionalLight, displayDensity, displayDensity, dispose, dist, dist, edge, ellipse, ellipseMode, emissive, emissive, emissive, endCamera, endContour, endPGL, endRaw, endRecord, endShape, endShape, exec, exec, exit, exitActual, exitCalled, exp, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, fill, fill, fill, fill, fill, fill, filter, filter, filter, floor, flush, focusGained, focusLost, frameMoved, frameRate, frustum, fullScreen, fullScreen, fullScreen, fullScreen, get, get, get, getExtension, getGraphics, getMatrix, getMatrix, getMatrix, getSurface, green, handleDraw, handleKeyEvent, handleMethods, handleMouseEvent, hex, hex, hex, hex, hideMenuBar, hint, hour, hue, image, image, image, imageMode, initSurface, insertFrame, isLooping, join, join, keyPressed, keyReleased, keyReleased, keyTyped, keyTyped, launch, lerp, lerpColor, lerpColor, lightFalloff, lights, lightSpecular, line, line, link, listFiles, listFiles, listPaths, loadBytes, loadBytes, loadBytes, loadFont, loadImage, loadImage, loadJSONArray, loadJSONArray, loadJSONObject, loadJSONObject, loadPixels, loadShader, loadShader, loadShape, loadShape, loadStrings, loadStrings, loadStrings, loadStrings, loadTable, loadTable, loadXML, loadXML, log, loop, mag, mag, main, main, main, makeGraphics, map, mask, match, matchAll, max, max, max, max, max, max, method, millis, min, min, min, min, min, min, minute, modelX, modelY, modelZ, month, mouseClicked, mouseDragged, mouseDragged, mouseEntered, mouseEntered, mouseExited, mouseExited, mouseMoved, mouseMoved, mousePressed, mousePressed, mouseReleased, mouseReleased, mouseWheel, mouseWheel, nf, nf, nf, nf, nf, nf, nfc, nfc, nfc, nfc, nfp, nfp, nfp, nfp, nfs, nfs, nfs, nfs, noClip, noCursor, noFill, noise, noise, noise, noiseDetail, noiseDetail, noiseSeed, noLights, noLoop, norm, normal, noSmooth, noStroke, noTexture, noTint, orientation, ortho, ortho, ortho, parseBoolean, parseBoolean, parseBoolean, parseBoolean, parseByte, parseByte, parseByte, parseByte, parseByte, parseByte, parseByte, parseByte, parseChar, parseChar, parseChar, parseChar, parseFloat, parseFloat, parseFloat, parseFloat, parseFloat, parseFloat, parseFloat, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseJSONArray, parseJSONObject, parseXML, parseXML, pause, perspective, perspective, pixelDensity, point, point, pointLight, pop, popMatrix, popStyle, postEvent, postWindowMoved, postWindowResized, pow, print, print, print, print, print, print, print, print, print, printArray, printCamera, println, println, println, println, println, println, println, println, println, println, println, printMatrix, printProjection, printStackTrace, push, pushMatrix, pushStyle, quad, quadraticVertex, quadraticVertex, radians, random, random, randomGaussian, randomSeed, rect, rect, rect, rectMode, red, redraw, registerMethod, requestImage, requestImage, resetMatrix, resetShader, resetShader, resume, reverse, reverse, reverse, reverse, reverse, reverse, reverse, rotate, rotate, rotateX, rotateY, rotateZ, round, runSketch, runSketch, runSketch, saturation, save, saveBytes, saveBytes, saveBytes, saveFile, saveFrame, saveFrame, saveJSONArray, saveJSONArray, saveJSONObject, saveJSONObject, savePath, saveStream, saveStream, saveStream, saveStream, saveStream, saveStrings, saveStrings, saveStrings, saveTable, saveTable, saveXML, saveXML, scale, scale, scale, screenX, screenX, screenY, screenY, screenZ, second, selectCallback, selectFolder, selectFolder, selectFolder, selectInput, selectInput, selectInput, selectOutput, selectOutput, selectOutput, set, set, setMatrix, setMatrix, setMatrix, setSize, shader, shader, shape, shape, shape, shapeMode, shearX, shearY, shell, shininess, shorten, shorten, shorten, shorten, shorten, shorten, shorten, showDepthWarning, showDepthWarningXYZ, showMethodWarning, showMissingWarning, showSurface, showVariationWarning, sin, size, size, size, sketchDisplay, sketchFile, sketchFullScreen, sketchHeight, sketchOutputPath, sketchOutputStream, sketchPath, sketchPath, sketchPixelDensity, sketchRenderer, sketchSmooth, sketchWidth, sketchWindowColor, smooth, smooth, sort, sort, sort, sort, sort, sort, sort, sort, sort, sort, specular, specular, specular, sphere, sphereDetail, sphereDetail, splice, splice, splice, splice, splice, splice, splice, splice, splice, splice, splice, splice, splice, split, split, splitTokens, splitTokens, spotLight, sq, sqrt, square, start, startSurface, stop, str, str, str, str, str, str, str, str, str, str, stroke, stroke, stroke, stroke, stroke, stroke, strokeCap, strokeJoin, strokeWeight, style, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, tan, text, text, text, text, text, text, text, text, text, text, text, textAlign, textAlign, textAscent, textDescent, textFont, textFont, textLeading, textMode, textSize, texture, textureMode, textureWrap, textWidth, textWidth, textWidth, thread, tint, tint, tint, tint, tint, tint, translate, translate, triangle, trim, trim, unbinary, unhex, unregisterMethod, updatePixels, updatePixels, urlDecode, urlEncode, vertex, vertex, vertex, vertex, vertex, windowMove, windowMoved, windowRatio, windowResizable, windowResize, windowResized, windowTitle, year
-
Field Details
-
pixelaudio
PixelAudio pixelaudio -
gen
PixelMapGen gen -
hilb3x2Gen
MultiGen hilb3x2Gen -
bGen
BoustropheGen bGen -
zGen
DiagonalZigzagGen zGen -
rows
int rows -
columns
int columns -
genWidth
int genWidth -
genHeight
int genHeight -
mapper
PixelAudioMapper mapper -
wdList
-
wavesynth
WaveSynth wavesynth -
synthImage
processing.core.PImage synthImage -
myGamma
float myGamma -
animSteps
int animSteps -
animStop
int animStop -
step
int step -
comments
String comments -
minim
ddf.minim.Minim minim -
audioOut
ddf.minim.AudioOutput audioOut -
audioBuffer
ddf.minim.MultiChannelBuffer audioBuffer -
pool
-
samplerEnv
ADSRParams samplerEnv -
sampleRate
float sampleRate -
outputGain
float outputGain -
samplerGain
float samplerGain -
maxAmplitude
float maxAmplitude -
attackTime
float attackTime -
decayTime
float decayTime -
sustainLevel
float sustainLevel -
releaseTime
float releaseTime -
poolSize
int poolSize -
samplerMaxVoices
int samplerMaxVoices -
isWrapAround
boolean isWrapAround -
noteDuration
int noteDuration -
samplelen
int samplelen -
audioSignal
float[] audioSignal -
audioLength
int audioLength -
playAtAssignedFrequency
boolean playAtAssignedFrequency -
sampleX
int sampleX -
sampleY
int sampleY -
samplePos
int samplePos -
timeLocsArray
ArrayList<TimedLocation> timeLocsArray -
circleColor
int circleColor -
wsIndex
int wsIndex -
jsonFolder
String jsonFolder -
currentDataFile
File currentDataFile -
currentFileName
String currentFileName -
json
processing.data.JSONObject json -
isAnimating
boolean isAnimating -
oldIsAnimating
boolean oldIsAnimating -
isLooping
boolean isLooping -
isRecordingVideo
boolean isRecordingVideo -
videx
com.hamoid.VideoExport videx -
videoFilename
String videoFilename
-
-
Constructor Details
-
BigWaveSynth
public BigWaveSynth()
-
-
Method Details
-
main
-
settings
public void settings()- Overrides:
settingsin classprocessing.core.PApplet
-
setup
public void setup()- Overrides:
setupin classprocessing.core.PApplet
-
hilbertLoop3x2
Generates a looping fractal signal path consisting of 6 HilbertGens, arranged 3 wide and 2 tall, to fit a 3 * genW by 2 * genH image. This particular MultiGen configuration is used so extensively in my sample code that I've given it a factory method in the HilbertGen class. It's written out here so you can see how it works. Note that genH must equal genW and both must be powers of 2. For the image size we're using in this example, genW = image width / 3 and genH = image height / 2.- Parameters:
genW- width of each HilbertGengenH- height of each HilbertGen- Returns:
- a 3 x 2 array of Hilbert curves, connected in a loop (3 * genWidth by 2 * genHeight pixels)
-
initWaveDataList
Initializes a list of WaveData for use by a WaveSynth.- Returns:
- an ArrayList of WaveData objects
-
initWaveSynth
Sets gain, gamma, isScaleHisto, animSteps, and sampleRate instance variables of a WaveSynth object and generates its first frame of animation.- Parameters:
synth- a WaveSynth object whose attributes will be set- Returns:
- the WaveSynth object with attributes set
-
draw
public void draw()- Overrides:
drawin classprocessing.core.PApplet
-
swapGen
Sets a new PixelMapGen for a PixelAudioMapper- Parameters:
gen-
-
keyPressed
public void keyPressed()- Overrides:
keyPressedin classprocessing.core.PApplet
-
showHelp
public void showHelp() -
stepAnimation
public void stepAnimation() -
initAudio
public void initAudio() -
ensureSamplerReady
void ensureSamplerReady() -
currentPlaybackBufferRate
float currentPlaybackBufferRate() -
updateAudioChain
void updateAudioChain(float[] sig, float bufferSampleRate) -
updateAudioChain
void updateAudioChain(float[] sig) -
renderSignal
public void renderSignal() -
mouseClicked
public void mouseClicked()- Overrides:
mouseClickedin classprocessing.core.PApplet
-
audioMouseClick
void audioMouseClick(int mx, int my) Bottleneck method for triggering an audio event at display/mouse coordinates (mx, my).- Parameters:
mx-my-
-
playSample
public int playSample(int samplePos, int samplelen, float amplitude, ADSRParams env, float pitch, float pan) -
calcSampleLen
public int calcSampleLen() -
runTimeArray
public void runTimeArray() -
drawCircle
public void drawCircle(int x, int y) -
screenToSampleX
int screenToSampleX(int x) -
screenToSampleY
int screenToSampleY(int y) -
sampleToScreenX
int sampleToScreenX(int x) -
sampleToScreenY
int sampleToScreenY(int y) -
saveToAudio
public void saveToAudio() -
saveAudioToFile
public void saveAudioToFile(float[] samples, float sampleRate, String fileName) throws IOException, UnsupportedAudioFileException -
loadWaveData
public void loadWaveData() -
fileSelectedOpen
-
setWaveSynthFromJSON
-
printWaveData
Outputs current WaveSynth settings and WaveData list. -
saveWaveData
public void saveWaveData() -
fileSelectedWrite
-
getWaveSynthJSONHeader
public processing.data.JSONObject getWaveSynthJSONHeader()
-