Sie sind auf Seite 1von 9

30/3/2017 MakingAudioPluginsPart1:IntroductionMartinFinke'sBlog

Making Audio Plugins Part 1: Introduction


MAKINGAUDIOPLUGINS

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.

How we will dothis

Thechaseisbetterthanthecatch.
HansPeterGeerdes

Inprogramming,theresultisrewarding,butthejourneyiswherewelearn.Inthistutorialseries,I
wontjustgiveyoulongcodelistingswiththeperfectsolution.Wewillstartwithsomethingthat
worksandimproveitassoonaswefaceproblems.
Thedisadvantageisthatyouwillwritecodethatyoulllaterreplacewithsomethingbetter.Asa
programmer,youreprobablyusedtothat.Thefirstadvantage:Itwontbeasoverwhelmingbecause
wewillapproachthesolutionstepbystepinsteadofjustjumpingthere.Thesecondadvantageis
thatwemightlearnvalueableprogramminglessonsalongtheway.

Thisseriesisntaboutcalculatingcomplexmathbyhand.Itsaboutcreatingawesomesoftwarethat
youcangivetoyourmusicproducerfriendssotheycanmakeafatterbassline.

What you willneed


AMacrunningXcode4orlateroraWindowssystemwithVisualC++2010orlater.Ill
useaMac,butyoucanusealmostallinformationonWindowsaswell.

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

Recommend 1 Share SortbyOldest

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

MartinFinke Mod >JB 3yearsago

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

MartinFinke Mod >ViatSat 3yearsago

HelloMarcos!TheAAXformatissupportedbyWDLOL,butbeawarethatyouhaveto
gothroughsome"developerapplication"processwithAvidtodownloadtheAAXSDK
(whichyou'llneed).Havefunwiththetutorials!:)
Reply Share

ViatSat>MartinFinke3yearsago
Martin,Ihavethesdkavid,butnotaswisetostartdevelopingplugins.
Tutorialsshowedalightontheway!
Reply Share

MartinFinke Mod >ViatSat 3yearsago

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

Subscribe d AddDisqustoyoursiteAddDisqusAdd Privacy

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

Das könnte Ihnen auch gefallen