Audio Plugins maken deel 1: Inleiding
welkom! In deze tutorial serie zullen we leren hoe je audio plugins die draaien als VST, VST3, AU, RTAS, AAX of als een standalone applicatie te maken.
Audio-plugins zijn programma ‘ s die in een hostsoftware worden geladen (zoals Ableton Live, Logic of REAPER). Ze verwerken Audio-en / of MIDI-gegevens en kunnen een grafische gebruikersinterface hebben. Hier zijn drie voorbeelden (u-He Zebra, Sonalksis FreeG en D16 Decimort):
zoals u kunt zien, bevat de GUI meestal een aantal besturingselementen (de knop is de meest voorkomende) die veranderen hoe de plugin inkomende gegevens verwerkt. Een plugin heeft presets (in de screenshot heten ze Combo en Emulator) die alle knop posities en andere waarden op te slaan.
we beginnen met een eenvoudige vervorming plugin. Daarna zullen we stap voor stap deze subtractieve synthesizer plugin aanmaken:
we zullen C++ en de WDL-OL bibliotheek gebruiken. Het is gebaseerd op Cockos WDL (uitgesproken als whittle). Het doet eigenlijk veel werk voor ons, het belangrijkste:
- kant-en-klare Xcode / Visual Studio-Projecten
- maak VST -, AudioUnit -, VST3-en RTAS-formaten uit één codebase: kies gewoon het plugin-formaat en klik op Uitvoeren!
- 32/64-bit uitvoerbare bestanden
- laat uw plugin draaien als een standalone Win / Mac-toepassing
- de meeste GUI-besturingselementen gebruikt in audio-plugins
het geeft u ook de meeste GUI-besturingselementen gebruikt in audio-plugins, en een aantal veelgebruikte audio-algoritmen zoals bijvoorbeeld resampling. Dit forum thread heeft screenshots van een heleboel plugins die werden gedaan met behulp van WDL.
de verschillende plugin formaten doen allemaal min of meer hetzelfde, dus normaal gesproken zou er veel kopie & plakken in uw code. Als programmeur wil je droog blijven, dus vroeg of laat schrijf je een abstractielaag over de verschillende formaten. Dit werk is al gedaan in de vorm van IPlug, een onderdeel van WDL. Dit zijn de vervelende delen van audio plugin ontwikkeling, Dus we kunnen nu richten op de leuke dingen, zoals:
- hoe de plugin inkomende Audio/MIDI verwerkt
- hoe de plugin eruit ziet
- hoe het integreert met de host (automatisering, presets, etc.)
een ander goed ding over WDL is de tolerante licentie: u kunt het vrij gebruiken voor commerciële toepassingen. Zie de links hierboven voor details.
Hoe gaan we dit doen
de achtervolging is beter dan de vangst.
bij programmeren is het resultaat lonend, maar de reis is waar we leren. In deze tutorial serie, Ik zal niet alleen geven u lange codelijsten met de perfecte oplossing. We beginnen met iets dat werkt en verbeteren het zodra we problemen ondervinden.
het nadeel is dat je code schrijft die je later zal vervangen door iets beters. Als programmeur ben je dat waarschijnlijk gewend. Het eerste voordeel: het zal niet zo overweldigend zijn omdat we de oplossing stap voor stap zullen benaderen in plaats van er gewoon te springen. Het tweede voordeel is dat we onderweg waardevolle programmeerlessen kunnen leren.
deze serie gaat niet over het berekenen van complexe wiskunde met de hand. Het gaat over het creëren van geweldige software die u kunt geven aan uw muziek producer vrienden, zodat ze een dikkere baslijn kunnen maken.
wat hebt u nodig
- een Mac met Xcode 4 of hoger of een Windows-systeem met Visual C++ 2010 of hoger. Ik zal een Mac gebruiken, maar je kunt bijna alle informatie op Windows ook gebruiken.
- enig begrip van C++ (syntaxis, Pointers, Basic OOP, geheugen). Je hebt misschien gehoord dat C++ erg moeilijk is, maar we gaan niet te veel van de geavanceerde dingen gebruiken.
- enige kennis over (digitale) audio in het algemeen: Wat amplitude en frequentie betekent, wat een filter doet, hoe audio wordt opgeslagen met een samplesnelheid en bitdiepte. Als je eerder muziek hebt opgenomen of geproduceerd, ben je waarschijnlijk goed ingesteld.
- belangstelling voor digitale signaalverwerking en GUI-programmering: dat zijn de twee hoofdthema ‘ s van deze serie. Als u geen voorafgaande DSP kennis op alle, Je kan hebben om te lezen over een paar onderwerpen op een bepaald punt. Ik zal proberen om verder te lezen type koppelingen bieden wanneer dat het geval is.
nuttige bronnen
hier zijn een paar links die later nuttig kunnen zijn:
- Stack Overflow: zoek naar dingen zoals obscure compilerwaarschuwingen en ontdek wat ze betekenen.
- DSP Guide: Zeer goed gratis boek, dekt waarschijnlijk meer dan we zullen gebruiken. Refereer ernaar als je ergens onderweg een DSP concept niet begrijpt.
klinkt spannend? De volgende keer zetten we alles op wat we nodig hebben om te beginnen!