Scripting verwerking met MIDI (2 / 12 stap)

Stap 2: Een eenvoudige schets

Dit is een eenvoudige schets wilt weergeven van fundamentele gedrag en wilt controleren of de dingen werken.

 // SimpleMidi.pde import themidibus.*; //Import the library import javax.sound.midi.MidiMessage; MidiBus myBus; int currentColor = 0; int midiDevice = 3; void setup() { size(480, 320); MidiBus.list(); myBus = new MidiBus(this, midiDevice, 1); } void draw() { background(currentColor); } void midiMessage(MidiMessage message, long timestamp, String bus_name) { int note = (int)(message.getMessage()[1] & 0xFF) ; int vel = (int)(message.getMessage()[2] & 0xFF); println("Bus " + bus_name + ": Note "+ note + ", vel " + vel); if (vel > 0 ) { currentColor = vel*2; } } 

Eerste een snelle run-through: wanneer u stormloop zulks u zien moeten (in het berichtvenster verwerking IDE, of in een terminal-venster, afhankelijk van hoe u draaien) een lijst van beschikbare MIDI-ingangen en uitgangen. In mijn geval heb ik een QuNexus MIDI-keyboard dat gebeurt te komen als input nummer 3, dus dat is de waarde die ik toegewezen aan midiDevice gekoppeld. (Kan me niet schelen wat uitvoerapparaat is geselecteerd ik gewoon kunt instellen op 1.)

De schets ijslollie opwaarts een venster dat zal veranderen grijstinten op basis van de snelheid van welke MIDI niet u het verzendt.

Als u geen apparaat gebruikt dat met variabele snelheid stuurt vervolgens de visuals worden niet vreselijk interessant. U ziet wel nog de details van de diverse println.

Wat er gebeurt in deze schets

Eerst moet omhoog u importeren de MidiBus bibliotheek (themidibus) maar ook een Java-bibliotheek (javax.sound.midi.MidiMessage) zodat uw code naar MidiMessage-objecten verwijzen kan (zoals gebeurt in deze schets).

Afhankelijk van wat u wilt doen met de methoden beschikbaar via MidiBus moet u wellicht andere Java-MIDI-bestanden te importeren, maar voor dit voorbeeld net die ene zal doen.

In setup initialiseert de schets de MidiBus aanleg myBus. Wanneer u een nieuw exemplaar van een klasse MidiBus maakt die u wilt doorgeven in een verwijzing naar de huidige schets (AKA dit), de index van het apparaat om te luisteren naar, en de index van het apparaat te verzenden.

Als u wilt zien welke apparaten beschikbaar zijn kunt u bellen MidiBus.list() waarmee wordt afgedrukt (naar STDOUT) van de lijsten van beschikbare MIDI input en output apparaten. Het nummer dat wordt weergegeven aan de linkerkant van een item is het indexnummer dat u gebruikt bij het maken van uw MidiBus exemplaar.

Als je wilde echt slim misschien u wikkel deze om in een soort GUI (misschien met behulp van ControlP5) zodat de apparaten kunnen worden ingesteld of gewijzigd nadat de schets is gestart. In de praktijk echter de apparaten zijn waarschijnlijk overstappen van een run op de volgende en hard te coderen hen is waarschijnlijk goed genoeg voor de meeste gevallen. Een andere optie is om uw schets deze waarden uit een configuratiebestand te laden, zodat wanneer u nodig hebt om ze te veranderen het is een beetje makkelijker te doen.

Zodra een MidiBus exemplaar is gemaakt, en een geschikte schets venster, is het tijd om te wachten op sommige MIDI ingang.

Een globale variabele, currentColor, is op zijn plaats te houden de grijstinten waarde voor de achtergrond van de schets. Alle tekenen doet is gebruik deze waarde om te kleuren van het venster. Maar als u MIDI notities aan de schets het webvenster verandert stuurt. Waar is de wijziging optreedt?

MidiBus biedt een paar callback-methoden. Dit zijn de methoden die automatisch onder verschillende omstandigheden aangeroepen worden. Deze sketch maakt gebruik van midiMessage, die automatisch wordt aangeroepen wanneer een MIDI-bericht binnenkomt.

Er zijn twee versies van midiMessage; de andere heeft slechts één argument voor de MIDI-bericht. Deze sketch gebruikt een versie met de tijdstempel en MIDI bus naam enkel te tonen enkele van de details van de MIDI die kunt u.

U bepaalt wat er gebeurt in deze methode. Voor deze schets de code pakt één of andere info over de MIDI-bericht afgedrukt en vervolgens kijkt naar de snelheid van de opmerking. Als de snelheid groter dan nul is dan die waarde is verdubbeld en aan currentColor toegewezen.

Waarom waarden van nul niet overslaan? De MIDI-specificatie definieert berichten voor zowel "Let op" en "Let". Maar sommige apparaten geen moeite met "note af", in plaats daarvan bericht verzenden een "nota over" met een snelheid van nul.

Toen ik eerst het schrijven deze schets ik gewoon pakte de snelheid gebruikt het en zag dat het scherm zwart ging een zodra ik nam mijn vingers van de sleutels van de QuNexus. Kijken naar de println uitgang ik zag wat er gebeurde: nul snelheid voor "note af".

Hoe je omgaat met dit is aan jou; Wees ervan bewust dat het kan gebeuren.

Dus dit heel de eenvoudige schets is, maar een belangrijke idee toont: de schets wacht op externe signalen, reageert op deze signalen door bijwerking van sommige variabelen, en elke keer voor draw maakt gebruik van de huidige stand van deze variabelen om iets te doen.

Gerelateerde Artikelen

