Laser Cut Record (6 / 7 steg)
Steg 6: Audio tester på trä
, du kan klippa räfflar höger in på ringar av trädet. För nu har jag några fina lönn blad att klippa, men jag gjorde mitt firsts tester på ply. Jag började med liknande inställningar som jag använde på akryl:
Power = 12
hastighet = 100
Freq = 500
amp = 12
Detta skära såg bra, men nålen hoppade över mycket, jag var tvungen att hålla den på plats att skjuta detta video. Jag gick tillbaka och gjorde några sinusvåg tester och fann att 15 power var mer stabil, så jag körde en annan audio test på 15 driver:
Denna minskning var mycket mer stabil, men hoppa över var fortfarande ett problem, du kan också höra samma tempo frågor jag hade med akryl (jag klippte alla dessa poster på samma gång). Nästa jag testat sänka amplituden av snittet till 10:
Jag försökte också Defokusering lasern att bredda spåret, hålla amplituden på 12. Spårets yttre är något defocused, den inre grove är tyngre defocused:
Både Defokusering och sänka amplituden av snittet bidragit till att minimera hoppa över, men den Defokusering införs mer buller i ljudet. För min sista plywood test jag sänkte amplituden till 10 och höll lasern fokuserade, jag också fast tempo frågan i min kod. Här är resultatet:
Tyvärr på denna punkt jag var med sist av våra plywood lager, så jag inte kunde vara alltför kräsen om hur platt tråden var, men det fortfarande (förvånansvärt) spelar fine(ish). Här är koden jag använde:
ljud tester
av Amanda Ghassaei
Jan 2013
/*
* Detta program är fri programvara; Du kan vidaredistribuera det och/eller ändra
* det enligt villkoren i GNU General Public License som offentliggjorts av
* den Free Software Foundation; antingen version 3 av licensen, eller
* (på ditt alternativ) någon senare version.
*/
import processing.pdf.*;
parametrar
Snöre arkivnamnen = "radiohead.txt";
flyta rpm = 45,0;
flyta samplingRate = 44100;
float dpi = 1200; //dpi Cutter
flyta amplitud = 10; //in pixlar
flyta avstånd = 10; //space mellan spåren (i bildpunkter)
float minDist = 6.0;//min pixel avstånd mellan punkter i vektorbana (att förhindra cutter flippar ut) 0.25919998
float diameter = 11.8;//diameter av post i tum
flyta innerHole = 0.286;//diameter av centrumhål i tum
flyta innerRad = 2.2;//radius av innersta spår i tum
flyta outerRad = 5.75;//radius av yttersta groove i tum
booleska cutlines = false; //cut de inre och yttre omkrets
konstanter
flyta secPerMin = 60.
int scaleNum = 72. //scale faktor av vektorer (standard 72 dpi)
lagring för en given punkt i spåret
float radCalc;
float xVal;
float yVal;
float theta; //angle variabel
flyta thetaIter = 5880; //how många värden av theta per cykel
float radie; //variable att beräkna radien av spår
flyta xValLast = 0,0;
flyta yValLast = 0,0;
void setup() {
size(36*scaleNum,24*scaleNum);
beginRecord (PDF, filnamn + ".pdf");//save som PDF
bakgrund (255); //white bakgrund
noFill (); //don't fyllning loopar
strokeWeight (0,001); //hairline bredd
skalan pixel avstånd
amplitud = amplituden/dpi * scaleNum;
minDist = minDist/dpi * scaleNum;
mellanrum = avstånd/dpi * scaleNum;
Rita sinusvågor
flyta incrNum = TWO_PI/thetaIter; //calculcate kantiga inrementation belopp
flyta radIncrNum = (2 * amplitud + avstånd) / thetaIter; //radial incrementation belopp
radie = outerRad * scaleNum; //calculate yttersta radie (på 5,75")
stroke (255,0,0), //red
beginShape();
Rita tyst Spårets yttre
för (theta = 0; theta < TWO_PI; theta += incrNum) {//for theta mellan 0 och 2pi
beräkna ny punkt
radCalc = radie;
xVal = width/6+radCalc*cos(theta);
yVal = height/4-radCalc*sin(theta);
IF(((xValLast-xVal)*(xValLast-xVal)+(yValLast-yVal)*(yValLast-yVal)) >(minDist*minDist)) {
vertex(xVal,yVal);
lagra senaste koordinater i vektorbana
xValLast = xVal;
yValLast = yVal;
}
RADIUS--= radIncrNum; //decreasing radie former spiral
}
flyta [] songData = processAudioData();
int numGrooves = 0;
heltal index = 0;
int indexIncr = int((samplingRate*secPerMin/rpm)/thetaIter);
medan (radie > innerRad * scaleNum & & index < songData.length-thetaIter * indexIncr) {
int numpoints = 0;
för (theta = 0; theta < TWO_PI; theta += incrNum) {//for theta mellan 0 och 2pi
beräkna ny punkt
radCalc = radie + songData [index];
index += indexIncr; //go till nästa plats i ljuddata
xVal = width/6+radCalc*cos(theta);
yVal = height/4-radCalc*sin(theta);
IF(((xValLast-xVal)*(xValLast-xVal)+(yValLast-yVal)*(yValLast-yVal)) >(minDist*minDist)) {
vertex(xVal,yVal);
lagra senaste koordinater i vektorbana
xValLast = xVal;
yValLast = yVal;
numpoints ++;
}
RADIUS--= radIncrNum; //decreasing radie former spiral
}
numGrooves ++;
println(numGrooves);
println(numpoints);
}
Rita tysta inre låst groove
för (theta = 0; theta < TWO_PI; theta += incrNum) {//for theta mellan 0 och 2pi
beräkna ny punkt
radCalc = radie;
xVal = width/6+radCalc*cos(theta);
yVal = height/4-radCalc*sin(theta);
IF(((xValLast-xVal)*(xValLast-xVal)+(yValLast-yVal)*(yValLast-yVal)) >(minDist*minDist)) {
vertex(xVal,yVal);
lagra senaste koordinater i vektorbana
xValLast = xVal;
yValLast = yVal;
}
RADIUS--= radIncrNum; //decreasing radie former spiral
}
för (theta = 0; theta < TWO_PI; theta += incrNum) {//for theta mellan 0 och 2pi
beräkna ny punkt
xVal = width/6+radius*cos(theta);
yVal = height/4-radius*sin(theta);
IF(((xValLast-xVal)*(xValLast-xVal)+(yValLast-yVal)*(yValLast-yVal)) >(minDist*minDist)) {
vertex(xVal,yVal);
lagra senaste koordinater i vektorbana
xValLast = xVal;
yValLast = yVal;
}
}
endShape();
om (cutlines) {
Rita skära linjer (100 enheter = 1")
stroke (0), //draw i svart
ellips (bredd/6, höjd/4, innerHole * scaleNum, innerHole * scaleNum); //0.286 "centrumhål
ellips (bredd/6, höjd/4, diameter * scaleNum, diameter * scaleNum); //12 "diameter ytterkanten
}
endRecord();
Exit();
berätta för mig när det är över
println("finished.");
}
flyta [] processAudioData() {
få data ur txt-fil
Sträng \Data [] = loadStrings(filename);
String rawDataString = \Data [0];
flyta audioData [] = float(split(rawDataString,',')); //separated med kommatecken
normalisera ljuddata gett bitdjupet
först hitta max val
flyta maxval = 0;
för (int jag = 0; jag < audioData.length; i ++) {
om (abs(audioData[i]) > maxval) {
maxval = abs(audioData[i]);
}
}
normalisera amplitud till max val
för (int jag = 0; jag < audioData.length; i ++) {
audioData [i] * = amplituden/maxval;
}
returnera audioData;
}
Nästa använde jag maple. Lyckligtvis noahw hjälpte mig att spåra upp en 13" bred lockig maple styrelse och skär den i en två platt ark: en var om tjockleken på en riktig vinyl record på ungefär 1/16" och andra lite tjockare på 1/8". Jag slipat lönn täcker till om 1500grit och klar dem före styckning. Jag gjorde några tester på en bit skrot och fann att energiinställningen jag var med på tråden skära så djupt i maple att jag inte skulle kunna klippa båda sidor. Jag gjorde några fler experiment med Defokusering och faktiskt gjorde en full försök med låten söndag morgon av velvet underground:
I detta test defocused jag laser av bredd 11 ark av vanliga skrivarpapper. Jag använde följande inställningar för laser:
Power = 4
hastighet = 100
Freq = 500
amp = 10
Detta skära kom ut lite noiser än jag hade hoppats. Eftersom nålen inte var att ha några problem i spåret, jag defocused av endast 9 ark av papper och höll samma energiinställningarna. På andra sidan av skivan söndag morgon skär jag femme fatale:
När jag anpassa lite tejp för att försöka hålla träet ligger platt i mitten av snittet, stötte jag av misstag det åt sidan lite. Om du tittar noga på video, du ser där felet är, det orsakade nålen att hoppa över ett spår, men än snittet kom ut bra.
Den här låten hjälpte mig pin ner ett fel i min kod, om du lyssnar noga under refrängen, du kommer att märka att sång saknas. När jag tittade tillbaka på låten, märkte jag att sång finns bara i den vänstra kanalen av banan, så det verkar som att jag inte kombinerar de två kanalerna innan du konverterar till en vektor fil. Jag tror jag har fixat problemet i min python skript, men jag måste köra ett test för att veta säkert. Under tiden kan du undvika problemet genom att importera din stereo ljud till Audacity, högerklicka på spåret och välja "split stereo till mono", spara filen som en WAV-fil, öppna den sparade filen i Audacity igen, kopiera spåret och högerklicka på varje dubbla spår att ställa en till vänster kanal och till rätt kanal.