Photo



With this piece, I wanted to create an item that was sound inspired with a purpose based around sound. Due some of the parameters of the audio capture, I limited the live capture to one word.
In this case, it was “listen”. This capture created nice dips on a thin surface. I extruded it with Grasshopper to give it some thickness so it wasn’t so flat. And to make it easier use in Slicer.
I decided to contextualise this as a headphone cord wrap. The notches help the cord stay on and for it to not tangle.
0 notes
Photo

Dada! The 3D print! As you can see by the post it note, the print took just over an hour. I then broke/peeled off the brim and the supports except for the ones on either end so they could act as stops for the wrapping.
I did all my resizing in Rhino as that’s where I felt I had the most control to do so.
0 notes
Photo



Laser cut test - Faaarrr too thin - The laser cutter also went round it twice (even though there was only one line in the file) which did not help at all
Thankfully I was also 3D printing at the same time because I wanted to have to final options.
0 notes
Photo


Testing out different slicing methods before exporting as a .dxf
Note: There is a error with Slicer for Fusion 360 that doesn’t produce sheets. To go around this just do a 180 degree flip of the cut direction
0 notes
Text
LiveInput final code and Grasshopper screenshot
/* Libraries required - Based off code Minim - MonitorInput UDP - from g_Howl examples AudioRetrival */ import ddf.minim.*; import ddf.minim.signals.*;
Minim minim; AudioInput in;
import hypermedia.net.*; UDP udps;
String data= ".";
void setup() { size(200, 200, P3D);
udps = new UDP( this, 6000 ); minim = new Minim(this);
// use the getLineIn method of the Minim object to get an AudioInput in = minim.getLineIn(); }
//void keyPressed() //{ // if ( key == 'm' || key == 'M' ) // { // if ( in.isMonitoring() ) // { // in.disableMonitoring(); // } else // { // in.enableMonitoring(); // } // } //} void draw() { background(0); stroke(255); String message = "";
// draw the waveforms so we can see what we are monitoring for (int i = 0; i < in.bufferSize() - 1; i++) { line( i, 50 + in.left.get(i)*50, i+1, 50 + in.left.get(i+1)*50 ); float x1 = map(i, 0, in.bufferSize(), 0, width); float x11 = 50 + in.left.get(i)*50;
message = message + String.valueOf(x1) + "," + String.valueOf(x11)+ ";"; println(message + String.valueOf(x1) + "," + String.valueOf(x11)+ ";"); }
{ String monitoringState = in.isMonitoring() ? "enabled" : "disabled"; text( "Input monitoring: " + monitoringState + ".", 5, 15 ); }
//Part that String ip = "127.0.0.1"; // the remote IP address int port ��= 6400; // the destination port udps.send( message, ip, port ); message = ""; delay(50); }
void mousePressed() { { if ( in.isMonitoring() ) { in.disableMonitoring(); } else { in.enableMonitoring(); } } } void mouseReleased() { exit(); }
I removed the scale option as the model produced, Slicer was not the biggest fan of. But at least I could resize in Slicer if needed. (At least that’s what I think is happening)
0 notes
Photo


SpreadsheetIn still not working.
This was even after I had installed the OpenXMLSDkv2 which I hadn’t first time round.
So yeah.
Not sure what is happening. Think I may fall back onto the live input method to make a vague soundwave.
0 notes
Text
.xml test
Trying a different file type (xml)
This one doesn’t work.