Hoe maak je een Arduino sound synthesizer met MIDI-interface

Hoe maak je een Arduino sound synthesizer met MIDI-interface

Met deze synthesizer kun je Arduino reproduceren van volledig aangepaste golfvormen. Als gevolg van de MIDI-interface, kan het worden aangesloten op alle instrumenten die dergelijke functie en spelen met het gewenste geluid.Stap 1: materialen(In dit
Verwerking met behulp van het model van de arduino proteus

Verwerking met behulp van het model van de arduino proteus

Deze toepassing nota wordt beschreven hoe u verwerking metde LabCenter Proteus-software voor het simuleren van de Arduino via een virtuele COMPoort.Hierbij wordt ervan uitgegaan dat de gebruiker vertrouwd met Proteus, de ArduinoIDE en de verwerking I
Launchpad / Sequencer met MIDI uitgang

Launchpad / Sequencer met MIDI uitgang

Voor een project dat we hadden om een instrument te maken, kwamen we met het idee een Sequencer om geschikt te maken voor het verzenden van MIDI-data naar een MIDI speler. We dit gemaakt met behulp van Arduino en Processing. Het kostte ons ongeveer 5
Hybride zes snarige bas met midi mogelijkheden

Hybride zes snarige bas met midi mogelijkheden

Deze basgitaar is gemaakt voor een beoordeling van de Universiteit waarin een oorspronkelijke instrument moest zijn ontworpen en geconstrueerd en kunnen communiceren met een computer op een bepaalde manier. Deze bas kan echter worden gemaakt zonder d
Verwerking met Ember

Verwerking met Ember

Een van de dingen die interesseert mij het meest over Ember, is het feit dat de inputdossiers een stapel PNGs. Dit betekent dat men kan in wezen het voeden van de beelden van de printer zonder de behoefte aan solide lichaam modellering, STLs of snijd
Hoe u een eenvoudig spel van de verwerking met Arduino

Hoe u een eenvoudig spel van de verwerking met Arduino

Hoi allemaalIn dit Instructable, zullen we zien hoe maak je een "link" tussen een Processing Schets en een Arduino-kaart. In dit voorbeeld worden een ultrasone module worden gebruikt voor het besturen van een vliegtuig in een eenvoudig spel. Nog
Time-Lapse fotografie verwerking met behulp van GIMP

Time-Lapse fotografie verwerking met behulp van GIMP

na het nemen van enkele foto's van wolken buiten mijn huis, ik zag dat ze op bijna dezelfde richting. Bij het bekijken van hen in snelle opeenvolging, leek ze bijna een frame-voor-frame time-lapse animatie. Ik besloot om te zetten in een GIF-bestand
MIDI-handschoen met behulp van de Arduino en lichtsensoren drummen

MIDI-handschoen met behulp van de Arduino en lichtsensoren drummen

ik zal beschrijven een leuke en gemakkelijke manier om uw eigen geluid expressie opbouwt MIDI ingeschakeld handschoen gebruikten veel van geld op MIDI Interfaces of dure sensoren zonder.Voel je vrij om contact met mij direct per mail als u suggesties
U Rock Guitar midi controller met Bluetooth BLE en oplaadbare batterij

U Rock Guitar midi controller met Bluetooth BLE en oplaadbare batterij

In deze tutorial zal ik u tonen hoe te schakelen gitaar u Rock gitaar in een midi-controller voor Bluetooth 4.0 met oplaadbare batterij. De oplossing was simpel maar moest denken.Dit systeem is getest met de iMac, iPad en iPhoneHet materiaal dat we n
Controle van een RepStrap met verwerking

Controle van een RepStrap met verwerking

dit instructable laat zien hoe u kunt vele openlijk beschikbare projecten samen een interessante en complexe systeem te bouwen. Zij is geïnspireerd op diverse communautaire projecten waaronder: RepRap, Arduino, verwerking, Linux en, natuurlijk, Instr
Verzenden en ontvangen van MIDI met Arduino

Verzenden en ontvangen van MIDI met Arduino

Dit instructable zal u tonen hoe te een Arduino gebruiken voor het verzenden en ontvangen van een verscheidenheid van MIDI-berichten, zodat u kunt beginnen met het opbouwen van uw eigen MIDI-controllers en instrumenten. Eerst ik zal praten een beetje
Converteren van een speelgoedpiano om te werken als een midi-apparaat en gebruik het met Synthesia

Converteren van een speelgoedpiano om te werken als een midi-apparaat en gebruik het met Synthesia

doel van dit project:Converteren van een goedkope speelgoedpiano om te werken als een midi-apparaat en gebruik het met Synthesia (http://www.synthesiagame.com/)Andere programma's die gebruikmaken van midi-ingangen kunnen ook worden gebruikt.Aanpak:De
Arduino Midi-controller met een ZX afstand en gebaar Sensor

Arduino Midi-controller met een ZX afstand en gebaar Sensor

Welkom bij dit instructable over het bouwen van een zeer basic Midi-Controller met de SparkFun ZX afstand en gebaar Sensor. Dit instructable is onderdeel van een schoolwerk.Opmerking: Dit is geen codering tutorial. De definitieve code zal worden opge
Verbinding maken met meerdere MIDI-apparaten, Y-kabel, SAVE $$$

Verbinding maken met meerdere MIDI-apparaten, Y-kabel, SAVE $$$

Ooit wilde doen LIVE optredens, door het aansluiten van meerdere toestellen via MIDI? Beheersing van mixer, zelfs als het andere toetsenbord niet heeft, zoals PA800 >> PA3X? zoals PSR 3000 en omhoog >> Tyros 3 +?Het is nu mogelijk! Als u de in