Professional Documents
Culture Documents
Making Audio Plugins Part 1 - Introduction - Martin Finke's Blog
Making Audio Plugins Part 1 - Introduction - Martin Finke's Blog
Welcome!InthistutorialserieswewillbelearninghowtocreateaudiopluginsthatrunasVST,
VST3,AU,RTAS,AAXorasastandaloneapplication.
Audiopluginsareprogramsthatareloadedintoahostsoftware(suchasAbletonLive,Logicor
REAPER).TheyprocessAudioand/orMIDIdataandcanhaveagraphicaluserinterface.Hereare
threeexamples(UHeZebra,SonalksisFreeGandD16Decimort):
http://www.martinfinke.de/blog/articles/audioplugins001introduction/ 1/9
30/3/2017 MakingAudioPluginsPart1:IntroductionMartinFinke'sBlog
Asyoucansee,theGUIusuallycontainssomecontrols(theknobbeingthemostcommon)that
changehowthepluginprocessesincomingdata.Apluginhaspresets(inthescreenshot
theyrecalledComboandEmulator)thatstoreallknobpositionsandothervalues.
Wellstartwithasimpledistortionplugin.Afterthat,wellcreatethissubtractivesynthesizerplugin
stepbystep:
SpaceBass Demo
WewilluseC++andtheWDLOLlibrary.ItisbasedonCockosWDL(pronouncedwhittle).It
basicallydoesalotofworkforus,mostimportantly:
ReadymadeXcode/VisualStudioProjects
CreateVST,AudioUnit,VST3andRTASformatsfromonecodebase:Justchoosethe
pluginformatandclickrun!
Create32/64Bitexecutables
MakeyourpluginrunasastandaloneWin/Macapplication
MostGUIcontrolsusedinaudioplugins
ItalsogivesyoumostGUIcontrolsusedinaudioplugins,andsomecommonlyusedaudio
algorithmslikeforexampleresampling.Thisforumthreadhasscreenshotsofalotofpluginsthat
weredoneusingWDL.
Thedifferentpluginformatsalldomoreorlessthesame,sonormallytherewouldbealotofcopy&
pasteinyourcode.AsaprogrammeryouwanttostayDRY,sosoonerorlateryoudwritean
http://www.martinfinke.de/blog/articles/audioplugins001introduction/ 2/9
30/3/2017 MakingAudioPluginsPart1:IntroductionMartinFinke'sBlog
abstractionlayeroverthedifferentformats.ThisworkhasalreadybeendoneintheformofIPlug,
whichisapartofWDL.Thesearetheannoyingpartsofaudioplugindevelopment,sowecannow
focusonthefunstuff,suchas:
HowthepluginprocessesincomingAudio/MIDI
Whatthepluginlookslike
Howitintegrateswiththehost(automation,presets,etc.)
AnothergoodthingaboutWDLisitspermissivelicense:Youcanuseitfreelyforcommercial
applications.Seethelinksabovefordetails.
Thechaseisbetterthanthecatch.
HansPeterGeerdes
Inprogramming,theresultisrewarding,butthejourneyiswherewelearn.Inthistutorialseries,I
wontjustgiveyoulongcodelistingswiththeperfectsolution.Wewillstartwithsomethingthat
worksandimproveitassoonaswefaceproblems.
Thedisadvantageisthatyouwillwritecodethatyoulllaterreplacewithsomethingbetter.Asa
programmer,youreprobablyusedtothat.Thefirstadvantage:Itwontbeasoverwhelmingbecause
wewillapproachthesolutionstepbystepinsteadofjustjumpingthere.Thesecondadvantageis
thatwemightlearnvalueableprogramminglessonsalongtheway.
Thisseriesisntaboutcalculatingcomplexmathbyhand.Itsaboutcreatingawesomesoftwarethat
youcangivetoyourmusicproducerfriendssotheycanmakeafatterbassline.
SomeunderstandingofC++(Syntax,Pointers,BasicOOP,Memory).Youmayhave
heardthatC++isveryhard,butwerenotgoingtousetoomuchoftheadvancedstuff.
Someknowledgeabout(digital)audioingeneral:Whatamplitudeandfrequency
means,whatafilterdoes,howaudioisstoredatasamplerateandbitdepth.Ifyouve
recordedorproducedmusicbefore,youareprobablywellset.
InterestforDigitalSignalProcessingandGUIProgramming:Thosewillbethetwo
maintopicsofthisseries.IfyouhavenopriorDSPknowledgeatall,youmayhaveto
http://www.martinfinke.de/blog/articles/audioplugins001introduction/ 3/9
30/3/2017 MakingAudioPluginsPart1:IntroductionMartinFinke'sBlog
readuponafewtopicsatsomepoint.Illtrytoprovidefurtherreadingtypelinks
wheneverthatsthecase.
Helpfulresources
Hereareafewlinksthatmaybehelpfullater:
StackOverflow:Searchforthingslikeobscurecompilerwarningsandfindoutwhat
theymean.
DSPGuide:Verygoodfreebook,coversprobablymorethanwelluse.Refertoitif
somewhereonthewayyoudontunderstandaDSPconcept.
Soundsexciting?Nexttimewellsetupeverythingweneedtogetstarted!
Ifyoufoundthisuseful,pleasefeelfreeto !
Megusta 36
23Comments MartinFinke'sBlog
1 Login
Jointhediscussion
David4yearsago
ThisisDavid,fromItlay!!Iwaslookingforaguidelikeyoursforalongtime!!GREATJOB!!!
Thankyouverymuch!
1 Reply Share
problembarnet3yearsago
Ohman.Thankyouforthesetutorials!!
1 Reply Share
JB3yearsago
Thisisafantasticseriesoftutorials.EveryonesofarhastaughtmeloadsandI'mconstantly
hopingforthenextoneintheseriesandcheckingtheKVRthreadfornewannouncements!
Wouldloveforyoutoexpandonthealiasingmentionedattheendoftheoscillatortutorialwith
examplesofhowtomitigatethis.
Reply Share
Thankyouforthekindwords!I'mgladthesetutorialshavehelpedyou.
http://www.martinfinke.de/blog/articles/audioplugins001introduction/ 4/9
30/3/2017 MakingAudioPluginsPart1:IntroductionMartinFinke'sBlog
Thankyouforthekindwords!I'mgladthesetutorialshavehelpedyou.
You'relucky:Gettingridoftheoscillatoraliasingwillbedoneinthenextpost.It'llbeup
soon:)
Reply Share
ViatSat3yearsago
HiMartin,greetingsfromArgentina(SouthAmerica).
Iamlookingforinformationwhiledevelopingpluginsvst,rtasandaax.
Ihaveaquestion,pluginsdevelopedforthistutorialcanbeincorporatedintoprotoolsand
VENUESC48aaxplugins?.
Thankyouverymuchfortutorial.
Regards.
Marcos
P/D:uploadmoretutorialsplease.
Reply Share
HelloMarcos!TheAAXformatissupportedbyWDLOL,butbeawarethatyouhaveto
gothroughsome"developerapplication"processwithAvidtodownloadtheAAXSDK
(whichyou'llneed).Havefunwiththetutorials!:)
Reply Share
ViatSat>MartinFinke3yearsago
Martin,Ihavethesdkavid,butnotaswisetostartdevelopingplugins.
Tutorialsshowedalightontheway!
Reply Share
Ah,great!You'regoodtogothen!:)
Reply Share
Andrey3yearsago
Incredible!Lookingforwardontrying!
Reply Share
harjal3yearsago
Lotofthanksforthisgreattutorial.
Reply Share
Kasozi3yearsago
Thanksforthetutorials.I'vebeentryingtofindaguideforweeks.
Reply Share
http://www.martinfinke.de/blog/articles/audioplugins001introduction/ 5/9
30/3/2017 MakingAudioPluginsPart1:IntroductionMartinFinke'sBlog
CUZPAINIDSFN2yearsago
HiDavid,Howareyou?
areWAVESorUADuseWDL,orJUCEortheyhavetheirownframework?
Isitenoughtoworkjustwithphotoshop?
i'mwaitingforyouranswer!
Reply Share
MarcusBang>CUZPAINIDSFNayearago
YoudontusePhotoshop,youuseVisualStudio.
Reply Share
CUZPAINIDSFN>MarcusBangayearago
yeahiknow,i'mtalkingabouttheGUI,isitenoughjusttousePS,thankyoufor
yourreply)
Reply Share
Olsyboy2yearsago
Wow,thisisamazing.Isitpossibletohavetheoscillatorshapechangerealtime?Ihaven'tread
thisall,butifyouhavedoneitpleaselinkmetoit!Thankssomuchforthistutorial!!
Reply Share
zensavona2yearsago
Wow,reallycooltutorial.Thanks:)
Reply Share
AustinWu2yearsago
Hey,isMinGWokay?
Reply Share
TonyBeatbutcherayearago
MaxForLiverules!
Reply Share
Clemayearago
Hello,letmesayabigTHANKYOU!forsharingthisknowledgewithus.Thesetutorialsare
fantasticandreallyeasytoread.Congratulationssir!
Reply Share
Lawrenceayearago
Wantedtocheckthingsout,foundthispagebyGoogle.AllIcansayis:THANKSMAN!
Awesometofindallthisgreatstartingdatahere.Thankyou!:D
Reply Share
Michael3monthsago
IloveyoufortheScooterquote!Wicked!
http://www.martinfinke.de/blog/articles/audioplugins001introduction/ 6/9
30/3/2017 MakingAudioPluginsPart1:IntroductionMartinFinke'sBlog
IloveyoufortheScooterquote!Wicked!
Reply Share
FilipSlawinski2monthsago
hitthere,doesitworkwithsdk10.11?imnotsurehowicaninstalthe10.5.I'mgettingalotof
errorswhilerunning10.11andbuildfails.I'mrunningxcode7andsomeerrorsiwashaving:
/Users/filipslawinski/plugindevelopment/wdlol/WDL/lice/lice_image.cpp:69:56:Implicit
conversionlosesintegerprecision:'unsignedlong'to'int'
Cannotinitializeavariableoftype'NSMenuItem*'withanrvalueoftype'NSCollectionViewItem
*_Nullable'
/Users/filipslawinski/plugindevelopment/wdlol/WDL/swell/swellappmain.mm:79:51:Instance
method'delegate'notfound(returntypedefaultsto'id')
/Users/filipslawinski/plugindevelopment/wdl
ol/IPlugExamples/MyFirstPlugin/resources/English.lproj/InfoPlist.strings:Thespecifiedinput
encodingisUnicode(UTF8),butfilecontentsappeartobeUnicode(UTF16)treatingas
Unicode(UTF16).
PLEASEHELP
Reply Share
Eduardoamonthago
Congratsforyourtutorial!Learnedalotreadingthem.IjustcreatedlastyearastandaloneOSX
application,adrummachinebasedon8sampleaudioplayers(complexBrazilianrhythms).I
usedAVAudioPlayerjustbecauseIcouldchangethetempoandsyncthetracks.Myquestionis:
isthereanywayto"transform"thisappinavstplugin?Anylibraryorbridgeorsomethingelse,
becauseit'ssoready...Anyinitialideawouldbesuperwelcome.Thanks!
Reply Share
Index
2015MartinFinkeImpressum
http://www.martinfinke.de/blog/articles/audioplugins001introduction/ 7/9
30/3/2017 MakingAudioPluginsPart1:IntroductionMartinFinke'sBlog
http://www.martinfinke.de/blog/articles/audioplugins001introduction/ 8/9
30/3/2017 MakingAudioPluginsPart1:IntroductionMartinFinke'sBlog
http://www.martinfinke.de/blog/articles/audioplugins001introduction/ 9/9