Projectie toegewezen audio-visualisering (2 / 5 stap)

Stap 2: Audio voldoet aan Processing (toen OSC)


In de eerste plaats moet u een audio-bron te verwerken. Dit kan zijn van een microfoon, een liedje, enz. Aangezien de muziek op mijn laptop spelen zou, wilde ik deze bron analyseren. Dit betekent activeren en selecteren "Stereo Mix" als de standaard opname apparaat op mijn geluid paneel. Een beetje googlen over hoe dat te doen bespaart me na te gaan doorheen. Het is vrij gemakkelijk te doen.

Nu hebt u een audio-bron, moeten we om te duiken in de code:

/*
3D projectie mapping met VPT via OSC
NIC Shackle
Valt onder de Naamsvermelding-NietCommercieel-GelijkDelen 4.0 internationaal (CC BY-NC-SA 4.0)
April 2014
*/

importeren van oscP5.*;
importeren van netP5.*;
importeren van controlP5.*;

ControlP5 cp5;
Knop winst;
int gainVal;

OscP5 oscP5;
NetAddress myRemoteLocation;

importeren van ddf.minim.analysis.*;
importeren van ddf.minim.*;

Minim minim;
AudioInput jingle;
FFT fft;

VOID Setup
{
grootte (450, 300);
frameRate(60);
frame.setResizable(true);

cp5 = nieuwe ControlP5(this);
placeButtons();

oscP5 = nieuwe OscP5(this,6666);
myRemoteLocation = nieuwe NetAddress("127.0.0.1",6666);

Minim = nieuwe Minim(this);

Jingle = minim.getLineIn();
FFT = nieuwe FFT (jingle.bufferSize(), jingle.sampleRate());
fft.logAverages (86, 1);
}

int schaal = 2; voor algemene gevoeligheid wijzigen
Boole FFTon = false;
String viewOSC; voor het tonen van OSC stream. gebruikt in OSC tabblad.

VOID draw()
{
Background(0);
Fill(0,40);
noStroke();
rect(0,0,width,height);
Fill(50);
rect(0,0,width,47);
textSize(30);
Fill(200);
textAlign(LEFT);
Text("OSC_panel",10,35);
textSize(10);
tekst ("Nic Shackle", 170, 35);
uitvoeren van een voorwaartse FFT op de monsters in de buffer
FFT.forward (jingle.mix);
if(FFTon)analyseAndSend(); Als het van een knevel gevoorzid, uitgezonden FFT waarden via OSC

}

ongeldig placeButtons() {}
krijgen = cp5.addKnob("gainVal")
.setRange(0,50)
.setValue(1)
.setPosition(300,70)
.setRadius(50)
.setDragDirection(Knob.VERTICAL)
;


cp5.addButton("Toggle_FFT_broadcast")
.setValue(0)
.setPosition(50,70)
.setSize(200,19)
;
}

VOID knop (int gainVal) {}

gainVal = gainVal;
}

openbare nietige controlEvent (ControlEvent theEvent) {}
println(theEvent.getController().getName());
}

public void Toggle_FFT_broadcast (int theValue) {}
FFTon =! FFTon;
}

VOID send (String pad, zweven val) {}
OscMessage myMessage = nieuwe OscMessage(path);

myMessage.add(val);
/ * signaal * /
oscP5.send (myMessage, myRemoteLocation);
println (myMessage + "Verzonden");
viewOSC = "OSC stream:" + myMessage;

}

