ookey-Asemic
For this piece, I wanted to create a written language that accurately represented words but was unreadable in a practical sense. I then looked toward sound waves and how they are a literal translation of sounds into a physical form in a “Taking a Line for a Walk” sort of way. It can depict moments of loudness or silence, but in a way that humans can only approximately translate by reading. In the end, my code takes pieces of the inputted audio based on the buffer size and translates them into a waveform “word”. This also gives it the capabilities to work with live audio. For my printed plot, I used a voicemail left from my mother.
One thing that I enjoyed about using the plotter, is being able to enhance my design based on the materials I use. I really enjoyed the look of the fluorescent orange on different shades of blue. I actually found myself unable to capture it accurately with a camera, making it something that can only exist physically despite being constructed digitally. In upcoming audio-based projects, I think it would be better to work with a tool like Max with more audio capabilities to generate something more complex than just a wave form and then export this to be used with processing. I also did not capture video footage of the plotter generating my writing and will be sure to double check the documentation requirements in the future.
// see https://processing.org/reference/libraries/pdf/index.html //reference taken from minim library //http://code.compartmental.net/tools/minim/quickstart/ import processing.pdf.*; import ddf.minim.*; boolean bRecordingPDF; int pdfOutputCount = 0; Minim minim; AudioPlayer groove; float col = 10; int row = 0; float count = 0; void setup() { size(850, 1100); bRecordingPDF = true; minim = new Minim(this); groove = minim.loadFile("voicemail-105.mp3", 154); groove.loop(); beginRecord(PDF, "bnl-smallBuffer.pdf"); } void keyPressed() { // When you press a key, it will initiate a PDF export count++; endRecord(); } void draw() { noFill(); float[] left = groove.left.toArray(); float oldcol = col + random(8) + 5; col = col + random(50) + 20; for ( int i = 0; i < left.length - 1; i++ ) { float x1 = map(i, 0, groove.bufferSize(), oldcol, col); float x2 = map(i+1, 0, groove.bufferSize(), oldcol, col); line(x1, (height/14)*(row) - left[i]*100 + 50, x2, (height/14)*(row) - left[i+1]*100 + 50); } if (col + 70 > width) { col = 10; row ++; } if (row == 13) { endRecord(); } delay(300); } |