/* Libraries required - Based off code Minim - MonitorInput And code based off this: http://www.instructables.com/id/Data-Logging-SensorsInputs-With-Processing/ */ import ddf.minim.*; import ddf.minim.signals.*;
Minim minim; AudioInput in;
//String data= "."; String message = "";
import processing.serial.*; Serial mySerial;
XML xml;
void setup() { size(300, 300, P3D); minim = new Minim(this);
// use the getLineIn method of the Minim object to get an AudioInput in = minim.getLineIn();
}
void keyPressed() { if ( key == 'm' || key == 'M' ) { if ( in.isMonitoring() ) { in.disableMonitoring(); } else { in.enableMonitoring(); } } } void draw() { background(0); stroke(255);
// draw the waveforms so we can see what we are monitoring for (int i = 0; i < in.bufferSize() - 1; i++) { line( i, 50 + in.left.get(i)*50, i+1, 50 + in.left.get(i+1)*50 ); float x1 = map(i, 0, in.bufferSize(), 0, width); float x11 = 50 + in.left.get(i)*50;
message = message + String.valueOf(x1) + "," + String.valueOf(x11)+ ";";
if (keyPressed == true) { String value = message; if (value != null) println(message);
xml = new XML("Sound Data"); XML newChild = xml.addChild("Sound Data"); newChild.setContent("WaveData"); newChild.setString("Data", message);
{ String monitoringState = in.isMonitoring() ? "enabled" : "disabled"; text( "Input monitoring: " + monitoringState + ".", 5, 15 ); } } } }
void mousePressed() { //save as a table in csv format(data/table - data folder name table) saveXML(xml, "SoundData.xml"); exit(); }
0 notes
Photo

Accidentally loaded csv into SpreadsheetIn (found in g_Howl Example folder) in Grasshopper. Doesn’t work that way.
Remember to read and double check file types before you tweak your code.
Here’s the code anyway though:
/* Libraries required - Based off code Minim - MonitorInput And code based off this: http://www.instructables.com/id/Data-Logging-SensorsInputs-With-Processing/ */ import ddf.minim.*; import ddf.minim.signals.*;
Minim minim; AudioInput in;
//String data= "."; String message = "";
import processing.serial.*; Serial mySerial;
Table table; TableRow newRow;
void setup() { size(200, 200, P3D); minim = new Minim(this);
// use the getLineIn method of the Minim object to get an AudioInput in = minim.getLineIn();
table = new Table(); table.addColumn("Data"); }
void keyPressed() { if ( key == 'm' || key == 'M' ) { if ( in.isMonitoring() ) { in.disableMonitoring(); } else { in.enableMonitoring(); } } } void draw() { background(0); stroke(255);
// draw the waveforms so we can see what we are monitoring for (int i = 0; i < in.bufferSize() - 1; i++) { line( i, 50 + in.left.get(i)*50, i+1, 50 + in.left.get(i+1)*50 ); float x1 = map(i, 0, in.bufferSize(), 0, width); float x11 = 50 + in.left.get(i)*50;
message = message + String.valueOf(x1) + "," + String.valueOf(x11)+ ";";
if (keyPressed == true) { String value = message; if (value != null) println(value);
newRow = table.addRow(); //place the new row and value under the "Data" column newRow.setString("Data", value); { String monitoringState = in.isMonitoring() ? "enabled" : "disabled"; text( "Input monitoring: " + monitoringState + ".", 5, 15 ); } } } }
void mousePressed() { //save as a table in csv format(data/table - data folder name table) saveTable(table, "data/table.csv"); exit(); }
0 notes
Text
LiveInput to Grasshopper
Here is the code to live input into Grasshopper to make a 3d model in Rhino.
This one actually works (even if keyPressed is only for the sake of the text and hearing yourself)
/* Libraries required - Based off code Minim - MonitorInput UDP - from g_Howl examples AudioRetrival */ import ddf.minim.*; import ddf.minim.signals.*;
Minim minim; AudioInput in;
import hypermedia.net.*; UDP udps;
String data= ".";
void setup() { size(200, 200, P3D);
udps = new UDP( this, 6000 ); minim = new Minim(this);
// use the getLineIn method of the Minim object to get an AudioInput in = minim.getLineIn();
}
void keyPressed() { if ( key == 'm' || key == 'M' ) { if ( in.isMonitoring() ) { in.disableMonitoring(); } else { in.enableMonitoring(); } } } void draw() { background(0); stroke(255); String message = "";
// draw the waveforms so we can see what we are monitoring for(int i = 0; i < in.bufferSize() - 1; i++) { line( i, 50 + in.left.get(i)*50, i+1, 50 + in.left.get(i+1)*50 ); float x1 = map(i, 0, in.bufferSize(), 0, width); float x11 = 50 + in.left.get(i)*50;
message = message + String.valueOf(x1) + "," + String.valueOf(x11)+ ";";
println(message + String.valueOf(x1) + "," + String.valueOf(x11)+ ";"); }
{ String monitoringState = in.isMonitoring() ? "enabled" : "disabled"; text( "Input monitoring: " + monitoringState + ".", 5, 15 );
} String ip = "127.0.0.1"; // the remote IP address int port = 6400; // the destination port udps.send( message, ip, port ); message = ""; delay(50); }
void mousePressed() { exit(); }
0 notes
Text
.csv test
Since I now have Grasshopper somewhat figured out, I thought I would go back and try to see if I could spreadsheet a sound wave to counteract the continually monitoring input.This one doesn’t work
/* Libraries required - Based off code Minim - MonitorInput UDP - from g_Howl examples AudioRetrival */ import ddf.minim.*; import ddf.minim.signals.*;
Minim minim; AudioInput in;
//String data= "."; String message = "";
import processing.serial.*; Serial mySerial;
Table table; TableRow newRow;
void setup() { size(200, 200, P3D); minim = new Minim(this);
// use the getLineIn method of the Minim object to get an AudioInput in = minim.getLineIn();
//thread ("saveData");
mySerial = new Serial(this, in);
table = new Table(); table.addColumn("Data"); }
void keyPressed() { if ( key == 'm' || key == 'M' ) { if ( in.isMonitoring() ) { in.disableMonitoring(); } else { in.enableMonitoring(); } } } void draw() { background(0); stroke(255);
// draw the waveforms so we can see what we are monitoring for (int i = 0; i < in.bufferSize() - 1; i++) { line( i, 50 + in.left.get(i)*50, i+1, 50 + in.left.get(i+1)*50 ); float x1 = map(i, 0, in.bufferSize(), 0, width); float x11 = 50 + in.left.get(i)*50;
message = message + String.valueOf(x1) + "," + String.valueOf(x11)+ ";";
if (keyPressed == true) { String value = mySerial.readString(); if (value != null)
newRow = table.addRow(); //place the new row and value under the "Data" column newRow.setString("Data", value); { String monitoringState = in.isMonitoring() ? "enabled" : "disabled"; text( "Input monitoring: " + monitoringState + ".", 5, 15 ); } } } }
//void saveData(){ //table = new Table();
//table.addColumn ("Audio Data");
//TableRow newRow = Table.addRow(); //newRow.setString ( println(String.valueOf(x1) + "," + String.valueOf(x11)+ ";");
//}
//void addEntry(String time, int reading) { // readings.addRow(); // readings.setString((readings.getRowCount()-1), "Time", time); // readings.setInt((readings.getRowCount()-1), "Value", reading); //}
//void saveReadings() { // saveTable(readings, <filename>); //} void mousePressed() { //save as a table in csv format(data/table - data folder name table) saveTable(table, "data/table.csv"); exit(); }
0 notes
Photo



Feels super late to have figured this but:
println(i) is not the value of the audio wave
print (i < in.bufferSize() - 1) (more of what it is buffering?)
println(message + String.valueOf(x1) + "," + String.valueOf(x11)+ ";"); is the values of the wave as it looks closest to the values in Grashopper

So going to retry the spreadsheet idea
0 notes
Photo
So if you attach ScaleNU (not uniform scale lets you control each axis) and then Extrude after that, you get a scalable wave with some thickness
And yes, this one bakes!!
0 notes
Photo
How to scale in Grasshopper
Use integers - negative and positive WHOLE numbers do the same thing as each other eg. -10 scale will scale the model up as much as 10
Set slider to -1 to 1 and have start at 0
0 notes
Photo
Trying to build in Offest surface in Grasshopper
Not agreeing with me as it is now not baking
Grasshopper Offest stuff found here (VaseThickness)
Other methods of adding thickness that I tried http://www.grasshopper3d.com/forum/topics/extrude-surface-upon-surface-direction
http://www.grasshopper3d.com/forum/topics/how-to-add-thickness-to-the-surface
http://www.grasshopper3d.com/forum/topics/add-thickness-to-a-surface-for-3d-printing?id=2985220%3ATopic%3A1654428&page=2#comments
EDIT: I think part of my issue was that the thickness I wanted to add was really small to the point on unnoticable to the model so I couldn’t tell if it had been added
0 notes
Text
Blanked out stuff that is not relevant now as grasshopper monitors regardless of what processing says
/** * This sketch demonstrates how to monitor the currently active audio input * of the computer using an AudioInput. What you will actually * be monitoring depends on the current settings of the machine the sketch is running on. * Typically, you will be monitoring the built-in microphone, but if running on a desktop * it's feasible that the user may have the actual audio output of the computer * as the active audio input, or something else entirely. * <p> * Press 'm' to toggle monitoring on and off. * <p> * When you run your sketch as an applet you will need to sign it in order to get an input. * <p> * For more information about Minim and additional features, * visit http://code.compartmental.net/minim/ */
import ddf.minim.*; import ddf.minim.signals.*;
Minim minim; AudioInput in;
import hypermedia.net.*; UDP udps;
void setup() { size(200, 200, P3D);
udps = new UDP( this, 6000 ); minim = new Minim(this);
// use the getLineIn method of the Minim object to get an AudioInput in = minim.getLineIn();
}
void draw() { background(0); stroke(255); String message = "";
// draw the waveforms so we can see what we are monitoring for(int i = 0; i < in.bufferSize() - 1; i++) { line( i, 50 + in.left.get(i)*50, i+1, 50 + in.left.get(i+1)*50 ); //line( i, 150 + in.right.get(i)*50, i+1, 150 + in.right.get(i+1)*50 ); float x1 = map(i, 0, in.bufferSize(), 0, width); float x11 = 50 + in.left.get(i)*50;
message = message + String.valueOf(x1) + "," + String.valueOf(x11)+ ";"; } { // String monitoringState = in.isMonitoring() ? "enabled" : "disabled"; //text( "Input monitoring: " + monitoringState + ".", 5, 15 ); } String ip = "127.0.0.1"; // the remote IP address int port = 6400; // the destination port udps.send( message, ip, port ); message = ""; delay(50); }
//void keyPressed() //{ // if ( key == 'm' || key == 'M' ) // { // if ( in.isMonitoring() ) // { // in.disableMonitoring(); // } // else // { // in.enableMonitoring(); // } // } // } void mousePressed() { exit(); }
0 notes
Photo

XML from scratch attempt.
Just trying out a different option to live input to have all the data from audio input rather than the snippet it keeps.
Currently it doesn’t print data into sheet
/** * This sketch demonstrates how to monitor the currently active audio input * of the computer using an AudioInput. What you will actually * be monitoring depends on the current settings of the machine the sketch is running on. * Typically, you will be monitoring the built-in microphone, but if running on a desktop * it's feasible that the user may have the actual audio output of the computer * as the active audio input, or something else entirely. * <p> * Press 'm' to toggle monitoring on and off. * <p> * When you run your sketch as an applet you will need to sign it in order to get an input. * <p> * For more information about Minim and additional features, * visit http://code.compartmental.net/minim/ */
import ddf.minim.*; import ddf.minim.signals.*;
Minim minim; AudioInput in;
import hypermedia.net.*; UDP udps;
XML xml;
void setup() { size(200, 200, P3D);
udps = new UDP( this, 6000 ); minim = new Minim(this);
// use the getLineIn method of the Minim object to get an AudioInput in = minim.getLineIn();
xml = new XML ("audio"); //println(firstChild.getFloatContent()); XML newChild = xml.addChild("Noise");
newChild.setContent("AudioData"); newChild.setInt("id", 0);
}
void draw() { background(0); stroke(255); String message = "";
// draw the waveforms so we can see what we are monitoring for(int i = 0; i < in.bufferSize() - 1; i++) { line( i, 50 + in.left.get(i)*50, i+1, 50 + in.left.get(i+1)*50 ); float x1 = map(i, 0, in.bufferSize(), 0, width); float x11 = 50 + in.left.get(i)*50;
message = message + String.valueOf(x1) + "," + String.valueOf(x11)+ ";"; println(i); } { // String monitoringState = in.isMonitoring() ? "enabled" : "disabled"; //text( "Input monitoring: " + monitoringState + ".", 5, 15 );
} String ip = "127.0.0.1"; // the remote IP address int port = 6400; // the destination port udps.send( message, ip, port ); message = ""; delay(50); }
void keyPressed() { if ( key == 'm' || key == 'M' ) { if ( in.isMonitoring() ) { in.disableMonitoring(); } else { in.enableMonitoring(); } } } void mousePressed() { //exit(); saveXML(xml, "subset.xml");
}
0 notes
Photo


Trying to offset surface - to say the least, this is not what I was wanting
0 notes