Inhoudsopgave:
- Stap 1: Soundflower instellen met Max en uw DAW
- Stap 2: Bepaal uw signaalverwerkingspad
- Stap 3: Een droge mix toevoegen
- Stap 4: Pitch verschuiven met een Pitchshifter
- Stap 5: VERVORMING
- Stap 6: De kracht van drone
- Stap 7: Betreed de Bizarre: Ring Modulation
- Stap 8: Vertraging en signaalverslechtering… Degrad… Deg… D…
- Stap 9: Belton Brick-stijl reverb
- Stap 10: Willekeurige stereo tremolo
- Stap 11: Oscilloscoop
- Stap 12: Presentatie van de signaalverwerkingsmodule
- Stap 13: Sectie 2: de akkoordgenerator
- Stap 14: Notities laten invoeren in de arpeggiator
- Stap 15: Arpeggiatie van die akkoorden
- Stap 16: De 'Key Jumbler'
- Stap 17: de magie laten gebeuren met autonome notitiegeneratie
- Stap 18: finishing touch
- Stap 19: Alles inpakken
Video: Max MSP Ambient Loop Generator - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Dit is een tutorial over hoe je aan de slag kunt gaan met het maken van een ambient loop generator in Max MSP.
Deze tutorial verwacht dat je een basiskennis hebt van Max MSP, DAW-interfaces en signaalverwerking. Als je het programma wilt gebruiken dat in deze tutorial is ontworpen, ga je gang en download het, gratis te gebruiken (maar niet om te verkopen of opnieuw te publiceren)!
Het programma dat we gaan ontwerpen heeft TWEE hoofdgedeelten:
1) Een multi-signaalprocessor
2) Een semi-gerandomiseerde nootgenerator
De nootgenerator loopt langzaam langs een toets/schaal in semi-willekeurige patronen en voert MIDI-gegevens in een DAW, die op zijn beurt audio terugstuurt naar Max om te worden verwerkt.
Hier is een link naar het laatste patchbestand:
Benodigdheden:
- Basis Max MSP- en MIDI-kennis
- Max. MSP
- Audio-interface (we gebruiken Logic Pro X)
- Geluidsbloem
- (Optioneel) Enkele goede plug-ins voor software-instrumenten voor uw DAW
Stap 1: Soundflower instellen met Max en uw DAW
Soundflower is een programma dat helpt bij het verzenden van audio tussen programma's op Mac. We zullen dit gebruiken om audio van onze DAW naar Max te krijgen.
Soundflower gebruiken met je DAW kan niet eenvoudiger! Download gewoon Soundflower en het zal beschikbaar worden voor gebruik als audio-uitgang en -ingang. Als we adc~ (audio-invoer) en dac~ (audio-uitvoer) objecten maken, kunnen we zien dat Soundflower 2ch en Soundflower 64ch bruikbare audiopaden worden. We gebruiken Soundflower 2ch (2-kanaals) voor dit programma.
Voeg in Max een schakelaar toe om je invoer in en uit te schakelen, en een gain-schuifregelaar voor volume, en je bent op weg.
In je DAW zie je onder voorkeuren > audio audio input en audio output. We gebruiken Soundflower 2ch als audio-uitgang.
Stap 2: Bepaal uw signaalverwerkingspad
In eenvoudige bewoordingen, wordt uw audio vervormd in een aantal verschillende kanalen, of allemaal in één rechte lijn?
We hebben besloten om parallelle audioverwerking te gebruiken - ons signaal zal op meerdere verschillende kanalen worden vervormd. Dit geeft ons het voordeel van duidelijkere algemene audio en meer controle over ons signaal, maar duwt veel volume in de masterversterking, wat resulteert in wat clipping. We besloten dat meer controle wat vervormde audio waard was, omdat dit sowieso ambient loops zal creëren!
Bovendien moet u beslissen welke effecten u wilt creëren. We zullen hier enkele effecttypes demonstreren als je ideeën wilt.
Stap 3: Een droge mix toevoegen
We hebben eerst een "droge mix" toegevoegd, zodat we een apart, onaangetast audiosignaal konden hebben. Dit werd gedaan door de adc~-uitvoer in een gain-schuifregelaar te zetten (met een draaiknop om het gemakkelijk te kunnen bekijken), in een svf~-filter met een draaiknop om de laagdoorlaatfiltering aan te passen, en vervolgens in masterversterking en uit naar de dac~. Het hebben van een droge mix kan best handig zijn, dus we raden het aan als je de dingen enigszins helder wilt laten klinken en gemakkelijk wilt testen!
Misschien hebben we je daar een beetje in de gaten gehouden - we zullen al onze effecten in afzonderlijke svf~-filters zetten om toonknoppen voor elk signaalkanaal te hebben. Dit maakt het gemakkelijk om de audioruimte vrij te maken wanneer een bepaald effect een te hoge frequentie heeft. We hebben al onze svf~ laagdoorlaatfilters gemaakt (door ze aan te sluiten op de laagdoorlaatuitgang), zodat ze de hoge frequenties geleidelijk afsnijden door de draaiknop omlaag te draaien. svf~ heeft echter ook banddoorlaat (selectieve frequentie), hoogdoorlaat (verwijder dieptepunten) en andere handige filters. Experimenteer om te zien wat je leuk vindt en nodig hebt, of gebruik zelfs meerdere filters!
Stap 4: Pitch verschuiven met een Pitchshifter
Voor een eenvoudige, gebruiksvriendelijke pitchshifter kopieert u de pitchshifter-code uit de pitchshifter-helpgids in Max. Onze code lijkt erg op elkaar, maar verwijdert functies zoals glijden en meerdere instellingen voor audiokwaliteit om rommel te verminderen. Als u uw audio hierin laat lopen (van adc~ voor parallel geluid, of van de droge mix voor seriegeluid) kunt u een draaiknop gebruiken om het niveau van toonhoogteverschuiving aan te passen.
Net als bij de droge mix hebben we een gain-schuifregelaar en een svf~-object toegevoegd om volumeregeling en EQ-vorming mogelijk te maken.
Stap 5: VERVORMING
Het gebruik van het object overdrive~ is de eenvoudigste manier om vervorming toe te voegen. Je kunt dat in een gain-schuifregelaar en een filter uitvoeren en het een dag noemen. We gingen echter een paar stappen verder. Ten eerste hebben we de linker en rechter audiopaden in afzonderlijke phaseshift~-objecten gezet - deze plaatsen de linker en rechter audiopaden uit fase, waardoor de audio "verdikt" wordt zoals een choruspedaal dat zou kunnen.
Bovendien hebben we de resulterende audio naar een cascade~-object gestuurd met een bijgevoegde filtergraph. Hierdoor kun je de audio in bepaalde frequenties min of meer vervormen, en met zoveel filterbanden als je wilt. Onze vervormingsfiltergrafiek is gemodelleerd naar de vervorming van een Boss HM-2 Heavy Metal-pedaal uit de jaren 80.
Op dit punt begonnen we ook omx.peaklim~-objecten toe te voegen na bijzonder luidruchtige effecten - dit object beperkt het audiosignaal dat er doorheen komt zoals een compressor dat zou doen, waardoor het gemakkelijker wordt om te voorkomen dat het uiteindelijke audiopad wordt afgekapt.
Stap 6: De kracht van drone
We vonden het ook nodig om een "droning"-frequentie aan onze patch toe te voegen. Hoewel dit had kunnen worden bereikt met een cyclusobject om een eenvoudige oscillator te maken, zou het niet erg adaptief zijn geweest voor volume- of frequentieveranderingen in de originele audio. Daarom hebben we een svf~-filter gebruikt om een ultraresonant audiopad te creëren. Door audio in een svf~-filter te laten lopen en resonantie in te stellen op 1, creëren we een dreunfrequentie die in en uit beweegt zoals ons audiopad dat doet, en die vervolgens kan worden aangepast voor luidheid, toon en frequentie. Door de bijgevoegde draaiknop aan te passen, wordt de dreunfrequentie aangepast.
Stap 7: Betreed de Bizarre: Ring Modulation
Nu gaan we verder door ringmodulatie toe te voegen! Dit leuke en coole effect is extreem eenvoudig te maken en wordt erg verkeerd begrepen omdat het… een beetje funky klinkt. Dit wordt bereikt door een draaiknop te bevestigen aan een *~-object in de rechterinlaat en in de linkerinlaat onze draaiknop te bevestigen. We gingen nog een stap verder - wanneer onze ringmodulator helemaal naar beneden is, sluit een poort zijn nummersignaal af, en dus wordt het ringmod-signaal volledig afgesneden. Bovendien kan het ook worden omgeschakeld naar uitvoer naar een ander * object, waardoor de frequentie met een bepaalde hoeveelheid wordt verlaagd. Op deze manier kunnen we een "fijne", tremolo-type ringmod hebben en een snellere, vreemd klinkende ringmodulatie. Net als de andere effecten werd dit uitgevoerd in een gain-schuifregelaar en een svf~-filter.
Stap 8: Vertraging en signaalverslechtering… Degrad… Deg… D…
Hier creëren we een vertraging met tijdregeling, een feedback-draaiknop, een toonknop en monsterverslechtering. Hierdoor kunnen we een analoge vertraging nabootsen door het signaal geleidelijk stiller en meer vervormd te maken. Hiervoor gebruiken we verbonden tapin~- en tapout~-objecten. We schrijven 5000 na tapin~ om er zeker van te zijn dat het 5000ms geheugen heeft. Door een degrade~-object toe te voegen, kunnen we het signaal geleidelijk vernietigen. Vervolgens voeren we audio van adc~ naar ons degrade~-object, naar tapin~, naar tapout~ en tegelijkertijd terug naar degrade~ van een *~ en uit *~ naar onze gain-controle. Door dit te doen, kunnen we een draaiknop bevestigen om het volume van de vertraging aan te passen die teruggaat naar zichzelf en om een vertraagd signaal van het *~-object naar onze uitgangen te laten komen. Bovendien stelt het plaatsen van het degradatieobject vóór tapin~ ons in staat om steeds meer monsterreductie toe te voegen naarmate het signaal wordt vertraagd. Bekijk onze afbeelding en code voor een duidelijk beeld van hoe dit allemaal is gedaan.
Stap 9: Belton Brick-stijl reverb
Een belton brick reverb verwijst naar een reverb die is uitgerust met een Accu-Bell BTDR Digi-log-chip, ontworpen door Brian Neunaber van Neunaber Effects. Deze chip zorgt voor eenvoudige spring reverbs met behulp van trapsgewijze vertragingslijnen. Om dit na te bootsen, hebben we nog een vertraging gecodeerd, met één draaiknop om de tijd en feedback aan te passen. De tijd zal nooit 100 ms overschrijden en de feedback is beperkt tot 80%. Deze simpele delay geeft een makkelijk spring reverb geluid! Nog een keer naar een gain- en toonregeling.
Stap 10: Willekeurige stereo tremolo
Ons laatste signaaleffect! Hier hebben we dezelfde code gemaakt die eerder voor de ringmodulator werd gebruikt, met een paar wendingen: de diepte van de tremolo is willekeurig en er is een tremolo voor het linker- en rechterkanaal. Bovendien hebben we dit apparaat in serie gezet, zodat alle effecten er nu voor komen, dus elk signaal wordt bewerkstelligd door de tremolo's.
Om dit te doen, bootsen we de ringmod-code van eerder na, met enkele wijzigingen: het signaal loopt nu in twee poorten die openen wanneer de andere gesloten is. Hierdoor kan het signaal worden beïnvloed of niet worden beïnvloed, in plaats van alleen beïnvloed of uitgeschakeld. Dit is gedaan met het !- object. Onze wijzerplaat loopt tegen een rand~-object aan, dan *~ en een +~, en omlaag naar een andere *~ in de rechteringang en de audio in de linker. Hier hebben we een gerandomiseerde tremolo die aangaat als de wijzerplaat omhoog staat en omlaag als hij uit is!
Dit heeft geen versterkingsregeling of toonregeling nodig, dus het gaat gewoon rechtstreeks naar het dac~-object.
Stap 11: Oscilloscoop
Ten slotte voegen we een scope~-object toe dat is aangesloten op de audio-uitgang van de masterversterkingsregeling. We hebben ook een draaiknop toegevoegd om de gevoeligheid aan te passen!
Stap 12: Presentatie van de signaalverwerkingsmodule
We sluiten deze sectie af door onze code wat flair te geven in de presentatiemodus. Voeg gewoon individuele wijzerplaten en opmerkingen toe aan de presentatiemodus en u bent klaar om te gaan! We hebben de onze wat extra flair gegeven met gekleurde vakken en verschillende lettertype- en kunstzinnige ontwerpbeslissingen. Bovendien was het ontwerp gebaseerd op ontwerpen van gitaarpedaal: wijzerplaten in gelabelde rijen en secties om het signaalpad eenvoudig te begrijpen te maken. Veel plezier met dit onderdeel!
Stap 13: Sectie 2: de akkoordgenerator
We hebben nu een volledig functionerende signaalprocessor in Max, we hebben alleen wat audio nodig om het in te voeren. Door Soundflower te gebruiken, kunnen we al het geluid dat wordt uitgevoerd door de signaalprocessor leiden, zolang de bron maar uw computer is!
Om onze eigen ambient-loops te maken, moeten we echter nog een Max-patch maken. Dankzij de kracht van MIDI zal de voltooide patch effectief dienen als een nieuwe MIDI-controller voor je DAW, waarbij er rechtstreeks noten naar worden verzonden, zodat je elk instrument naar keuze of ontwerp kunt gebruiken! In tegenstelling tot een externe MIDI-controller, kunnen we met de kracht van max een MIDI-controller maken die helemaal alleen kan spelen, zodat je hem gemakkelijk kunt moduleren met de signaalprocessor.
Voor het genereren van unieke noten zullen we een arpeggiator gebruiken om drieklanken te genereren, en later zullen we kijken hoe we een algoritme kunnen samenstellen waarmee de arpeggiator tussen akkoorden kan springen.
Stap 14: Notities laten invoeren in de arpeggiator
Voordat we een arpeggiator in elkaar kunnen zetten, moeten we de akkoorden kunnen genereren om de volgorde door te laten komen. In MIDI komt elke noot op het toetsenbord overeen met een nummer, waarbij de middelste C 60 is. Gelukkig zijn de nummers opeenvolgend, dus door wat muziektheorie toe te passen, kunnen we de juiste intervallen genereren die overeenkomen met verschillende toonsoorten.
De toonsoorten die u gebruikt, zijn aan u, maar u kunt ook de vier door ons geselecteerde toonsoorten volgen. Later zullen we dit deel van de code toevoegen zodat het zelfstandig door de toonsoorten kan bladeren, dus hebben we majeur, mineur, majeur septiem en mineur septiem gekozen om de tonaliteit te behouden terwijl het programma door akkoorden bladert.
Verwijzend naar de eerste afbeelding, is het grootste deel van deze sectie slechts de wiskunde die overeenkomt met de intervallen van deze toetsen. Beginnend met het meest linkse vak met het label '60', dat is de root. Telkens wanneer de wortel verandert, veranderen de intervallen dienovereenkomstig op basis van de huidige sleutel. Als bijvoorbeeld de majeurtoonsoort is geselecteerd, zijn de corresponderende intervallen 4 en 7. Die lopen dan door de +0-vakken, die dat interval aan de grondtoon toevoegen en je de 3 noten geven om een majeurakkoord te maken, van elke wortel!
Stap 15: Arpeggiatie van die akkoorden
Raadpleeg de bovenstaande foto voor de code voor de Arpeggiator. Met het tegenobject en de bijgevoegde 0, 1 en 2 objectboxen kun je de richting van de arpeggiator van Up, Down en UpDown regelen.
Zoals hierboven getoond, wordt de intervalgenerator die we zojuist hebben samengesteld naar de 'int'-boxen geleid, dus als de teller- en selectieboxen lopen, gaat deze door het akkoord van het andere stuk code. Dit loopt dan door de 'makenote' en 'noteout' box om deze MIDI-nummers eindelijk in geluid om te zetten!
Let op het object 'port "from Max 1"' dat is aangesloten op de 'noteout'-box, want hiermee kun je de MIDI-informatie van Max naar je DAW sturen.
Het 'metro'-object bepaalt hoeveel tijd er tussen elk interval zit in milliseconden. Ik heb het standaard ingesteld op 500 ms, en als je de bijgevoegde code volgt, kun je met behulp van de schuifregelaar aanpassen hoeveel milliseconden er tussen elk interval zitten
Stap 16: De 'Key Jumbler'
Hierboven afgebeeld is het stukje code waarmee het programma automatisch door de toonsoorten kan bladeren, zodat u spontane akkoorden kunt creëren terwijl u verschillende grondtonen selecteert.
Het 'select'-object werkt op dezelfde manier als dat in de arpeggiator-sectie, maar in plaats van een specifieke reeks, gebruiken we het 'urn'-vak om willekeurig door de toetsen te bladeren. Wat het vak 'urnen' anders maakt dan 'willekeurig', is dat het een nummer niet herhaalt totdat het door het hele bereik is gegaan, wat ons op zijn beurt een gelijkmatige verdeling van sprongen tussen verschillende toetsen geeft.
Stap 17: de magie laten gebeuren met autonome notitiegeneratie
Dit stuk code zorgt ervoor dat deze patch autonoom kan worden uitgevoerd. Als we vanaf het begin van deze sectie terugverwijzen naar de akkoordgenerator, zal het veranderen van de grondtoon automatisch de volgende intervallen invullen, zodat we die kunnen gebruiken om unieke akkoordprogressies te genereren!
Het belangrijkste item hier is de 'itable', of het grote vierkant met de kleine blauwe rechthoeken erin. Door dit aan de metro-parameter van de arpeggiator te koppelen (de box is ingesteld op 500), kunnen we het exacte punt in de arpeggiator-sequentie regelen waar het akkoord verandert. Aangezien de Arpeggiator in sets van 3 draait, is de grootte van de itable ingesteld op 12, om 4 cycli te vertegenwoordigen, en het bereik is ingesteld op 2, waarbij 2 als 'nee' en 1 als 'ja' dienen voor het al dan niet om het akkoord niet te veranderen. Met de reeks in de hoofdcode, zou de arpeggiator één tot en met één drieklank vormen, dan zou een nieuw akkoord worden gegenereerd en het zou door die drieklank lopen, enzovoort.
De 'willekeurige' vakjes bepalen hoe ver de nieuwe grondtoon verwijderd is van het origineel, momenteel heb ik hem zo geconfigureerd dat hij een half octaaf omhoog of omlaag kan gaan.
In de volledige afbeelding van de code, links gezien, is het 67-nummervak aan de onderkant bevestigd aan het wortelnummervak van de akkoordgenerator, dus welk nummer dan ook wordt gegenereerd uit de itable en het bijgevoegde algoritme gaat naar het akkoord generator, en dan naar de arpeggiator waar het het nieuw geselecteerde akkoord zal spelen. Het 67-nummervak erboven dat in het '+0'-vak loopt, is bevestigd aan het hierboven afgebeelde piano-object, dat ook is bevestigd aan het grondtoonnummervak van de akkoordgenerator. Dit is zo dat wanneer het algoritme van dit stuk code een nummer genereert, het ook op de piano wordt geselecteerd, zodat het die noot zal activeren om te spelen.
In de uiteindelijke code komt deze sectie twee keer voor, met als enige verschil de itable. Raadpleeg de apart bijgevoegde itable voor hoe u het zo kunt maken dat een nieuw akkoord wordt gegenereerd nadat de arpeggiator een reeks 4 keer heeft herhaald.
Stap 18: finishing touch
Je zou nu een volledig werkende zelfspelende arpeggiator moeten hebben! Als u echter wat meer controle wilt toevoegen, kunt u met het hierboven afgebeelde stukje code de duur van de gespeelde noten regelen, zodat u langgerekte noten kunt krijgen die perfect zijn voor een langzame, dreunende, ambient loop.
Er is ook een 'stop'-object bijgevoegd, wat vooral handig is als je Max door een DAW laat lopen. In het geval dat Max problemen begint te krijgen met het communiceren van de MIDI-gegevens, kunt u deze overschrijven en stoppen zonder Max of uw DAW volledig af te sluiten.
Stap 19: Alles inpakken
Het programma is nu functioneel compleet, u hoeft alleen nog maar alles in de presentatiemodus te organiseren. Er is niet één oplossing voor dit alles, het is volledig afhankelijk van wat je wilt kunnen besturen vanaf een oppervlakteniveau.
Mijn selectie omvat de essentie van alles wat ik gemakkelijk wil kunnen moduleren, zodat je er naar eigen inzicht iets aan kunt toevoegen of weghalen.
Het enige dat u nu nog hoeft te doen, is vertrouwd te raken met deze twee patches en muziek te gaan maken!
Genieten van!
Aanbevolen:
DIY Ambient Wandlampen: 9 Stappen
DIY Ambient Wandlampen: Hallo. Ik ben anonieme garnalen, welkom bij de eerste Instructables-tutorial van dit kanaal. Wil je hier meer van zien, kijk dan hier op mijn Youtube kanaal: https://bit.ly/3hNivF3Now, op naar de tutorial. Deze wandlampen worden aangestuurd door een lon
Larson Loop: 5 stappen
Larson Loop: Dit project wordt de Larson Loop genoemd en is geïnspireerd op een apparaat dat een Larson Scanner wordt genoemd. Het idee is dat je meerdere LED's in een lus hebt waar het licht van de LED's eruitziet alsof het in een lus gaat. Daarnaast wordt een potentiometer gebruikt om
Generator: Fidget Spinner Generator 3 in 1: 3 stappen
Generator: Fidget Spinner Generator 3 in 1: fidget spinner generator 3 in 1 - nu kunt u uw fidget spinner generator configureren (drie keuzes) de micro generator gebruikt 3 neodymium bollen en 3 neodymium schijven (led en kleine spoel ijzer minder)Vind ons OP INSTAGRAM en zie een eenvoudige elektrische
Ambient real-time klok: 4 stappen
Ambient Real Time Clock: AimIk heb deze klok gemaakt omdat ik een adresseerbare ledstrip heb liggen en die wil gebruiken. Toen zag ik dat mijn kamer geen goede klok heeft die bij de muren past. Dus besloot ik een klok te maken die van kleur kan veranderen afhankelijk van de stemming van de gebruiker of
Spraakgestuurde assistent - MAX: 10 stappen
Voice Activated Assistant - MAX: Hey in deze Instructable ga ik het hebben over hoe je een chat-bot MAX kunt maken (heb mezelf genoemd!!!) Met enige implementatie kun je deze chatbot spraakgestuurd maken of met het gebruik van verschillende software die je kan het maken als een stemassistent. ik hier ik