Scripting verwerking met MIDI (10 / 12 stap)

Stap 10: Gridly goedheid

Deze opstelling kan meerdere apparaten te leggen van de rol van raster. Wat overblijft is om toe te voegen sommige definitieve bloeit.

Het grootste deel van de graphics gebeurt op een gesplitst scherm. Één meer rendering structuur die het volledige scherm zou mooi zijn. Te dien einde een nieuw exemplaar van de RenderArgs ArrayList gemaakt.

Een paar meer tweaks krijgen ook ingevoerd. De optie om een schaalfactor bij het weergeven van een GIF-afbeelding. Hierdoor twee interessante kenmerken: U kunt het centreren van een grote GIF dat anders niet int een uniforme raster passen zou (aangezien u kunt in de buurt van de linker bovenhoek plaatsen en vervolgens schalen het), en u kunt groeien/verkleinen GIFs zoals ze Toon zijn.

De standaard MIDI-toewijzing voor de erfenis Launchpad ziet dit opmerkelijk verfijnde grafiek:

 (104) (105) (106) (107) (108) (109) (110) (111) [ 0] [ 1] [ 2] [ 3] [ 4] [ 5] [ 6] [ 7] ( 8) [ 16] [ 17] [ 18] [ 19] [ 20] [ 21] [ 22] [ 23] ( 24) [ 32] [ 33] [ 34] [ 35] [ 36] [ 37] [ 38] [ 39] ( 40) [ 48] [ 49] [ 50] [ 51] [ 52] [ 53] [ 54] [ 55] ( 56) [ 64] [ 65] [ 66] [ 67] [ 68] [ 69] [ 70] [ 71] ( 72) [ 80] [ 81] [ 82] [ 83] [ 84] [ 85] [ 86] [ 87] ( 88) [ 96] [97] [98] [ 99] [100] [101] [102] [103] (104) [112] [113] [114] [115] [116] [117] [118] [119] (120) 

Er zijn ronde knoppen aan de bovenkant en aan de rechterkant; de belangrijkste indeling is een 8 x 8 raster. De getallen in de grafiek zijn de MIDI Opmerking waarden die elke knop Standaard verzendt.

Sommige dingen op te merken: er zijn hiaten in de opmerking bereiken en Opmerking 104 wordt herhaald tweemaal, eerst boven de eerste knop als opnieuw op een knop in de rechterbenedenhoek.

Ik wilde hebben betrekking op pad kunnen bepaalde aspecten van een effect te maken meer intuïtief. Zoals u misschien al geraden door nu juist in voortdurend in beweging, maar hier is enkele voorbeelden.

Het Renoise spoor werd opgericht voor het verzenden van sommige vrij gestructureerde schets triggers. Bijvoorbeeld, het genereren van een reeks raster-vulling.

Ik wilde voor de onGridNoteNN-berichten kunnen plaatsen en GIFs schaal over het volledige schets venster.

Zoals voorheen, er is een lijst te houden gegevens voor GIF-bestanden te plaatsen op het scherm en de methoden items toevoegen en de lijst wissen.

De focus ligt op de sectie van de Launchpad: de eerste vijf kolommen (van links) en de top drie rijen.

Verplaatsen over de pads in een rij plaatst een GIF in een relatieve schermlocatie (uiterst links, beetje links, centreren, etc.). Uit de eerste rij te verplaatsen naar de derde stelt verschillende GIF schalen; lager is groter.

Een GIF dat de hele linkerzijde vult; plaatsen het raken van het stootkussen voor toelichting 32 Opmerking 36 vult de rechterkant.


Controle van de schets met behulp van de Launchpad

Dit alles werkt een raster uit 8 rijen van 16 kolommen. Het verschil zit in de schalingsfactor gebruikt. Een GIF toevoegen aan de lijst van de RenderArgs remderC bestaat uit het aanroepen van deze methode:

 void placeGif8x16(int index, float scaling ){ gridCRows = 8; gridCCols = 16; gridCPointer = index; centerScaling = scaling; addToGridC(); } 

waar addToGridC is net als addToGridL4x4.

En, net als eerdere code, is er veel gebruik van geassorteerde globale variabelen controleren raster indexeren en schalen.

Waarschuwing: Bijwerkingen kan veroorzaken

Een grote hoeveelheid verwerking code die ik zie maakt uitgebreid gebruik van globale variabelen. Dat wil zeggen, variabelen die kunnen worden benaderd en eventueel gewijzigd voor elke plaats in de tekening.

In het algemeen maakt dergelijke dingen me ineenkrimpen. Maar waarom? En als het zo crade-inducerende waarom ik doe het hier?

Er is een goede dekking van de gevaren van globale variabelen hier en hier.

In een notendop, globale variabelen zijn enkel dat: globaal variabele. Wanneer een methode, zoals de placeGifAt maakt gebruik van kan een globale variabele (bijvoorbeeld centerScaling), er is geen zekerheid welke waarde van die variabele hebben.

De waarde kan hebben is ingesteld door een methode, maar vervolgens later veranderd door een andere, alvorens placeGifAt krijgt om het te gebruiken. Deze hoge mate van veranderlijkheid maakt het erg moeilijk om te begrijpen wat er gaat gebeuren wanneer placeGifAt wordt aangeroepen. Inderdaad, het is heel goed mogelijk dat centerScaling kan eindigen met een volledig onbruikbaar waarde. Wanneer iets niet correct gedraagt zich, waar moet u kijken om te begrijpen waarom? Als een waarde die wordt gebruikt in een methode kan van overal in uw code worden gewijzigd, hoe bepaal je het?

Vele Processing schetsen zijn vrij klein. Ze passen in één bestand, en zijn voor het grootste deel makkelijk door heen te kijken. Als een schets niet vreselijk ingewikkeld is is dan opsporen van vreemd gedrag misschien niet een groot probleem.

Een klein programma met behulp van globale variabelen beginnen is niet een grote zonde, en kan gemakkelijker te springen, probeer dingen en beoordelen van de resultaten. Dit soort onderzoek moet worden aangemoedigd.

Zoals code, echter groeit bedoeld het nadeel van bijwerkingen als gevolg van de globale variabelen veranderen op manieren die met conflicteren gedrag kan groeien. Het kan zinvol zijn om te beginnen met het inkapselen van deze variabelen, en de manieren waarop zij kunnen worden betreden, in klassen.

In het geval van experimentele code, en misschien creatieve codering in het algemeen, kunnen deze bijwerkingen een toevallige zegen.

Zoals ik schreef de handgrepen om te reageren op berichten van de Launchpad voegde ik methoden die een lijst van GIF-plaatsing informatie gevuld. De daadwerkelijke plaatsing van deze GIFs maakt gebruik van de gemeenschappelijke mondiale waarde van centerScaling.

Zonder de gevolgen te realiseren had ik mijn methoden wijzigen van de waarde van centerScaling. Het onbedoelde gevolg was dat alle bestaande GIFs in renderC grootte veranderden wanneer een methode gewijzigd de waarde van centerScaling.

Niet wat ik van plan was, maar ik houd het effect. Als en wanneer ik de code in een minder lukraak corral de structuur van dit soort gedrag mogelijk iets ik zult willen houden.

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