Scripting bearbetning med MIDI (2 / 11 steg)

Steg 2: En enkel skiss

Detta är en enkel skiss att visa grundläggande beteende och för att kontrollera att saker och ting fungerar.

SimpleMidi.pde

import themidibus.*; Importera bibliotek
import javax.sound.midi.MidiMessage;

Midibussar myBus;

int currentColor = 0;
int midiDevice = 3;

void setup() {
storlek (480, 320);
MidiBus.list();
myBus = ny midibussar (denna, midiDevice, 1);
}

void draw() {
Background(currentColor);
}

void midiMessage (MidiMessage meddelande, lång tidsstämpel, sträng bus_name) {
int Obs = (int)(message.getMessage() [1] & 0xFF);
int vel = (int)(message.getMessage() [2] & 0xFF);

println ("Bus" + bus_name + ": Obs" + OBS + ", vel" + vel);
om (vel > 0) {
currentColor = vel * 2;
}

Jag fick undrande om jag kunde använda YAML eller JSON så att en textfil kan representera mer komplexa strukturer. Visar sig att behandlingen ger du inbyggda JSON hantering. Perfekta.

För MIDI-skiss har konfigurationen uppdaterats för att använda JSON. En JSON fil och få på värdena är mestadels lätt men inte helt transparent. Du kan få på olika typer av data med hjälp av getInt, getFloat, getString, etc., men om du vill ta en lista med objekt du behöver getJSONArray och då behöver dra ut varje objekt som rätt typ.

För denna Config bestämde jag att någon lista över artiklar i de flesta fall kommer att vara av samma typ. Så jag lagt getStrings, getFloats och getInts.

Jag kunde nu använda en config-fil istället för att sätta enheter indexen till min skiss. JSON är inte så enkelt som namn: värde men det är inte alltför långt bort från det. Lite overkill för kort-filer, mycket praktiskt för mer komplexa strukturerade data.

Jag kommer inte gå in på detaljer på att koden här. Du kan läsa mer om det här.

Den första demo skissen visade ett sätt att skapa ett midibussar objekt. Ett annat sätt, och det är inte bara mer vänligt men lämpar sig för bättre konfiguration. Midibussar kan du ange vilka enheter du använder vid namn. Namnet måste matcha det som visas i listan över tillgängliga enheter, så du kan behöva först köra MidiBus.list för att se vad som finns.

När du vet namnen på saker kan konfigurationsfilen använda läsbar text i stället för kryptiska siffror.

Du kan också skicka in ett namn för bussen så att senare, när midiMessage anropas, din kod kan (om du vill) bete sig annorlunda beroende på källan till meddelandet.

Nu demo skissen (minus koden för Configgy.pde) ser ut så här:

import java.lang.reflect.Method;

import themidibus.*;
import javax.sound.midi.MidiMessage;

Configgy config;

int currentColor = 0;
ArrayList enheter = nya ArrayList();

void setup() {
storlek (480, 320);

config = nya Configgy("config.jsi");
String [] enhetsnamn = config.getStrings("devices");
println ("otillgänglig produkter").
println (join(MidiBus.unavailableDevices(), "\n"));
println("-----------------------------------------------------");

String [] available_inputs = MidiBus.availableInputs();
för (int jag = 0; jag < available_inputs.length;i++) {
för (int x = 0; x < deviceNames.length; x ++) {
println ("Kontrollera enheten" + enhetsnamn [x] + "mot" + available_inputs [i]);
om (available_inputs[i].indexOf(deviceNames[x]) > -1) {
println ("* *** Lägg till enhet" + enhetsnamn [x] + "****");
Devices.Add (nya midibussar (här, enhetsnamn [x], 1, deviceNames[x]));
}
}
}

om (devices.size() < 1) {
println ("kunde inte tilldela någon av de önskade enheter. \nExiting.");
Exit();
}

}

void draw() {
Background(currentColor);
}

void midiMessage (MidiMessage meddelande, lång tidsstämpel, sträng bus_name) {
int Obs = (int)(message.getMessage() [1] & 0xFF);
int vel = (int)(message.getMessage() [2] & 0xFF);

println ("Bus" + bus_name + ": Obs" + OBS + ", vel" + vel);
om (vel > 0) {currentColor = vel * 2.}
}

Filen config.jsi (lagras i data / mapp) är detta:

enheter: ["QuNexus", "01. Inre MIDI"]

Du måste justera detta oavsett enheter du har tillgängliga att använda.

När du kör skissen, din config filen kommer att laddas och koden kommer att försöka fylla en ArrayList med midibussar instanser baserat på enheten benämningar.

Observera att i detta exempel användningen av en ArrayList: kod är inte stör med specifik instans variabler för varje midibussar instans; denna kod referera inte någonsin dessa instanser.

Händelsehanteraren midiMessage anropas oavsett vilken av dessa enheter är att skicka meddelandet. Hundföraren skickas namnet på buss så kan du, om du vill, har koden vidta olika åtgärder beroende på källan till MIDI-meddelandet.

Om du undrar varför bry sig lägger till buss instanser på en lista om de ska aldrig användas, anledningen är att de fall utan någon form av ihållande tilldelning kommer att försvinna när installationen har slutförts. När de är borta, kommer det inte längre få kallas händelsehanteraren MIDI-meddelande.

Om du ville ha koden för att referera till någon av dessa fall kan du överväga att använda en HashMap för att hålla dem så att du kunde hämta specifika enheter med namn.

Se Steg
Relaterade Ämnen

Träbearbetning med barn hur till: Fox och får spela styrelsen

Små snabba projekt är perfekta när du vill komma igång och träna din träbearbetning färdigheter; de är också utmärkt om du arbetar med en mycket ung snickare. Det är därför vi har valt detta roliga spel till att börja med - det är snabbt och enkelt a...

Hur man gör en Arduino ljud synthesizer med MIDI-gränssnittet

Med denna synt kan du göra Arduino reproducera helt anpassade vågformer. På grund av MIDI-gränssnittet, kan det anslutas till alla instrument som sådan har och spela det med det ljud som du vill.Steg 1: materialArduino (i detta fall Arduino UNO)Instr...

Bearbetning med hjälp av proteus arduino modell

Denna ansökan Obs beskriver hur du använder bearbetning medLabCenter Proteus programvara för att simulera Arduino genom en virtuell COMPort.Det förutsätts att användaren är bekant med Proteus, ArduinoIDE och bearbetning IDE.Vad du behöver:LabCenters...

Launchpad / Sequencer med MIDI-utgång

För ett projekt som vi hade att göra ett instrument, kom vi upp med idén att göra en Sequencer kan skicka MIDI-data till en MIDI-spelare. Vi gjorde detta genom att använda Arduino och bearbetning. Det tog oss ca 5 dagar att utforma instrumentet, saml...

Hur man bygger en billig arbetsbänk för träbearbetning med en HD Kreg Jigg, med VIDEO tutorial

Gratis planer finns även nedan i Imperial och metriska.Steg 1: Se Full Video Tutorial Video här.Warren från en trä verktyg visar hur man bygger en billig och enkel ön träbearbetning workbench med hund hål, lederna är gjorda med Kreg HD pocket hole ji...

Hybrid sex strängad bas med MIDI-funktioner

Denna bas gitarr gjordes för ett universitet bedömning som ett original instrument var att vara konstruerat och tillverkat och kunna kommunicera med en dator på något sätt. Denna bas kan dock skapas utan MIDI-funktionerna som det låter bra och är bil...

"Träd-Nex" - träbearbetning med naturliga former (uppdaterad)

ju mer jag arbetar med trä, ju mer jag älskar det och ju mer jag känner djup beundran & respekt för det.Respekt för att underlätta arbetet, även med grundläggande verktyg.Respekt för sin enorma variation - varje bit av trä är unik och inte två stycke...

Med bearbetning med glödande kol

En av de saker som intresserar mig mest om Ember, är det faktum att indatafilerna är en bunt med png. Detta innebär att man kan i huvudsak mata skrivare bilder utan behov av heltäckande förkroppsligar modellering, STLs eller skivning! Det är en gansk...

Fotocell reagerar på ljus som ett öga. ett inledande projekt för bearbetning med Arduino

I detta projekt kan du se ett enkelt exempel på med behandling för att göra en grafisk representation av data som en arduino får som indata från en sensor. I detta fall en fotocell.Efter att få ett öga bild från internet, vad jag gjorde är, göra med...

Time-Lapse fotografi bearbetning med hjälp av GIMP

efter att ha tagit flera bilder av moln utanför mitt hem, märkte jag att de var på nästan samma riktning. Genom att visa dem i snabb följd, de såg nästan ut som en tidsfördröjd bildruta-för-bildruta-animering. Jag bestämde mig att göra den till en an...

Beatfly: Gör en lysande luftskepp och kontrollera den med din röst, tangentbord, MIDI-Controller, Garageband fil, iPhone, Flash och mycket mer! [Mac OSX]

Jag har arbetat med flera projekt med hjälp av luftskepp och ballonger, och här vill jag dela en av dem, Beatfly. Detta är en lysande luftskepp kontrolleras med olika gränssnitt såsom röst, tangentbord, MIDI-Controller, Garageband MIDI-fil, iPhone oc...

Skicka och ta emot MIDI med Arduino

Detta instructable visar dig hur du använder en Arduino att skicka och ta emot en mängd olika MIDI-meddelanden så att du kan börja bygga din egen MIDI-controllers och instrument. Första jag ska prata lite om MIDI-protokollet, om du bara letar exempel...

Kontrollera en MIDI CC i Ableton Live med en Arduino Uno

I detta instructable vi ska använda en potentiometer på en Arduino Uno för att styra en MIDI CC i Ableton Live. Ett MIDI CC står för kontinuerlig Controller, dvs ett nummer i intervallet från 0 till 127 inclusive att modulera något med. I youtube jag...

MIDI-SoundFont synthetizer med Intel Edison och Fluidsynth

På detta Instructable, ska jag visa hur man bygger din egen MIDI SoundFont synthesizer med hjälp av Intel Edison och Fluidsynth.Genom att följa stegen som beskrivs här, har du en synt som kan spela nästan alla SoundFont finns på Internet, så i princi...

Konvertera en toy piano för att arbeta som en MIDI-enhet och använda den med Synthesia

målet med detta projekt:Konvertera en billig leksakspiano för att arbeta som en MIDI-enhet och använda den med Synthesia (http://www.synthesiagame.com/)Andra program som använder MIDI-ingångar kan också användas.Tillvägagångssätt:Tryckknappar av pian...

Roligt spel med arduino och bearbetning

Denna tutorial ska show dig hur man gör en första person FPS-shooter i bearbetning med hjälp av en arduino. Detta projekt lämnades till oss som en avslutande tentamen i en teknisk specialkurs, (gymnasieskolan).Video av projektet! :) (Svårt att spela...

Trumma MIDI handske med hjälp av Arduino och ljussensorer

kommer jag att beskriva ett roligt och enkelt sätt att bygga ditt eget ljud uttryck MIDI aktiverat handske utan att använda massor av pengar på MIDI-gränssnitt eller dyra sensorer.Välkommen att kontakta mig direkt via mail om du gillar det eller har...

Hur man skär runt Bullnose gips pärlor med en Mider

detta är hur vi skär runda gips pärlor som möts i en 90 graders hörn. Vi kommer att använda ett verktyg som kallas en "Mider" för att markera våra linjer så att våra hörnen har inga luckor där de möter. Om det finns luckor mellan två pärlor, är...

Dub Cadet: Holografiska MIDI & LED-Controller för Arduino - del 1

Jag tror holografisk musikinstrument blir vardagsmat i framtiden, visar överallt från skolor (Skolverket), hem (på skoj), till media kontor (för kreativitet), och i musik studios (för produktion). Anledningen är enkel: den holografiska musikinstrumen...