In deze tutorial voor onze Max MSP Beginnersgids leer je hoe je een envelopsysteem bouwt dat je aan de oscillator kunt koppelen, zodat de noten die door de monofone synthesizer worden geproduceerd, stoppen met spelen zodra je de MIDI-toets loslaat.
- LEES MEER: Max MSP Beginnersgids:hoe je een monofone softwaresynthesizer bouwt
Als je de vorige twee tutorials nog niet hebt gelezen, waarin we je de basistools van Max MSP laten zien, en hoe je een input/output en oscillator bouwt, bekijk ze dan eerst voordat je aan deze tutorial begint.
Open uw patch uit de laatste tutorial en zorg ervoor dat de pagina correct is ingesteld voordat we aan de slag gaan. Helaas worden deze niet opgeslagen en moeten ze elke keer opnieuw worden ingesteld wanneer u Max MSP opent. Als u hulp nodig heeft, kunt u teruggaan naar deel 1 van deze tutorialserie.
Maak vervolgens een nieuwe subheader op uw patch, genaamd Envelope. Vanwege zijn functie kan hij het beste onder de ingang worden geplaatst.
De Envelop
Herinner je je de snelheidsinformatie die door het MIDI-apparaat werd verzonden in de laatste tutorial? Dit zal de basis van de envelop zijn; dit vertelt je synth wanneer hij moet beginnen en stoppen met het spelen van een noot.
Er zijn vier typische componenten voor een envelop:aanval, ondersteuning, verval en release. Gelukkig voor ons is er een object waarmee we elk van deze variabelen op een heel eenvoudige manier kunnen instellen.
Maak het object ‘adsr~’ aan. Als je het helpbestand opent (door alt/option ingedrukt te houden en op het object te klikken), kun je zien dat er meerdere manieren zijn om de envelop te activeren, en ook de argumenten aanval, aanhouden, verval en loslaten in te stellen. Eerst maak je een eenvoudige envelop voordat je leert hoe ze kunnen worden geactiveerd door berichten en knallen.
Het kan zijn dat een voorwerp rood is. Dit betekent dat Max MSP het object niet kan begrijpen en dat het gecorrigeerd moet worden. Dit zal ook verschijnen in de Max Console aan de rechterkant van de patch en zou je moeten vertellen waarom Max MSP niet kan lezen wat je hebt gemaakt.
Omdat we voorlopig alleen maar een eenvoudige envelop willen maken, gaan we de variabelen rechtstreeks in het object invoegen. Dit is een handige optie als u wilt dat uw envelop slechts één instelling heeft. Je kunt de cijfers kiezen die je wilt, maar we gebruiken 20, 80, 0,5 en 2.
De envelop aansluiten
Nu we het envelopobject hebben gemaakt, moet het worden verbonden met de rest van de patch. Zoals eerder vermeld, moet het de snelheidsinformatie ontvangen die wordt ontvangen door het ‘notein’-object. Om dit te doen moeten we een draad aansluiten van de snelheidsuitgang op de 'Kslider' naar de 'asdr~'-trigger, de inlaat aan de linkerkant, omdat wanneer de snelheid verandert, deze de envelop moet activeren om in te schakelen.
Vervolgens moet je hem op de uitgang aansluiten, zodat we de envelop zijn magische werk kunnen horen.
We raden u aan de envelop aan de linkerkant van de inlaat van het vermenigvuldigingsobject toe te voegen, zodat het proces in de toekomst duidelijker voor u wordt.
Wanneer u uw noot speelt, kan deze echter opnieuw worden gespeeld wanneer u de noot loslaat. Als dit gebeurt, hoeft u zich geen zorgen te maken. Dit betekent dat de envelop wordt getriggerd voor zowel ‘note on’ als ‘note off’. Een eenvoudige oplossing hiervoor is om het object ‘<0’ toe te voegen tussen de Kslider-uitlaat en de ‘asdr~’-inlaat, met behulp van de linkerinlaat van het nieuwe object.
Dit zorgt ervoor dat alle getallen die naar de envelop gaan groter zijn dan 0, omdat het binnenkomende getal met 0 wordt vergeleken. Er wordt dus geen toon geactiveerd als je de toets loslaat.
Op dit punt zou uw patch er als volgt uit moeten zien:
De envelop verbinden met Max MSP Als u een visuele weergave van uw signaal wilt, kunt u het object ‘meter~’ toevoegen aan de uitgang van de signaalvermenigvuldigingsuitgang in de uitgang van uw synthesizer. Daar kunt u zien hoe de envelop het signaal verandert.
Berichten en voorinstellingen
Je hebt nu een werkend envelopsysteem gecreëerd dat de door de oscillator geproduceerde noot uitschakelt.
Hoewel het maken van voorinstellingen in meer detail zal worden besproken in een komende tutorial, zijn berichten en knallen een gemakkelijke manier om de instellingen voor een envelop aan te passen, zonder dat u de instellingen elke keer handmatig hoeft aan te passen.
Om dit te doen, moet u een subpatch maken. Dit is in wezen een patch binnen een patch en zal de rommel op de pagina verminderen. Je maakt er een door een object te maken en vervolgens de letter ‘p’ in te typen, gevolgd door de naam van de subpatch. In dit geval hebben we het ‘p ENVELOPE’ genoemd.
Nadat u het hebt gemaakt, gaat u naar de subpatcher. Het eerste dat u moet maken, zijn de inlaten en uitlaten, zodat u de subpatcher aan uw envelopobject kunt bevestigen. Omdat er vier variabelen zijn die u moet controleren en u vier verschillende vooraf ingestelde opties wilt maken, moet u vier ‘inlet’-objecten en vier ‘outlet’-objecten maken.
Terug in de hoofdpatch moeten de uitgangen van de subpatch-objecten worden aangesloten op de relevante aanval, verval, ondersteuning en release op het ‘asdr~’-object. Je kunt over elke inham bewegen om te zien welke welke is.
Subpatchers kunnen een gemakkelijke manier zijn om te patchen, vooral met software-instrumenten zoals synthesizers. Een knal in de hoofdpatch kan echter geen bericht activeren in een subpatch.
Daarom moet je vier pony's maken binnen de subpatch en verbonden met de inlaten, en buiten de subpatch, ook verbonden met de inlaten van het object. Dit betekent dat wanneer de knal op de hoofdpatch wordt geactiveerd, deze de knal in de subpatch zal activeren, die vervolgens de berichten zal vertellen dat de variabelen in het object moeten worden gewijzigd.
Zo zou de envelop in de hoofdpatch er in dit stadium uit moeten zien:
Envelop in de hoofdpatch Als je de enveloppen in realtime wilt zien veranderen, kun je cijfervakken toevoegen tussen de subpatcher en het ‘asdr~’-object en de cijfers zien veranderen terwijl je de knal activeert.
Terugkomend op de subpatcher hebben we eerder berichten genoemd en hoe ze objecten kunnen vertellen wat ze moeten doen. Daarom zullen deze knallen het bericht activeren om het envelopobject op de gewenste instellingen in te stellen, in plaats van op de instelling die in het envelopobject is geschreven.
Elk van de vier presets moet worden geactiveerd door een knal, maar moet worden gerouteerd naar de vier verschillende variabelen:Attack, Decay, Sustain en Release. Dit betekent dat we 16 afzonderlijke berichten moeten maken, gegroepeerd in de vier presets.
Aan de hand van het voorbeeld van de envelopinstelling uit de vorige sectie, zou een van de presets in de subpatcher er zo uit moeten zien:
Een van de presets in de subpatcher Wanneer de knal van de eerste inlaat wordt geactiveerd, moet de envelop op die variabelen worden ingesteld, aangezien deze aan elke inlaat op het object ‘adsr~’ zijn gekoppeld. U moet deze stap herhalen voor de andere drie inlaten, waarbij u telkens de variabelen naar uw voorkeursinstelling wijzigt.
We hebben de vier presets zo gemaakt dat de envelop kan veranderen van zacht klinkend naar kort, luchtig en lang. Nadat deze stap is voltooid, kunt u de subpatcher sluiten.
Dit is ons voorbeeld van de voltooide subpatch, waarbij alle berichten naar het juiste stopcontact zijn verzonden:
Voltooide subpatch Als u nu op de synthesizer speelt en de bang-berichten op de hoofdpatch activeert, zouden de envelopinstellingen automatisch moeten worden gewijzigd.
Er zijn talloze manieren om presets te maken op Max MSP. Hoewel dit slechts één voorbeeld is, zullen we in tutorial vijf ingaan op een paar andere, eenvoudigere manieren om verschillende instellingen op uw patch vooraf in te stellen.
Je zou nu een synthesizer moeten hebben met een oscillator en envelop. Voel je vrij om verder te sleutelen aan verschillende instellingen en grip te krijgen op het platform.
Als je Max MSP nog niet hebt gedownload, biedt Cycling 74 een gratis proefperiode van vier weken