ongeldig analyseAndSend() {}
de volgende "verzendt" zijn als u van meerdere zijden objecten waarvoor drie gezichten gebruikmaakt te tonen van het zelfde ding
//Three vlakken van het vak "band 1"
verzenden ("/" + str(1) + "layer/fade",fft.getAvg(1)/100*gainVal);
verzenden ("/" + str(2) + "layer/fade",fft.getAvg(1)/100*gainVal);
verzenden ("/" + str(3) + "layer/fade",fft.getAvg(1)/100*gainVal);
//
//Three vlakken van band 2 vak
verzenden ("/" + str(4) + "layer/fade",fft.getAvg(2)*2/100*gainVal);
verzenden ("/" + str(5) + "layer/fade",fft.getAvg(2)*2/100*gainVal);
verzenden ("/" + str(6) + "layer/fade",fft.getAvg(2)*2/100*gainVal);
//
//Three vlakken van band 3 vak
verzenden ("/" + str(7) + "layer/fade",fft.getAvg(3)*3/100*gainVal);
verzenden ("/" + str(8) + "layer/fade",fft.getAvg(3)*3/100*gainVal);
verzenden ("/" + str(9) + "layer/fade",fft.getAvg(3)*3/100*gainVal);
//
//Three vlakken van band 4 vak
verzenden ("/" + str(10) + "layer/fade",fft.getAvg(4)*4/100*gainVal);
verzenden ("/" + str(11) + "layer/fade",fft.getAvg(4)*4/100*gainVal);
verzenden ("/" + str(12) + "layer/fade",fft.getAvg(4)*4/100*gainVal);
//
//Three gezichten van band 5 box
verzenden ("/" + str(13) + "layer/fade",fft.getAvg(5)*5/100*gainVal);
verzenden ("/" + str(14) + "layer/fade",fft.getAvg(5)*5/100*gainVal);
verzenden ("/" + str(15) + "layer/fade",fft.getAvg(5)*5/100*gainVal);
//
//Three vlakken van band 6 vak
verzenden ("/" + str(16) + "layer/fade",fft.getAvg(6)*6/100*gainVal);
verzenden ("/" + str(17) + "layer/fade",fft.getAvg(6)*6/100*gainVal);
verzenden ("/" + str(18) + "layer/fade",fft.getAvg(6)*6/100*gainVal);
//
//Three vlakken van band 7 vak
verzenden ("/" + str(19) + "layer/fade",fft.getAvg(7)*8/100*gainVal);
verzenden ("/" + str(20) + "layer/fade",fft.getAvg(7)*8/100*gainVal);
verzenden ("/" + str(21) + "layer/fade",fft.getAvg(7)*8/100*gainVal);

de volgende "verzendt" zijn als u enkelzijdig objecten waarvoor maar één waarde die wordt verzonden
voor (int i = 0; ik < 9; i ++) //iterate door de bands
{

Als (ik 8 == || ik == 9) {verzenden ("/" + str(i) + "layer/fade",(fft.getAvg(i)*i/100)*gainVal*2);} //trebles moet een beetje van een oomph mooi opdagen
else {verzenden ("/" + str(i) + "layer/fade",(fft.getAvg(i)*i/100)*gainVal);}
Stroke(25*i,50,50);
strokeWeight(5);
line(120,100+i*10,120+FFT.getAvg(i)*i*gainVal,100+i*10);
textSize(10);
Fill(150);
tekst ("Band/laag" + str(i),50,104+i*10);
}
Fill(150);
textSize(12);
Text(viewOSC,50,60);
}

Heb je al dat?

Een snelle doorlopen:
Audio wordt geladen in een buffer. Die buffer is FFTed en gemiddeld in 9 bands. Deze banden zijn herhaald door om hun waarde met een bereik van ongeveer 0 tot 1 (vandaar een drijvende punt waarde). Die waarde wordt samengevoegd met een tekenreeks die overeenkomt met een opdracht van de OSC bestemd voor VPT. Deze tekenreeks wordt het dan uitgezonden via OSC op IP-adres 127.0.0.1 (poortnummer 6666). Er is ook een GUI die de frequenties voor elke band en een Gain knop, die het signaal kan opvoeren toont, als uw bron een beetje zacht is.

Opmerking: Ik heb nooit gewerkt met audio analyse voordat dit, dus ik geef mijn algoritme toe om een nauwkeurige spectrum is waarschijnlijk een beetje af. Als iemand is meer clued up op dit, zou ik graag horen van een betere manier om te gaan doen (ik heb een gevoel dat het met enkele smakelijke wiskunde!)

Gerelateerde Artikelen

Mini projectie-toegewezen landschap

Mini projectie-toegewezen landschap

Dit Instructable over het maken van een eenvoudige sculptuur die wordt aangevuld met projectie mapping, ontworpen om te draaien op de Raspberry Pi, gebouwd met OpenFrameworks.Projectie Mapping is een proces dat is gebaseerd op kennis van de fysieke r
Bouwen van een eenvoudige projectie toegewezen Display met Pixel toegewezen LEDs

Bouwen van een eenvoudige projectie toegewezen Display met Pixel toegewezen LEDs

Als de ontwerper van een Printplaat die meestal LED controlesystemen behandelt, geaccumuleerde ik hebben nogal een stash van LED-strip, bars, pucks en andere bedrijven-controllers die we voor clients, optredens of evaluaties gekocht hebben. Zo nu en
Projectie toegewezen taart

Projectie toegewezen taart

Mijn dochter is op een leeftijd (9) als leuke girly dingen zijn langzaam weg geduwd in ruil voor meer volwassen attracties. Zij was niet geïnteresseerd in een van de "schattig" taart ontwerpen die we voor haar aankomende verjaardagspartij waren
Maak een geesteswetenschappen Project; hoogglans kralen ketting en armband

Maak een geesteswetenschappen Project; hoogglans kralen ketting en armband

ik was een creatief project toegewezen voor mijn geesteswetenschappen-klasse, en aangezien gedetailleerde instructies nodig waren, en het bleek zo groot, ik had net te maken een instructable.Stap 1: Wat zal u... Hier is wat u nodig heeft* Een concept
Audio marmer Hornets-achtige vervorming maken

Audio marmer Hornets-achtige vervorming maken

zoals u allen beter weet had, Halloween nadert snel ons. Wat een betere manier is er om te beginnen de partij vroeg dan maken gruwelijke audio vervorming?Stap 1: Wat gitaren hebben te doen met Halloween? Nu, ik weet u waarschijnlijk verloren is gegaa
Audio Modulated Solid State Tesla Coil Kickstarter video

Audio Modulated Solid State Tesla Coil Kickstarter video

van BATEC Audio gemoduleerd Solid State Tesla Coil Kickstarter projectvideohttp://www.Kickstarter.com/projects/1080150225/audio-modulated-Full-Bridge-SSTC?ref=emailHet doel van ons project is het bouwen van een Audio gemoduleerd Full-Bridge Solid Sta
Hyper Terra

Hyper Terra

"Hyper Terra" is een projectie-toegewezen sculptuur met een geïntegreerde projector, computer en voeding. De sculptuur is een berg met gesimuleerde solar en lunar verlichting die kan worden ingesteld met een lat/long op aarde en een punt in de t
Ontwerpen, modelleren en 3D printen een Cellphone Stand

Ontwerpen, modelleren en 3D printen een Cellphone Stand

Hallo! Vandaag wij zal worden ontwerpen, modelleren en 3D printen een aangepaste mobiele telefoon staan van kras!Voor een van mijn eerste jaar universitaire cursussen, werden we uitgedaagd voor het ontwerpen van een mobiele telefoon staan op papier e
NAAG XY

NAAG XY

NAAG XY, 201514' x 8' x 4'Gabriel L Dunne http://gabrieldunne.comVishal K Dar http://vishalkdar.comEPS-schuim, gips, computer, software op maat, projectorenDit Instructable is een documentatie van het proces van het creëren van 'NAAG XY' door Gabriel
Maken van een Contact microfoon

Maken van een Contact microfoon

Een contact microfoon is een soort microfoon die trillingen van contact met objecten pikt, in tegenstelling de het meer gangbare type microfoon die drukgolven in lucht pikt. Hier is een demo van een contact microfoon aangesloten op een wekker, samen
Bijstand hond lichtschakelaars

Bijstand hond lichtschakelaars

Hallo, leert dit Instructable u het maken van een kleine serieproductie van aangepaste lichtschakelaars.Het zal laten zien hoe de schakelaar, twee verschillende molding technieken en één gieten methode aanpassen.Dit is een project toegewezen aan ons
Retro houten gitaarversterker A / B Switch Box

Retro houten gitaarversterker A / B Switch Box

een gemakkelijk op te bouwen, gitaar A / B invoervak voor het schakelen tussen (2) 1/4 Jack uitgangen. Ontwerp in is (2) LED's, u te laten weten (welke) ingang actief is.An Instructables artikel die me geholpen dit vrij gemakkelijk maken; het bedradi
Knipperende LEDs aan muziek

Knipperende LEDs aan muziek

dit is een vrij eenvoudig project voor iemand met sommige elektronische vaardigheden.Sluit dit circuit op een audio-bron en de LED's knipperen om het ritme van de muziek. Al is het echt de spanning van de audio-ingang gebruikt activeren een transisto
MIDI aan ARDUINO

MIDI aan ARDUINO

Dit is reeds onderdeel van sommige van mijn Instructables, maar waarschijnlijk moeilijk te vinden via de zoekfunctie.Het wordt gebruikt in de volgende Instructables:Micro Timelapse Dolly met DC motoren:De geavanceerde Micro Timelapse Dolly met goedko