+ All Categories
Home > Documents > Firelight Technologies FMOD Studio API · FMOD Studio is an audio content creation tool for games,...

Firelight Technologies FMOD Studio API · FMOD Studio is an audio content creation tool for games,...

Date post: 03-Mar-2020
Category:
Upload: others
View: 11 times
Download: 0 times
Share this document with a friend
5385
Firelight Technologies FMOD Studio API
Transcript
  • FirelightTechnologiesFMODStudioAPI

  • Introduction

    FMODStudioisanaudiocontentcreationtoolforgames,withafocusonaProAudioapproach.IthasaninterfacethatwillbefamiliartothoseusingprofessionalDigitalAudioWorkstationsandisloadedwithpowerfulfeatures.

    TheprogrammerAPIforFMODStudiocomesin2flavours.TheFMODStudioAPI,andtheFMODStudioLowLevelAPI.TheFMODStudioAPIistheprogrammerinterfacetoloadFMODStudiobanksandtriggereventsauthoredbythesounddesigner.TheFMODStudioLowLevelAPIistheprogrammerinterfacethatdoesntrequireanytools,andisjustfortriggeringsimplesounds.

    ForanoverviewoftheLowLevelAPIfeatureset,readthe"LowLevelAPI-AnOverview".

  • What'sNew

    TheWhat'sNewIn1.10pagehighlightsthenewfeaturesofStudioAPIforthisrelease.

  • PlatformSpecificStarterGuide

    ThePlatformSpecificStarterGuidehasbasicplatforminformationtohelpgettingstarted.

  • Support

    FindoutmoreinformationatourQuestionsandAnswersdatabase,[email protected].

    http://www.fmod.org/questionsmailto:[email protected]

  • FirelightTechnologiesFMODStudioAPI

  • FMODLowLevelAPI-AnOverviewTableofContents

    WhattheLowLevelAPIis

    APIFeatures

    Initialization-Simplestartupwithnoconfigurationnecessary

    Audiodevices-Automaticdetectionofdeviceinsertion/removal(Windowsonly)

    Audiodevices-supportforplugins

    Fileformats-Supportforover20audioformatsbuiltin

    Fileformats-Supportforthemostoptimalformatforgames(FSB)

    Fileformats-Supportforplugins

    Justplayasimplesound-createSoundandplaySound

    Highquality/efficientstreamingandcompressedsamples

    Streaming

    Internetstreaming

    Streamingsettings

    Compressedsampleplayback

    Decompressedsamples

    Voices/Channels-'VirtualVoices'-playthousandsofsoundsatonce

    Voices/Grouping-'ChannelGroups'andhierarchicalsub-mixing(buses)

  • 3Dsoundandspatialization

    3Dpolygonbasedgeometryocclusion

    Recording-Recordtoasoundfrommicrophoneorlinein

    DSPEffects-Supportforover30specialeffectsbuiltin

    DSPEffects-Reverbtypesand3Dreverbzones

    StandardReverb

    ConvolutionReverb

    Virtual3DReverbSystem

    DSPEffects-Supportforplugins

    DSPEngine-Flexible,programmablesoft-syntharchitecture

    Nonblockingloads,threadsandthreadsafety

    Performance

    Configuration-memoryandfilesystems

  • WhattheLowLevelAPIis

    TheFMODLowLevelAPIisaprogrammerAPIthatisintendedtocoverthebasics/primitivesofsound.Thisincludesconceptssuchas'Channels','Sounds','DSP','ChannelGroups','SoundGroups','Recording'andconceptsfor3DSoundandocclusion.

    Itisstandaloneanddoesnotrequireanysounddesignertoolstointerfacewith.Thefeaturesareallimplementedbytheprogrammerincode.

  • APIFeatures

    ThissectionwillgiveabroadoverviewofFMODLowLevelAPIfeatures.

    Initialization-Simplestartupwithnoconfigurationnecessary

    FMODLowLevelAPIhasanautomaticconfigurationfeature,whichmakesitsimpletostart.

    Atthemostbasiclevel,creatingtheSystemobjectandcallingSystem::initonit.Thisisallthatisneeded.AmoredetaileddescriptionofinitializationcanbefoundintheFMODLowLevelAPIGettingStartedTutorial.

    Thesoundcardcanbemanuallyselected,usingtheSystem::setDriverfunction.Moresettingscanbeconfigured,suchasthemixingrateoftheFMODsystem,theresamplingmethod,orthespeakermodewithSystem::setSoftwareFormat.Whenmodifyingthemixersettings,thisonlyadjuststheinternalmixingformat.Attheend,theaudiostreamisalwaysconvertedtothesettingsthataresetbytheuser(iethesettingsinthecontrolpanelinWindows,orthestandard7.1/48khzoutputmodeonXboxOneorPS4).

    Audiodevices-Automaticdetectionofdeviceinsertion/removal(Windowsonly)

    FMODLowLevelAPIhasautomaticsoundcarddetectionandrecoveryduringplayback.Ifanewdeviceisinsertedafterinitialization,FMODwillseamlesslyjumptoit,assumingitisthehigherprioritydevice.AnexampleofthiswouldbeaUSBheadsetbeingpluggedin.

    Ifthedevicethatisbeingplayedonisremoved(suchasaUSBaudiodevice),itwillautomaticallyjumptothedeviceconsiderednextmostimportant(ieonWindows,itwouldbethenew'default'device).

    Ifadeviceisinserted,thenremoved,itwilljumptothedeviceitwasoriginallyplayingon.

    Theprogrammercanoverridethesoundcarddetectionbehavior,withacustom

  • callback.ThisistheFMOD_SYSTEM_CALLBACK_DEVICELISTCHANGEDcallback.

    Audiodevices-supportforplugins

    FMODLowLevelAPIhassupportforusercreatedoutputplugins.AdevelopercancreateaplugintotakeFMODaudiooutputtoacustomtarget.Thiscouldbeahardwaredevice,oranonstandardfile/memory/networkbasedsystem.

    Anoutputmodecanruninreal-time,ornonreal-timewhichallowsthedevelopertorunFMOD'smixer/streamer/systematfasterorslowerthanreal-timerates.

    SeeSystem::registerOutputdocumentationformore.

    Pluginscanbecreatedinlinewiththeapplication,orcompiledasastand-alonedynamiclibrary(ie.dllor.so)

    Fileformats-Supportforover20audioformatsbuiltin

    FMODLowLevelAPIhasnative/builtincodetosupportmanyfileformatsoutofthebox.WAV,MP3andOggVorbisaresupportedbydefault,butmanymoreobscureformatslikeAIFF,FLACandothers.Sequencedformatsthatareplayedbackinrealtimewitharealtimesequencer,areincluded.MIDI/MOD/S3M/XM/ITareexamplesofthese.

    AmorecomprehensivelistcanbefoundintheFMOD_SOUND_TYPElist.

    Fileformats-Supportforthemostoptimalformatforgames(FSB)

    FMODalsosupportsanoptimalformatforgames,calledFSB(FMODSoundBank).

    Manysoundfileformatsarenotwellsuitedtogames.Theyarenotefficient,andcanleadtolotsofrandomfileaccess,largememoryoverhead,andslowloadtimes.

    FSBformatbenefitsare:

  • No-seekloading.FSBloadingcanbe3continuousfilereads.1.Mainheaderread.2.Sub-soundmetadata.3.Rawaudiodata.

    'Memorypoint'feature.AnFSBcanbeloadedintomemorybytheuser,andsimply'pointedto'sothatFMODusesthememorywhereitis,anddoesnotallocateextramemory.SeeFMOD_OPENMEMORY_POINT.

    Lowmemoryoverhead.Alotoffileformatscontain'fluff'suchastags,andmetadata.FSBstoresinformationincompressed,bitpackedformatsforefficiency.

    Multiplesoundsin1file.Thousandsofsoundscanbestoredinside1file,andselectedbytheAPIfunctionSound::getSubSound.

    EfficientOggVorbis.FSBstripsoutthe'Ogg'andkeepsthe'Vorbis'.1codebookcanbesharedbetweenallsounds,savingmegabytesofmemory(comparedtoloading.oggfilesindividually).

    FADPCMcodecsupport.FMODsupportsaveryefficient,ADPCMvariantcalledFADPCMwhichismanytimesfasterthanastandardADPCMdecoder(nobranching),andisthereforeveryefficientonmobiledevices.ThequalityisalsofarsuperiorthanmostADPCMvariants,andlacksthe'hiss'notableinthoseformats.

    Fileformats-Supportforplugins

    FMODLowLevelAPIhassupportforusercreatedfileformatplugins.AdevelopercancreatecallbacksforFMODtocallwhenSystem::createSoundorSystem::createStreamisexecutedbytheuser,orwhenthedecodingengineisaskingfordata.

    Pluginscanbecreatedinlinewiththeapplication,orcompiledasastand-alonedynamiclibrary(ie.dllor.so)

    SeetheSystem::registerCodecdocumentationformore.

    Justplayasimplesound-createSoundandplaySound

    Thesimplestwaytogetstarted,andbasicfunctionalityofFMODLowLevel

  • API-istoinitializetheFMODsystem,loadasound,andplayit.That'sit!

    RefertotheGettingStartedtutorialonhowtoinitializeandload/playasoundwiththeFMODLowLevelAPI.

    Lookattheplaysoundexampletorefertosamplecodeforthesimpleplaybackofasoundfile.

    Highquality/efficientstreamingandcompressedsamples

    FMODLowLevelAPIbenefitsfromover15yearsofuse,inmillionsofenduserdevices,causingtheevolutionofahighlystableandlowlatencymixing/streamingengine.

    Streaming

    Streamingistheabilitytotakealargefile,andread/playitinrealtimeinsmallchunksatatime,avoidingtheneedtoloadtheentirefileintomemory.Thisistypicallyreservedfor

    Music

    Voiceover/dialogue

    Longambiencetracks

    Theusercansimplyplayasoundasa'stream'byaddingtheFMOD_CREATESTREAMflagtotheSystem::createSoundfunction,orusingtheSystem::createStreamfunction.The2optionsequatetothesameendbehavior.

    Internetstreaming

    FMODstreamingsupportsinternetaddresses.SupplyinghttporhttpsinthefilenamewillswitchFMODtostreamingusingnativehttp,shoutcastoricecast.

    Playlistfiles(suchasASX/PLS/M3U/WAXformats)aresupported,includingredirection.

    Proxyspecificationandauthenticationaresupported,aswellasreal-time

  • shoutcaststreamswitching,metadataretrievalandpacketlossnotification.

    Streamingsettings

    Streamingbehaviorcanbeadjustedinseveralways.Asstreamingafiletakes2threads,oneforfilereading,andoneforcodecdecoding/decompression.FilebuffersizescanbeadjustedwithSystem::setStreamBufferSizeandcodecdecodingbuffersizecanbeadjustedwithFMOD_CREATESOUNDEXINFOdecodeBufferSizemember,orFMOD_ADVANCEDSETTINGSdefaultDecodeBufferSizemember.

    Compressedsampleplayback

    Forshortersounds,ratherthandecompressingthesoundintomemory,theusermaywishtoplaythesoundinmemory,asis.

    Thisismoreefficientthanastream,asitdoesnotrequirediskaccess,orextrathreadstoreadordecode.Astreamhasalimitof1soundatatime,butacompressedsampledoesnot.Itcanbeplayedmultipletimessimultaneously.

    IfaplatformsupportsahardwareformatlikeAT9onPS4,orXMAonXboxOne,thenitisthebestsolutiontousethesecodecs,asthedecodingofthedataishandledbyseparatemediachips,takingthemajorityoftheprocessingofftheCPU.

    RefertotheGettingStartedtutorialonhowtousetheFMOD_CREATECOMPRESSEDSAMPLEflagandconfigurationofcodecmemory.

    Decompressedsamples

    LoadingasoundwithSystem::createSoundwillbydefault,causeasoundtobedecompressedintomemory,andplayedbackasPCMformat.

    PCMdataisjustrawuncompressedsounddata,formoreinformationgototheTerminology/BasicConceptstutorial.

    Decompressed/uncompressedsamplesuseslittletonoCPUtimetoprocess.PCMdataisthesameformatthattheFMODmixingengineuses,andthesounddeviceitself.Thismaybedesirable,ifyouhaveenoughmemory,onamobile

  • devicewithlimitedCPUcycles.

    DecompressedPCMdatausesalotmorememorythanVorbisencodedFSBforexample.Itcouldbeupto10xmore.

    Atypicalusecaseformobiledevelopers:Compressthesoundheavilyfordistribution(toreducethedownloadsize),thendecompressitatstart-up/loadtime,tosaveCPUtime,ratherthanplayingitcompressed.

    Voices/Channels-'VirtualVoices'-playthousandsofsoundsatonce

    FMODLowLevelincludesa'virtualvoicesystem'.Itallowsthedevelopertoplayhundredsoreventhousandsofsoundsatonce,butonlyhaveasmallnumberactuallyproducingsound.Theremainderare'virtual'oremulatedwithasimplepositionupdate,andarenotheard,anddon'tconsumeCPUtime.

    Asanexample:adungeonmayhave200torchesburningonthewallinvariousplacesbutonlytheloudesttorcheswillbereallyaudible.FMODwilldynamicallymakevoices'virtual'or'real'dependingonrealtimeaudibilitycalculations(basedondistance/volume/priority/occlusion).

    Asoundwhichisplayingfaraway,orwithalowvolumewillbecomevirtual,andwillchangetoarealvoicewhenitcomescloser,orbecomeslouderduetoChannelorChannelGroupAPIcalls.

    ReadmoreaboutthevirtualvoicesystemontheVirtualVoicetutorial.

    Voices/Grouping-'ChannelGroups'andhierarchicalsub-mixing(buses)

    Groupingvoicessothattheycanhaveasingleeffectonthem,canbeachievedwithwhatistypicallycalleda'bus'ora'submix'.InFMODLowLevel,channelsaregroupedinto'ChannelGroups',whicharethesameasabusorsubmix.

    AneffectcanbeaddedtoaChannelGroup,anditwillonlyprocessasub-mixedresultofmultiplechannels,ratherthanprocessingeverychannel.Thisreduces

  • CPUusagegreatly.

    ThevolumeofaChannelGroupcanbealtered,whichallowsformastervolumegroups.ThevolumeisscaledbasedonafaderDSPinsideaChannelGroup.AllChannelsandChannelGroupshaveafaderDSPbydefault.

    ChannelGroupsarehierarchical.ChannelGroupscancontainChannelGroups,whichcancontainotherChannelGroupsandChannels.

    ManyattributescanbeappliedtoaChannelGroup,includingthingslikespeakermix,and3Dposition.AwholegroupofChannels,andtheChannelGroupsbelowthem,canbepositionedin3Dwith1call,ratherthantryingtopositionallofthemindividually.

    'MasterVolume','SFXVolume'and'MusicVolume'aretypicalsettingsinagame.Settingupan'SFX'ChannelGroup,anda'Music'ChannelGroup,andhavingthemchildrenofthemasterchannelgroup(seeSystem::getMasterChannelGroup)

    3Dsoundandspatialization

    FMODLowLevelAPIhassupportforavarietyoffeaturesthatallowsoundstobeplacedin3Dspace,sothattheymovearoundthelisteneraspartofanenvironment,bypanning,pitchshiftingwithdoppler,andattenuatingwithvolumescalingorevenspecialfiltering.

    FMOD3Dspatializationfeatures:

    1. Multipleattenuationrolloffmodels.Rolloffisthebehaviorofthevolumeofthesoundasthesoundgetsclosertothelistenerorfurtheraway.Choosebetweenlinear,inverse,linearsquare,inversetaperedandcustomrolloffmodes.CustomrolloffallowsaFMOD_3D_ROLLOFF_CALLBACKtobesettoallowtheusertocalculatehowthevolumerolloffhappens.Ifacallbackisnotconvenient,FMODalsoallowsanarrayofpointsthatarelinearlyinterpolatedbetween,todenotea'curve',usingChannelControl::set3DCustomRolloff.

    2. Dopplerpitchshifting.Accuratepitchshifting,controlledbytheuservelocitysettingofthelistenerandthechannelorchannelgroup,is

  • calculatedandsetontheflybytheFMOD3Dspatializationsystem.

    3. VectorBasedAmplitudePanning(VBAP).Thissystempansthesoundsintheuser'sspeakersinrealtime,supportingmono,stereo,upto5.1and7.1surroundspeakersetups.

    4. Occlusion.ChannelsorChannelGroupscanhavelowpassfilteringappliedtothemtosimulatesoundsgoingthroughwallsorbeingmuffledbylargeobjects.

    5. 3DReverbZonesforreverbpanning.Seemoreaboutthisinthe3DReverbsection.Reverbcanalsobeoccludedtonotgothroughwallsorobjects.

    6. Polygonbasedgeometryocclusion.AddpolygondatatoFMOD'sgeometryengine,andFMODwillautomaticallyoccludesoundsinrealtimeusingraycasting.Seemoreaboutthisinthe3DPolygonbasedgeometrysection.

    7. Multiplelisteners.Inasplitscreenmodegame,FMODcansupportalistenerforeachplayer,sothatthe3Dsoundsattenuatecorrectly.

    8. Morphingbetween2Dand3Dwithmultichannelsounds.Soundscanbeapointsource,orbemorphedbytheuserintoa2Dsound,whichisgreatfordistancebasedenvelopment.Thecloserasoundis,themoreitcanspreadintotheotherspeakers,ratherthanflippingfromonesidetotheotherasitpansfromonesidetotheother.SeeChannel::set3DLevelorChannelGroup::set3DLevelforthefunctionthatletstheuserchangethismix.

    9. Stereoandmultichannelsoundscanbe3D.Typicallyamonosoundisusedfor3Daudio.Multi-channelsoundscanbeusedtogiveextraimpact.Bydefaultamultichannelsoundiscollapsedintoamonopointsource.To'spread'thechannelsofthemultichannelsound,useChannel::set3DSpreadorChannelGroup::set3DSpread.Thiscangiveamoreamorespatialeffectforasoundthatiscomingfromacertaindirection.Asubtlespreadofsoundinthedistancemaygivestheimpressionofbeingmoreeffectivelyspatializedasifitwerereflectingoffnearbysurfaces,orbeing'big'andemittingdifferentpartsofthesoundindifferentdirections.

    10. Spatializationpluginsupport.3rdpartyVRaudiopluginscanbeusedtogivemorerealisticpanningoverheadphones.

  • Toloadasoundas3DsimplyaddtheFMOD_3DflagtotheSystem::createSoundfunction,ortheSystem::createStreamfunction.

    Thenext3importantthingstodoare:

    1. Setthe'listener'position,orientationandvelocityonceperframewithSystem::set3DListenerAttributes.

    2. SettheChannel3DattributesforhandlethatwasreturnedfromSystem::playSound,withChannel::set3DAttributes.If3Dpositioningofagroupofchannels,oraChannelGroupisrequired,settheChannelGrouptobe3DoncewithChannelGroup::setMode,thencallChannelGroup::set3DAttributesinstead.

    3. CallSystem::updateonceperframesothe3Dcalculationscanupdatebasedonthepositionsandotherattributes.

    Readmoreabout3Dsoundinthe3DSoundtutorialortheSpatialAudiotutorial.

    3Dpolygonbasedgeometryocclusion

    FMODLowLevelAPIsupportsthesupplyofpolygonmeshdata,thatcanbeprocessedinrealtimetocreatetheeffectofocclusioninareal3Dworld.Inrealworldterms,theusercanstopsoundstravellingthroughwalls,orevenconfinereverbinsideageometricvolumesothatitdoesn'tleakoutintootherareas.

    Geometrycanbeusedtoobstruct,occludeandexcludedry/reverbsignals(yellow=direct,green=reverb)

    TousetheFMODGeometryEngine,createameshobjectwithSystem::createGeometry.ThenaddpolygonstoeachmeshwithGeometry::addPolygon.Eachobjectcanbetranslated,rotatedandscaledtofityourenvironment.

    Recording-Recordtoasoundfrommicrophoneorlinein

  • FMODLowLevelAPIhastheabilitytorecorddirectlyfromaninputintoanFMODsoundobject.

    Thissoundcanthenbeplayedbackafterithasbeenrecorded,ortherawdatacanberetrievedwithSound::lockandSound::unlockfunctions.

    Thesoundcanalsobeplayedwhileitisrecording,toallowrealtimeeffects.Asimpletechniquetoachievethisistostartrecording,thenwaitasmallamountoftime,like50ms,thenplaythesound.Thiswillkeeptheplaycursorjustbehindtherecordcursor.Seetherecordexampleforsourceandinformationonhowtodothis.

    DSPEffects-Supportforover30specialeffectsbuiltin

    FMODLowLevelAPIhasnative/builtincodetosupportmanyspecialeffectsoutofthebox,suchaslow-pass,compressor,reverbandparametricEQ.AmorecomprehensivelistcanbefoundintheFMOD_DSP_TYPElist.

    AneffectcanbecreatedwithSystem::createDSPByTypeandaddedtoaChannelwithChannel::addDSPoraChannelGroupwithChannelGroup::addDSP.

    DSPEffects-Reverbtypesand3Dreverbzones

    FMODLowLevelAPIhas2typesofphysicalreverbavailable,andavirtual3dreverbsystemwhichcanbeusedtosimulatehundredsofenvironmentsormore,withonly1physicalreverb.

    StandardReverb

    Abuiltin,highqualityI3DL2standardcompliantreverb,whichisusedforafast,configurableenvironmentsimulation,andisusedforthe3Dreverbzonesystem,describedbelow.

    Tosetanenvironmentsimply,useSystem::setReverbProperties.Thisletsyousetaglobalenvironment,orupto4differentenvironments,whichallsoundsareaffectedby.

    EachchannelcanhaveadifferentreverbwetmixbysettingthelevelinChannel::setReverbProperties.

  • ReadmoreabouttheI3DL2configurationintheReverbNotessectionofthedocumentation.Toavoidconfusionwhenstartingout,simplyplaywiththepre-setlistofenvironmentsinFMOD_REVERB_PRESETS.

    ConvolutionReverb

    ThereisalsoanevenhigherqualityConvolutionReverbwhichallowsausertoimportanimpulseresponsefile(arecordingofaimpulseinanenvironmentwhichisusedtoconvolvethesignalplayingatthetime),andhavetheenvironmentsoundlikeitisinthespacetheimpulsewasrecordedin.

    Thisisanexpensivetoprocesseffect,soFMODsupportsGPUaccelerationtooffloadtheprocessingtothegraphicscard.Thisgreatlyreducestheoverheadoftheeffecttobeingalmostnegligible.GPUaccelerationissupportedonXboxOneandPS4platforms.

    ConvolutionreverbcanbecreatedwithSystem::createDSPByTypewithFMOD_DSP_TYPE_CONVOLUTIONREVERBandaddedtoaChannelGroupwithChannelGroup::addDSP.Itisrecommendedtoonlyimplement1oralimitednumberoftheseeffectsandplacethemonasub-mix/groupbus(aChannelGroup),andnotperchannel.

    Virtual3DReverbSystem

    AVirtual3Dreverbzonesystemissupported,usingthemainbuilt-insystemI3DL2reverb.

    Virtual'3Dreverbspheres'canbecreatedandplacedarounda3Dworld,inunlimitednumbers,causingnoextraCPUexpense.

    Asthelistenertravelsthroughthesespheres,FMODwillautomaticallymorphandattenuatethelevelsofthesystemreverbtomakeitsoundlikeyouareindifferentenvironmentsasyoumovearoundtheworld.

    Spherescanbeoverlappedandbasedonwherethelisteneriswithineachspheres.FMODwillmorphthereverbtotheappropriatemixofenvironments.

  • A3DreverbspherecanbecreatedwithSystem::createReverb3DandthepositionsetwithReverb3D::set3DAttributes.Tosetasphere'sreverbproperties,Reverb3D::setPropertiescanbeused.

    Formoreinformationonthe3Dreverbzonesystem,andimplementationinformation,readthe3DReverbTutorial.

    DSPEffects-Supportforplugins

    FMODLowLevelAPIhassupportforusercreatedDSPplugins.Adevelopercaneitherloadapre-existingplugin,orcreateoneinsidetheapplication,using'callbacks'.

    Callbackscanbespecifiedbytheuser,forexamplewhenSystem::createDSPiscalled,orwhentheDSPrunsandwantstoprocessPCMdatainsideFMOD'smixer.

  • Pluginscanbedevelopedinlinewiththeapplication,orcompiledasastand-alonedynamiclibrary(ie.dllor.so)

    Toloadapre-existingpluginexecutable,usetheSystem::loadPluginfunction.

    Toimplementcallbacksdirectlyinaprogram,System::registerDSPcanbeused.

    Tocreateastandalonedynamiclibrary,usethesamecallbacks,butexportthesymbolsthroughatheFMOD_DSP_DESCRIPTIONstruct,viatheexportedFMODGetDSPDescriptionfunction.

    SeetheDSPPluginAPItutorialonhowtomakeaplugin,and/examples/fmod_gain.cppintheAPIdistributionasaworkingexample.

    DSPEngine-Flexible,programmablesoft-syntharchitecture

    FMODLowLevelAPIrunsonamodularsyntharchitecture,whichallowsconnectionsofsignalprocessingnodes(the'FMODDSP'concept.SeetheFMODDSPClasstobejoinedtogethertocreatedeepermorecomplicatedaudiosignalsandflow.

    Adirectedgraphprocessingtreeallowsthesignaltoflowfrom'generators'(asoundplayingthroughfromSystem::playSound,oraDSPcreatingsoundfromSystem::playDSPforexample),toothernodes,mixingtogetheruntiltheyreachtheheadnode,wherethefinalresultissenttothesoundcard.

  • AvisualrepresentationtakendirectlyfromtheFMODProfilertool(inthe/bindirectoryoftheAPIdistribution).

    FMODtypicallyprocessesthesoundinthegraph,inblocksof512samples(10ms)onsomeplatforms,or1024onotherplatforms(21ms).Thisisthegranularityofthesystem,andaffectshowsmoothparameterchanges,suchaspitchorvolumewillheard.

    FMODpre-builtDSPeffectscanbeinsertedintothegraphwithfunctionslikeDSP::addInputandDSP::disconnectFrom.

    FordetailedinformationreadtheDSPArchitectureandUsagetutorial.

    Nonblockingloads,threadsandthreadsafety

    FMODLowLevelAPIcommandsarethreadsafeandqueued.Theygetprocessedeitherimmediately,orinbackgroundthreads,dependingonthecommand.

    Bydefault,thingslikeinitialization,andloadingasoundareprocessedonthemainthread.

  • Mixing,streaming,geometryprocessing,filereadingandfileloadingareorcanbedoneinthebackground,inbackgroundthreads.Everyeffortismadetoavoidblockingthemainapplication'sloopunexpectedly.

    Oneoftheslowestoperationsisloadingasound.Toplaceasoundloadintothebackgroundsothatitdoesn'taffectprocessinginthemainapplicationthread,theusercanusetheFMOD_NONBLOCKINGflaginSystem::createSoundorSystem::createStream.

    Threadaffinityisconfigurableonsomeplatforms.

    FordetailedinformationaboutFMODandthreadspleaserefertotheThreadsandThreadSafetytutorial.

  • Performance

    TheFMODLowLevelAPIhasevolvedovertheyearstohaveacomprehensivesuiteofeffectsandcodecswithminimaloverheadformemoryandCPU.

    Allplatformscomewithperformancesavingfeatures.Forexamplevectoroptimizedfloatingpointmathisusedheavily.SomeofthetechnologiesusedincludeSSE,NEON,AVX,VMX,andVFPassembler.

    Typicallythemostexpensivepartofsoundplaybackisreal-timecompressedsampleplayback.

    TheFMODAPIwillallowconfigurationofhowmanysoundsshouldbeaudibleatonce,toreduceCPUoverhead.ThisisconfigurableasmentionedintheCompressedsampleplaybacksectionofthisdocument,usingtheSystem::setAdvancedSettingsfunction.

    Adjustingthesampleratequality,resamplingquality,numberofmixedvoicesanddecodedvoicesisconfigurabletogetthebestscalabilityforyourapplication.

    TofindoutmoreaboutconfiguringFMODtosaveCPUtime,refertotheCPUPerformancetutorial,ortogetanideaaboutLowLevelperformancefiguresonvariousplatforms,refertothePerformanceReferencesectionofthedocumentation.

  • Configuration-memoryandfilesystems

    TheFMODLowLevelAPIcaterstotheneedsofapplicationsandtheirmemoryandfilesystems.Afilesystemcanbe'pluggedin'sothatFMODusesit,andnotitsownsystem,aswellasmemoryallocation.

    TosetupacustomfilesystemisasimpleprocessofcallingSystem::setFileSystem.

    Thefilesystemhandlesthenormalcasesofopen,read,seek,close,butaddsanextrafeaturewhichisusefulforprioritized/delayedfilesystems,FMODsupportstheFMOD_FILE_ASYNCREAD_CALLBACKcallback,fordeferred,prioritizedloadingandreading,whichisacommonfeatureinadvancedgamestreamingengines.

    Anasyncreadcallbackcanimmediatelyreturnwithoutsupplyingdata,thenwhentheapplicationsuppliesdataatalatertime,eveninadifferentthread,itcansetthe'done'flagintheFMOD_ASYNCREADINFOstructuretogetFMODtoconsumeit.Considerationhastobemadetonotwaittoolongorincreasestreambuffersizes,sothatstreamsdon'taudiblystutter/skip.

    TosetupacustommemoryallocatorisdonebycallingFMOD_Memory_Initialize.ThisisnotanFMODclassmemberfunctionbecauseitneedstobecalledbeforeanyFMODobjectsarecreated,includingtheSystemobject.

    Toreadmoreaboutsettingupmemorypoolsormemoryenvironments,refertotheMemoryManagementtutorial.

  • FirelightTechnologiesFMODStudioAPI

  • What'sNewin1.10Thissectiondescribesthemajorfeaturesintroducedinthe1.10release.SeetheDetailedRevisionHistoryforinformationregardingeachpatchrelease.

  • Spatialaudiofeatures

    WindowsSonicspatializationhasbeenaddedforWindowsandXboxOnewithanewoutputpluginFMOD_OUTPUTTYPE_WINSONIC.ThiswillallowFMODtoberenderedusingWindowsSonicforheadphones,DolbyAtmosforheadphonesandDolbyAtmosHomeTheatre.Thesetechnologiesallowforamoreimmersivesurroundexperiencewhichincludesheightspatializationvia7.1.4surroundspeakermodeanddynamicobjects.

    TofacilitategettingsignalintotheheightspeakersFMODcanplay12channelaudio(7.1.4)asasourceorupmixwiththehelpofFMOD_DSP_TYPE_PANandthenewFMOD_DSP_PAN_2D_HEIGHT_BLENDparameter.

    FormoredetailaboutusingspatialaudiofeatureswithFMODpleaserefertothededicatedSpatialAudiopage.

  • FirelightTechnologiesFMODStudioAPI

  • PreviousReleasesWhat'sNewIn1.08What'sNewIn1.07What'sNewIn1.06What'sNewIn1.05What'sNewIn1.04What'sNewIn1.03What'sNewIn1.02What'sNewIn1.01

  • FirelightTechnologiesFMODStudioAPI

  • What'sNewin1.09Thissectiondescribesthemajorfeaturesintroducedinthe1.09release.SeetheDetailedRevisionHistoryforinformationregardingeachpatchrelease.

  • Multiplelistenerweighting

    Studio'smultiplelistenersupporthasbeenimprovedwiththeabilitytosetaweightingperlistenerwithStudio::System::setListenerWeight.Theweightallowslistenerstobesmoothlyfadedinoroutofexistence.

    Forexampletodoacrossfade,anadditionallistenercanbecreatedwithaweightingof0thatrampsupto1whiletheoldlistenerweightisrampeddownto0.Afterthecrossfadeisfinishedthenumberoflistenerscanbesetdownto1again.

    Listenerweightisusedinthe3Dpanner,thedopplercalculation,andtheautomaticdistanceeventparameter.

    Formoreinformation,seetheStudio3DEventspage.

  • Gettingfinalvalueforvolumeandparametervalues

    TheStudioAPIgetterfunctionstakeanextraoptionalargumentwhichwillreceivethefinalvalueafterautomation,modulation,andsnapshots.

    Itallowsthesounddesignertosetupautomationsonparameterswhichthegamecanqueryanddriveothergamesidesystems,aswellasgettingvolumeofbusesaftersnapshotsareapplied.Forexistingcodebases,thesecondargumentdefaultstoNULLwhichisunchangedbehaviour.

    Thefunctionsthathavetheextrafunctionalityare:

    Studio::EventInstance::getVolumeStudio::EventInstance::getPitchStudio::EventInstance::getParameterValueStudio::EventInstance::getParameterValueByIndexStudio::Bus::getVolumeStudio::VCA::getVolume

    Aspartofthischange,theolderfunctionnameshavebeenrenamedforconsistency:

    Studio::Bus::setFaderLevelisnowStudio::Bus::setVolumeStudio::Bus::getFaderLevelisnowStudio::Bus::getVolumeStudio::VCA::setFaderLevelisnowStudio::VCA::setVolumeStudio::VCA::getFaderLevelisnowStudio::VCA::getVolume

  • MultibandEQ

    AnewEQDSPhasbeendevelopedtorollupseveralsimplerDSPsintoonehighperformanceflexibleeffect.

    ThemultibandEQconsistsof5independentlyconfigurableparametricequalizerswithseveralfilteringmodes:

    Low-pass(12dB,24dB,48dB)High-pass(12dB,24dB,48dB)Low-shelfHigh-shelfPeakingBand-passNotchAll-pass

    Thisneweffectwillsupercedeexistinglowpass,highpass,lowpasssimple,highpasssimpleandparametriceqeffects.Ithasbetterperformanceandasupersetoffunctionalitycomparedwiththenowdeprecatedeffectsandthusshouldbeconsideredasareplacement.FormoreinformationonhowtousetheneweffectasareplacementseeFMOD_DSP_TYPEremarks.

  • What'snewsince1.08initialreleaseThissectioncoverssomeoftheimprovementsintroducedbetweenthefirst1.08releaseandthenew1.09release.SeetheDetailedRevisionHistoryformoreinformationonfeaturesintroducedduringthe1.08lifetime.

  • SoundPlay/Stopcallbacks

    YoucannowsetacallbacktobefiredwhentheStudioruntimeplaysorstopsanevents.WiththecallbackisthelowlevelFMOD::Soundthroughwhichyoucanquerythenameofthesoundplayed

  • Listenermask

    Eventscanbesetuptoonlybeinfluencedbysomeofthelisteners.Studio::EventInstance::setListenerMaskcanbeusedtospecifyamaskforwhatlistenersapplytothatevent.

    Formoreinformation,seetheStudio3DEventspage.

  • FirelightTechnologiesFMODStudioAPI

  • What'sNewin1.08Thissectiondescribesthemajorfeaturesintroducedinthe1.08release.SeetheDetailedRevisionHistoryforinformationregardingeachpatchrelease.

  • Bankloadingperformanceimprovements

    Banksampledataloadinghasbeenoptimised.Thenumberoffileaccessesandseekshasbeenreduced.Multiplesampledataloadsarecoalescedintoasinglereadoperationinsortedorder.Performancewhencancellingpendingsampledataloadshasbeenbeenimproved.Therehavebeenmemorysavings,soprojectsthatloadlargenumbersofsoundswillseeamemoryimprovement.

    Studiosampledataloadingoccursonitsownthread.Affinitycanbecontrolledviaperplatformaffinitysettings.

  • SampleDataIdlePool

    Toavoidspurioussampledatareloading,Studiowillkeepapoolofrecentlyusedsoundsinmemory.Thiscanhelpforcaseswhereprogrammerdoesn'tmanuallypreloaddataviaStudio::EventDescription::loadSampleDataorStudio::Bank::loadSampleData.SeetheStudioBankProgrammerTopicformoreinformation.

  • StudioProfilerfileI/Odisplay

    TheFMODStudioProfilernowdisplaysthefileI/Ousedforsampledata,streamdata,andbankmetadataloading.Theeventinstancelifetimeviewhasindicatorsforwheneventinstancesarestallingwaitingforsampledatatoloadin.

  • 3DObjectPanner

    Thenew3DobjectpannerDSP(FMOD_DSP_TYPE_OBJECTPAN)allowschannelstobespatializedusingDolbyAtmos(FMOD_OUTPUTTYPE_ATMOS)andPlaystationVR(FMOD_OUTPUTTYPE_AUDIO3D)technology.

    TheoutputmodepluginAPI(FMOD_OUTPUT_DESCRIPTION)hasbeenextendedtoallowcustomobjectpannerbackends.

    Thereisanewexample'object_pan'thatdemonstratesobjectbasedpanning.

  • Multiplepluginsinonefile

    MultipleDSP,outputandcodecpluginscanbepackagedintoasinglemodule.SeeFMOD_PLUGINLIST,System::getNumNestedPlugins,System::getNestedPlugin,andtheDSPPluginAPIProgrammerTopicformoreinformation.

  • Soundloadingperformance

    IncreasedperformancewhenloadingsamplesandopeningstreamsviathelowlevelAPI.

  • LowlatencyoutputmodeforWindows

    ThedefaultWASAPIoutputmodehasreducedlatencyby40msandimprovedmixerthreadregularity.

  • FSBankandProfilertoolsforMac

    AddedMacversionsoftheProfilertool,FSBanktool,andFSBankLibAPI.TheseareincludedintheMacandiOSAPIpackages.

  • SupportfornewStudiofeatures

    Leftedgetrimmingoftimelockedsounds.StartOffsetasapercentageofsoundlength.Perassetencodingandstreamingsettings.New'Decompressed'loadingmodeallowssoundstobedecompressedintomemorywhenloaded,ratherthanstayingcompressed.

  • What'snewsince1.07initialreleaseThissectioncoverssomeoftheimprovementsintroducedbetweenthefirst1.07releaseandthenew1.08release.SeetheDetailedRevisionHistoryformoreinformationonfeaturesintroducedduringthe1.07lifetime.

  • Transceivereffect

    ThisnewDSPeffect(FMOD_DSP_TYPE_TRANSCEIVER)broadcastsasignaltooneof32global'slots'or'channels'(likearadiostation).Thesesignalscanbemonitoredbyareceiveranywhereinthemix.Eachchannelmayhavemultipletransmittersorreceiversconnected.

    Applicationsincludesendingtheoutputofaglobalreverbbackoutintotheworldtobespacialized,playingin-gameradiobothinsidethecabinandalsothroughloudspeakersplacedoutside,andmanymore.

  • FirelightTechnologiesFMODStudioAPI

  • What'sNewin1.07Thissectiondescribesthemajorfeaturesintroducedinthe1.07release.SeetheDetailedRevisionHistoryforinformationregardingeachpatchrelease.

  • 64-bitversionofStudio

    Studioisnowa64-bitapplication,providinggreatermemorycapacityandimprovedperformance.OnWindows,separate32-bitand64-bitversionsareavailable.OnMac,Studioisnow64-bitonly.

    Allpluginlibrariesmustbebuiltfor64-bitarchitectureinordertobecompatiblewiththe64-bitversionofStudio.

  • Nestedeventshavebeenconvertedtoreferenceevents

    Theconceptofnestedeventsandreferencedeventshasbeenunifiedtojusthavingreferenceevents.Aspartofthischange,Studio::Bank::getEventCountandStudio::Bank::getEventListnowonlyreturntopleveleventsthathavebeenexplicitlyaddedtobanksbythesounddesigner.Theydonotincludeanyreferenceeventsthathavebeenincludedinthebankimplicitlyviaeventinstrumentreferences.

  • BusPolyphony

    Thissettingallowsthedesignertosetalimitonthenumberofeventinstancesthatroutethroughabus.

  • Improvedrecordingandenumerationsupport

    WhenusingSystem::getRecordNumDriversandSystem::getRecordDriverInfoyoucannowbesurethataparticularlistindexwillalwaysbevalid.Asdevicesareaddedthelistwillgrowovertime,ifadeviceisremoveditwillremaininthelist.YoucannowqueryFMOD_DRIVER_STATEtodetermineFMOD_DRIVER_STATE_CONNECTED.

    Totakeadvantageoftheseimprovementsallmajorplatformssupportdynamicdeviceadditionandremovalallowingdeveloperstoquerythecurrentstateofallrecordinghardware.FornotificationsaboutchangesSystem::setCallbackcanbeusedwithFMOD_SYSTEM_CALLBACK_RECORDLISTCHANGED.Allrecordingdevicechangesarenowdecoupledfromoutputchanges.

  • Multi-channelcompressedsamplesupport

    InpreviousversionsofFMODmulti-channel(greaterthanstereo)soundscouldbestreamedorplayedafterbeingdecompressedintomemory,butnotasaninmemorycompressedsound(ieVorbis).ThisreleaseallowsanyFSBcompressedsoundtobemulti-channel,accessibleviaFMOD_CREATECOMPRESSEDSAMPLEflagifusingthelowlevelAPI,orjustdraganddropmulti-channelsoundsintoFMODStudio'sUIandplayasnormal.

  • AddedFMOD_DSP_TYPE_CHANNELMIXeffect

    ThisnewDSPeffectallowstheusertocontrolgainlevelsforupto32inputchannelsignals,andpipetheoutputtoarangeofspeakerformatsi.e.repeatingmono,stereo,quad,5.1,7.1oronlyLFEout.

  • Performanceimprovements

    ImprovedVorbisdecodingperformanceonWindows.Metering/Profilingperformancesignificantlyimproved.

  • Platformspecificimprovements

    Newplatforms-UniversalWindowsPlatform(UWP)andAppleTVsupport.Mac-Addedsupportforrecordingfrommultiplemicrophonesatthesametime.iOS-Addedsupportforbitcode.Win-Reduceddllandexesizes.

  • NewPlugins

    AudioGaming-AudioMotors.Createrealtimeinteractivecarenginesoundsfromasinglerecordedenginesweep!TwoBigEars-3DCEPTION.3Dceptionisareal-time3Daudioandenvironmentalmodellingengine.

  • What'snewsince1.06initialreleaseThissectioncoverssomeoftheimprovementsintroducedbetweenthefirst1.06releaseandthenew1.07release.

    Internetstreams.AddSound::setPositionandSound::seekDatasupportforHTTPstreams.UE4-Addedblueprintfunctionsforloadingandunloadingsampledata,newinitializationsettings,beatandmarkercallbacksasBlueprintevents,reverbzones,and4.9enginepreviewbuild.StudioProfilernowshowsnestedinstanceinformation.Reducedmemoryoverheadofbankmetadata.FMOD_STUDIO_LOAD_BANK_DECOMPRESS_SAMPLESflaghasbeenaddedtoallowcompressedbankstobedecompressedatloadtime,tohelplowspecmachines.TempoandmarkereventcallbacksaddedtoStudioAPI.SeeFMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKERandFMOD_STUDIO_EVENT_CALLBACK_TIMELINE_BEAT.Additionaleventcallbacktypes:FMOD_STUDIO_EVENT_CALLBACK_CREATED,FMOD_STUDIO_EVENT_CALLBACK_DESTROYEDandFMOD_STUDIO_EVENT_CALLBACK_START_FAILED.FMOD_DSP_COMPRESSORnowsupportsunlinkedchannelcompression,somultichannelsidechainingforexamplecancompresseachdestinationchannelindividually.DSPPluginwriters-FMOD_DSP_DESCRIPTION::sys_register,sys_deregisterandsys_mixcallbackshavebeenadded,toallowapertype(notinstance)levelinit/shutdown/mixcallbackforaplugin.

    SeetheDetailedRevisionHistoryformoreinformationonfeaturesintroducedduringthe1.06lifetime.

  • FirelightTechnologiesFMODStudioAPI

  • What'sNewin1.06Thissectiondescribesthemajorfeaturesintroducedinthe1.06release.SeetheDetailedRevisionHistoryforinformationregardingeachpatchrelease.

  • BankLoadingChanges

    Studionowdoesallfileloadingonaseparateloadingthread.Thisavoidsanyhitchesinschedulingthatmayoccurwhenloadinglargebanks.TheinterfaceisunchangedsincetheFMOD_STUDIO_LOAD_BANK_NONBLOCKINGflagalreadyexists.

    BanksloadedwithFMOD_STUDIO_LOAD_BANK_NONBLOCKINGwillnolongerbedestroyediftheloadingfails,insteadtheywillremaininanerrorstatethatcanbequeriedwithStudio::Bank::getLoadingState.BanksthatentertheerrorstateshouldbereleasedbycallingStudio::Bank::unload.

    SeveralenhancementsweremadeforFMOD_STUDIO_LOAD_MEMORY_POINT.ExtradatacanbeassociatedwiththebankbyStudio::Bank::getUserDataandStudio::Bank::setUserData.ThereisanewcallbackFMOD_STUDIO_SYSTEM_CALLBACK_BANK_UNLOADwhichiscalledwhenbanksareasynchronouslyunloaded.Thatprovidesaconvenientplacetofreeanymemoryassociatedwiththebank.

    Theload_banksexamplehasbeenupdatedtodemonstrateallthemethodsofloadingbanks.

  • APICaptureandReplay

    APIcommandcapturefunctionalityhasbeenimproved.APIcommandsarenowcapturedwhenrecordingaprofilingsessioninStudio,allowingsounddesignerstocreateAPIcommandcaptureswithouttheneedforprogrammersupport.

    APIcapturesnowwriteouttheinitialstateoftheplaybacksystemincludingcurrentlyloadedbanksaswellasthestateofallcreatedeventinstances.ThisallowsAPIcapturestobetakenmid-gamewithoutmissinganyinformation.

    Studio::System::loadCommandReplaynowreturnsaCommandReplayobjectthathasfunctionalityforqueryinginformationaswellasstarting,stopping,andpausingplayback.Playbackisnowasynchronous.

  • Multiplelistenersupport

    TheStudioAPIhasbeenupdatedtosupportmultiplelisteners.Studio::System::setNumListenersandStudio::System::getNumListenershasbeenadded,andtheexistingStudio::System::setListenerAttributesandStudio::System::getListenerAttributesfunctionsnowtakealistenerindex.

    Dopplerisdisabledwheninmultiplelistenermode.

    Aspartofthischange,thereisanewDSPdataparameterFMOD_DSP_PARAMETER_3DATTRIBUTES_MULTIthatcanbeusedforDSPpannersthatwanttosupportmultiplelistenerpanning.

  • FADPCMCompression

    Thisnewcompressionformatisrecommendedforalldeveloperstargetingmobiledevices,PSVitaorWiiUandisconsideredadropinreplacementforIMAADPCMcompression.Itachievesaslightlyhighercompressionratio,3.66:1comparedwith3.55:1whilebeingastepupinquality.Howeverthemainbenefitofthisnewcustomformatisthegroundupdesignforefficientdecoding,insomecasestwiceasfastasIMAADPCM.

  • FirelightTechnologiesFMODStudioAPI

  • What'sNewin1.05Thissectiondescribesthemajorfeaturesintroducedinthe1.05release.SeetheDetailedRevisionHistoryforinformationregardingeachpatchrelease.

  • MixerStripReplacedbyBusandVCA

    TheStudio::MixerStripclasshasbeenreplacedbyStudio::BusandStudio::VCAtobetterreflectthedifferencesbetweenthetwoconcepts.Thenewclassesdonothaveareleasemethod,astheirhandlesremainvaliduntilthebankcontainingthemisunloaded.

  • GetEventfunctions

    TheStudio::System::getEvent,Studio::System::getBus,Studio::System::getVCAandStudio::System::getBankfunctionsnowtakeastringthatcaneitherbethefullpathorthestringrepresentationoftheID.ThisavoidstheadditionalcalltoStudio::parseIDorStudio::System::lookupIDinmostcases.

    ThefunctionstogetbyIDarenownamedStudio::System::getEventByID,Studio::System::getBusByID,Studio::System::getVCAByID,andStudio::System::getBankByID.

  • BusChannelGroupLifetime

    Eachbus'schannelgroupisnowcreatedanddestroyedondemand.Thismeansitonlyexistsifatleastoneeventinstanceroutesintothebus.Ifitdoesn'texist,Studio::Bus::getChannelGroupwillreturnFMOD_ERR_STUDIO_NOT_LOADED.

  • EventInstanceReleaseBehaviorChange

    Studio::EventInstance::releasenolongerinvalidatesthehandleimmediately.Instead,thehandleremainsvaliduntiltheinstancestopsandisactuallydestroyed.Inaddition,thisfunctionnolongerchecksiftheeventwillstopnaturally.Loopingeventswillnotbedestroyeduntiltheyaremanuallystopped.

    ThischangealsomeansthateventcallbackswillcontinuetobefiredafterStudio::EventInstance::releaseiscalleduntiltheinstanceisactuallydestroyed.ThiscanbepreventedbysettingthecallbacktoNULLbeforecallingStudio::EventInstance::release.

  • EventStopBehaviorChange

    Eventswithsoundstriggeredbyparameterswillnowstoponceallsoundshavefinishedandthetimelinecursorhasreachedtheend.Previouslytheseeventswouldgoidleinsteadofstopping.Theoldbehaviorcanbeachievedbyaddingasustainpointtothetimeline.

  • DeprecatedFunctionRemoved

    Studio::EventInstance::createSubEventhasbeenremoved.UseEventSoundsinstead.

  • WideStringAPI

    AllFMODfunctionsdealingwithfilenamesandpathsnowacceptUTF-8encodedstrings.AllargumentsthattakeorreturnUTF-16encodedstringshavebeenremoved,ashaveflagsthatindicateanUTF-16stringhasbeenpassed.

    UTF-8encodedstringscanbeusedtoaccessfilepathscontainingnon-ASCIIcharactersonWindows,PS3,PS4,PSVita,XBoxOne,iOS,Android,Mac,Linux,WindowsPhone,andWindowsStore.

  • AddedAACSupportforAndroid

    ItisnowpossibletoloadAACfilesonAndroid4.2ornewerdevices.Thiscanmakeuseofanyhardwareaccelerateddecodingprovidedbytheplatform.

  • ImprovedLoggingOutput

    ForgreatercontroloftheloggingversionofFMOD,i.e.fmodL/fmodstudioLyoucannowuseFMOD::Debug_Initializetospecifybothlogginglevelanddestination.BydefaultalloutputwillgototheTTY/stderr/logcat/platformspecificdebuglocation.UsingthisnewAPIyoucanalsosendoutputtofileorcallbackforintegrationintocustomloggingsystems.

  • DSPResetCallbackBehaviorClarified

    TheFMOD_DSP_RESET_CALLBACKdocumentationhasbeenupdatedtomakeitclearthatitshouldleavepublicparametersunchanged.

  • FirelightTechnologiesFMODStudioAPI

  • What'sNewin1.04Thissectiondescribesthemajorfeaturesintroducedinthe1.04release.SeetheDetailedRevisionHistoryforinformationregardingeachpatchrelease.

  • StudioProfiling

    FMODStudionowsupportsprofiling.Profilingsendsevent,parameter,andbusinformationacrossthenetworktoFMODStudio,allowingtheprofilingsessiontobevisualisedandreplayed.ProfilingissupportedautomaticallywhentheFMOD_STUDIO_INIT_LIVEUPDATEflagisused.

    Notethattheexistinglowlevelprofilerisstillsupported,andcanbeusedforin-depthanalysisoftheDSPgraphwhenusingtheStudioAPIortheLowLevelAPI.ThelowlevelprofilerisprovidedintheWindowsorMacProgrammer'sAPIpackageasthe"FMODProfiler"executable.ThelowlevelprofilerissupportedautomaticallywheneithertheFMOD_STUDIO_INIT_LIVEUPDATEorthelowlevelFMOD_INIT_PROFILE_ENABLEflagisused.

  • AudioTables

    FMODStudionowsupportsaddingaudiotablestobanks.ThesearedesignedtoholdlargenumbersofsoundsforusecaseslikelocalizedVO.Eachentryinthetableisidentifiedbyakeystring,andthemappingfromkeytosoundcanbechangedbyloadingadifferentaudiotable.

    Touseanaudiotableentry,lookitupwithStudio::System::getSoundInfoandthenpasstheresultinginformationtoSystem::createSound.ThissoundwillcontainasubsoundthatcanbeusedwithFMOD_STUDIO_EVENT_CALLBACK_CREATE_PROGRAMMER_SOUNDorplayedbackdirectly.Notethatthebankcontainingtheaudiotablemustbeloadedforthelookuptosucceed.

  • Sub-EventsDeprecated

    Sub-eventsarenowdeprecated.ThismeansStudio::EventInstance::createSubEventwillberemovedinafuturerelease.NotethatEventSoundsarestillsupported,andarethepreferredmechanismforeventnesting.

  • EventCallbackChanged

    FMOD_STUDIO_EVENT_CALLBACKnowhasanextraFMOD_STUDIO_EVENTINSTANCE*parameter.Thissimplifiescallbackimplementation,asyounolongerneedtocheckthecallbacktypeinordertogettheevent.

  • DeprecatedFunctionsRemoved

    Somefunctionsthatweredeprecatedhavenowbeenremoved:

    Studio::EventInstance::getLoadingState-useStudio::EventDescription::getSampleLoadingStateinsteadStudio.Factory.System_Create(C#only)-useStudio.System.createinsteadStudio.System.init(C#only)-useStudio.System.initializeinstead

  • PS3Support

    FMODStudionowofficiallysupportsPS3.

  • WiiUSupport

    FMODStudionowofficiallysupportsWiiU.

  • LinuxSupport

    FMODStudionowofficiallysupportsLinux.

  • WindowsPhone8.1Support

    FMODStudionowofficiallysupportsWindowsPhone8.1.

  • FirelightTechnologiesFMODStudioAPI

  • What'sNewin1.03Thissectiondescribesthemajorfeaturesintroducedinthe1.03release.SeetheDetailedRevisionHistoryforinformationregardingeachpatchrelease.

  • ThreadingChanges

    FMODStudiohassupportformulti-threadinginbothlow-levelandStudioAPI.TheStudioAPIsupportsissuingcommandsfromanynumberofthreads,andbydefaultnowdoesallexecutioninitsownthread.TheLowLevelAPInowsupportsthreadsafetybydefault.FMODStudioandLowLevelthreadingandthreadsafetycanbedisabledwithnewinitializationflags.SeetheThreadsandThreadSafetysectionformoreinformation.

  • HandleandStudioAPIChanges

    Aspartofthethreadingchanges,theStudioAPIhandlesystemhasbeenchanged.TheStudioC++APInowmatchestheLowlevelC++APIwhichhasapointer-basedsystem.ThismeansexistingcodewillhavetochangefromdirectlyusingStudiotypestoretrievingandcallingAPIwithapointerstyle.Theunderlyinghandlesystemhasbeenrewrittentobethread-safeandmoreefficient.ThischangealsomeansthattheCAPInowproperlydealswithinvalidhandlessafely,andthattheCAPIandC++APItypesareequivalentandcanbecastbetweeneachother.SeetheHandleSystemformoreinformation.

  • RecordingandPlayback

    AllStudioAPIcallscanberecordedtoafileandplayedbackatalatertime.Thisisintendedfordebugfunctionality.SeeStudio::System::startRecordCommands,Studio::System::stopRecordCommandsandStudio::System::playbackCommandsformoredetails.

  • StudioEnumerationFunctions

    FMODStudioenumerationfunctionshavebeenchangedtoagetCount/getListstylewhichisthread-safeandaccessiblebytheCinterface.Morefunctionshavebeenaddedtoenumeratebanks,events,andmixerstrips.SeeStudio::System::getBankCount,Studio::System::getBankList,Studio::Bank::getEventCount,Studio::Bank::getEventList,Studio::Bank::getMixerStripCount,Studio::Bank::getMixerStripList,Studio::EventDescription::getInstanceCount,andStudio::EventDescription::getInstanceList.

  • Eventsinmultiplebanks

    FMODStudionowsupportsduplicateeventsinmultiplebanks.Studioresourcesarereferencecountedandloadingwillskiptheeventdatathathasalreadybeenloadedinanexistingbank.

  • ErrorCallback

    AllLowLevelAPIandStudioAPIerrorscannowbeinterceptedbyregisteringausercallback.Thecallbackincludesthefunctionthatgeneratedtheerror,theinstancedata,andtheoptionalfunctionparameterarguments.ThisisparticularlyusefulforStudioAPIcommandswhichhavebeendeferredtorunontheStudioasynchronousthread.SeeSystem::setCallbackformoreinformation.

  • PSVitasupport

    FMODStudionowofficiallysupportsPSVita.

  • WindowsStoreApplicationssupport

    FMODStudionowofficiallysupportsWindowsStoreApplicationsforbothx86andARMdevices.

  • AdditionalStudiofeatures

    FMODStudionowsupportssoundsplacedontransitiontimelines,transitionmarkerprobability,andloopregionprobability.

  • Documentation

    TheStudioAPIdocumentationhasnowimprovedandextended.

  • FirelightTechnologiesFMODStudioAPI

  • What'sNewin1.02Thissectiondescribesthemajorfeaturesintroducedinthe1.02release.SeetheDetailedRevisionHistoryforinformationregardingeachpatchrelease.

  • AndroidPlatform

    FMODStudionowofficiallysupportstheAndroidplatform.

  • UnitySupport

    FMODStudiohasaddedsupportfortheUnitygameengineviaanativeplugin.

  • NewBankLoadingAPI

    TheexistingloadBankAPIhasbeenrenamedtoStudio::System::loadBankFile,andtwoextraversionshavebeenadded.Studio::System::loadBankMemoryallowsloadingfromamemorylocation.Studio::System::loadBankCustomsupportsloadingbankswithbank-specificcallbackstodothereading.

  • Memoryandperformanceoptimisations

    ThisrevisionincludesanumberofmemoryandCPUoptimisationstobothlow-levelandtheStudioAPI.

  • Documentation

    FMODStudionowshipswithdocumentationthatcoversthefullAPI.

  • FirelightTechnologiesFMODStudioAPI

  • What'sNewin1.01Thissectiondescribesthemajorfeaturesintroducedinthe1.01release.SeetheDetailedRevisionHistoryforinformationregardingeachpatchrelease.

  • Sends

    SupporthasbeenaddedforSendDSPconnectionstosendsounddatatodifferentareasofthemixgraph.

  • FadePoints

    Supporthasbeenaddedforsettingsample-accuratefaderamppoints.ThefadepointsallowStudiotoschedulesoundvolumegradientstooccurinfuturemixes.

  • StudioAPI

    AnumberofadditionalStudioAPIfunctionshavebeenadded.Seetherevision.txtformoredetails.

  • FirelightTechnologiesFMODStudioAPI

  • WindowsSpecificStarterGuideSDKVersion

    FMODiscompiledusingthefollowingtools.

    VisualStudio-version2012targetingplatformtoolsetv110_xp.

  • Compatibility

    FMODsupportsthebelowarchitecturesbacktoWindowsXP.

    x86-optimizedwithSSE3.x86_64-optimizedwithSSE3(andAVXifdetectedatruntime).

  • Libraries

    TheprovidedlibsareimportlibrarieswhichrequirethecorrespondingDLLtobepresentatruntime.

    FMODLowlevellibrary

    /api/lowlevel/lib/fmod_vc.lib-Release32-bitbinaryforproductioncode(requiresfmod.dllatruntime)./api/lowlevel/lib/fmodL_vc.lib-Release32-bitbinarywithloggingenabledfordevelopment(requiresfmodL.dllatruntime)./api/lowlevel/lib/fmod64_vc.lib-Release64-bitbinaryforproductioncode(requiresfmod64.dllatruntime)./api/lowlevel/lib/fmodL64_vc.lib-Release64-bitbinarywithloggingenabledfordevelopment(requiresfmodL64.dllatruntime).

    FMODStudioRuntimelibrary(usedinconjunctionwithlowlevellibrary)

    /api/studio/lib/fmodstudio_vc.lib-Release32-bitbinaryforproductioncode(requiresfmodstudio.dllatruntime)./api/studio/lib/fmodstudioL_vc.lib-Release32-bitbinarywithloggingenabledfordevelopment(requiresfmodstudioL.dllatruntime)./api/studio/lib/fmodstudio64_vc.lib-Release64-bitbinaryforproductioncode(requiresfmodstudio64.dllatruntime)./api/studio/lib/fmodstudioL64_vc.lib-Release64-bitbinarywithloggingenabledfordevelopment(requiresfmodstudioL64.dllatruntime).

  • COM

    BeforecallinganyFMODfunctionsitisimportanttoensureCOMisinitialized.YoucanachievethisbycallingCoInitializeEx(nullptr,COINIT_APARTMENTTHREADED)oneachthreadthatwillinteractwiththeFMODAPI.ThisisbalancedwithacalltoCoUninitialize()whenyouarecompletelyfinishedwithallcallstoFMOD.

    IfyoufailtoinitializeCOM,FMODwillperformthison-demandforyouissuingawarning.FMODwillnotuninitializeCOMinthiscasesoitwillbeconsideredamemoryleak.

    ToensurecorrectbehaviorFMODassumeswhenusingtheWASAPIoutputmode(defaultforWindowsVitaandnewer)thatyoucalloutputrelatedfunctionsfromyourUIthread.Thisensuresthatanyplatformspecificdialogsthatneedtobepresentedcandoso.ThisrecommendationcomesfromtheIAudioClientinterfacedocsonMSDNwhichstate:

    InWindows8,thefirstuseofIAudioClienttoaccesstheaudiodeviceshouldbeontheSTAthread.CallsfromanMTAthreadmayresultinundefinedbehavior.

    https://msdn.microsoft.com/en-us/library/windows/desktop/dd370865.aspx

  • KnownIssues

    Noknownissues,[email protected].

    mailto:[email protected]

  • FirelightTechnologiesFMODStudioAPI

  • PerformanceReferenceThisdocumentisacompanionfortheperformancetutorialdocumentandservesasaquickreferenceoffactstargetingthisplatform.

  • FormatChoice

    EachcompressionformatprovidedinFMODhasareasonforbeingincluded,thebelowlistwilldetailourrecommendationsforthisplatform.Formatslistedasprimaryareconsideringthebestchoice,secondaryformatsshouldonlybeconsiderediftheprimarydoesn'tsatisfyyourrequirements.

    Vorbis:Primaryformatforallsounds.FADPCM:SecondaryformatifVorbisCPUusageistoohighforlowspecmachines.PCM:Notrecommended.XMA:Unavailable.AT9:Unavailable.

  • VoiceCount

    Togivedevelopersanideaaboutthecostsofaparticularformatweprovidesyntheticbenchmarkresults.TheseresultsarebasedonsimpleusageoftheFMODStudioAPIusingrecommendedconfigurationsettings.

    Settings

    Voicecount:64Samplerate:48KHzSpeakermode:StereoDSPblocksize:1024samples

    TestDevice

    CPU:[email protected]:WindowsXP

    Results

    DSPwithVorbis:22.2%(+/-1.6%)DSPwithFADPCM:5.5%(+/-0.1%)DSPwithPCM:3.3%(+/-0.1%)Updateat60FPS:0.8%(+/-0.2%)

  • FirelightTechnologiesFMODStudioAPI

  • DetailedRevisionHistory06/12/171.10.02-StudioAPIminorrelease(build92217)

    Features:

    LowLevelAPI-UWP-AddedWindowsSonicsupport.LowLevelAPI-UWP-AddedsupportforsettingthreadaffinityviaFMOD_UWP_SetThreadAffinity.

    Fixes:

    StudioAPI-FixedQuieteststealingbehaviorsoneweventsdon'tstartiftheyarequieterthanallcurrentlyplayingevents.StudioAPI-FixedbusesthathavereachedtheirMaxInstanceslimitincorrectlypreventingtheirinputbusesfromapplyingtheirstealingbehavior.StudioAPI-Fixedacrashcausedbywavfileswithinvalidlooppoints.LowLevelAPI-FixedrecordingdevicesstillbeingmarkedasconnectedwhenswitchingtoFMOD_OUTPUTTYPE_NOSOUND.LowLevelAPI-UWP-Madedevicereset/unplugbehaviormorerobustagainstfailure.LowLevelAPI-XboxOne-FixedWASAPIiniterrorifWinSonicwasattemptedfirst.FSBankAPI-Fixedcrashin64bitversionwhenencodinglowsampleratemonosoundsasVorbiswithlowquality.Unity-PlayOneshotandPlayOneshotAttachednowlogawarningwhentheeventisnotfound,ratherthanthrowinganexception.

    Notes:

    AddedResonanceAudiopluginversion1.0,thispluginrepresentsthecontinuationoftheGoogleVRpluginundernewbranding.TheGoogleVRpluginisnowconsidereddeprecatedinfavourofResonanceAudio,

  • considermigratingtothenewpluginastheGVRpluginwillberemovedinFMOD1.11.XboxOne-NowbuiltwithJune2017QFE8XDK.

  • 01/11/171.10.01-StudioAPIminorrelease(build91339)

    Features:

    UE4-ExposeBus::stopAllEventstobeuseablethroughblueprints.Unity-Eventlengthdisplayedineventbrowserforoneshotevents.

    Fixes:

    StudioAPI-Fixedmodulationonplugininstrumentsusingtheparentevent'slifetimeratherthantheinstrument'slifetime.StudioAPI-Fixedaliveupdateissuewhereassetfileswouldnotreloadafterbeingmovedondisk.StudioAPI-FixedabugwhichcausedsoundstopanincorrectlywhenusingFMOD_INIT_3D_RIGHTHANDED.StudioAPI-PS4-Fixedexcessivebinarysizecausedbyinclusionofdebugsymbols.LowLevelAPI-Fixedpotentialcrashwhenre-initializingFMOD::Systemafterfailure.LowLevelAPI-FixedcompatibilityissueswithWindowsXP.LowLevelAPI-Android-Fixedexportedsymbolstoavoidissueswithunwinder.LowLevelAPI-Android-AutomaticoutputmodeselectionwillnowchooseAudioTrackratherthanOpenSLifBluetoothisenabledtoavoidstuttering.LowLevelAPI-XboxOne-EnsureWinSonicinternalthreadsareassignedtothesamecoreastheFMODmixer.FSBankAPI-Fixedcrashwhenencodingverylongaudiofiles.UE4-Integrationnowhandlesapplicationinterruptionbypausingandresumingthemixer.UE4-FixedSetEventnotsettingorusingnewevent.UE4-FixedXboxOnethreadaffinitystructsetup.UE4-Removedengineversionifdef's.UE4-Fixedintegrationattemptingtosettheinitialvalueofbuilt-inparameters.

  • Unity-FixedcompatibilityforUnity5.0&5.1.Unity-Addedchecktoseeifanybankshavebeenloadedbeforetryingtopause.Unity-AllowStringHelpertofastreturnifstringisnull.

    Notes:

    UpdatedGoogleVRplugintoversion0.6.1.StudioAPI-Studio::EventInstance::set3DAttributesandStudio::System::setListenerAttributeswillnowreturnFMOD_ERR_INVALID_PARAMiftheforwardorupvectorsarezero.Inloggingbuildswarningswillbeloggediftheforwardandupvectorsarenotorthonormal.LowLevelAPI-Theconvolutionreverbeffectwillnotacceptimpulseresponsedataifthesystemisnotusingapower-of-twoDSPbuffersize.WindowsSoniccurrentlyrequiresaDSPbuffersizeof480makingitincompatiblewithconvolutionreverbuntilthisrequirementislifted.PS4-NowbuiltwithSDK5.008.001.Unity-Exposededitorscriptclassesforin-gameFMODobjectsaspublic.Unity-ExposedStudioEventEmitter'sEventInstanceaspublictoalloweasierintegrationwithcustomplugins.

  • 19/09/171.10.00-StudioAPImajorrelease(build90329)

    Features:

    LowLevelAPI-AddedFMOD_MAX_SYSTEMSconstant,currently8.LowLevelAPI-ExposedFMOD_DSP_FADER_GAINonFMOD_DSP_TYPE_FADER.LowLevelAPI-AddedFMOD_SPEAKERMODE_7POINT1POINT4speakermodewhichincludesfourheightspeakerstobeusedwithWindowsSonicoutput.LowLevelAPI-AddedFMOD_DSP_PAN_2D_HEIGHT_BLENDparametertoFMOD_DSP_TYPE_PANthatallowsmixinggroundspeakersignalintotheheightspeakersandviceversa.LowLevelAPI-Windows&XboxOne-AddedWindowsSonicoutputplugintosupportrenderingmultichannel(withheight)speakermode7.1.4aswellasdynamicobjectsviaFMOD_DSP_TYPE_OBJECTPAN.LowLevelAPI-PSVita-SwitchedFMOD_PSVita_SetThreadAffinitytoacceptamaskinsteadofacorenumbertoallowfloatingthreads.LowLevelAPI-AddedFMOD_OUTPUT_REQUESTRESETtoFMOD_OUTPUT_STATEtoallowoutputpluginstorequesttheyberesetbytheSystem.

    Fixes:

    StudioAPI-Sequentialmultiandscattererinstrumentsnowtracktheircurrentplaylistentryonaper-event-instancebasis,ratherthanglobally.UE4-RemovedallreferencetoOculus,nowthatOculusfunctionsasallotherFMODStudioplugins.UE4-RemovedalllegacyUE4versioncode,ifyouarenotusingUE4.16thepluginwillnotworkwithoutmakingchangestosourcecode.UE4-Overhauleddetailsinteractionineditorandimprovedusability.GroupedallFMODfunctionalitytogether,addedParameters,andremovedunnecessaryinformationfromattenuation/occlusion.Unity-RemovedgarbageallocationsfromC#wrapper.

  • Notes:

    UpdatedGoogleVRplugintoversion0.6.0.LowLevelAPI-FMOD_DSP_TYPE_ENVELOPEFOLLOWERisnowdeprecatedandwillberemovedinafuturerelease.LowLevelAPI-IncrementPluginAPIversionforOutputplugins.DynamiclibraryOutputPluginsmustberebuilt.StudioAPI-Changedthebehaviourofnestedeventstostopwhenidleevenwhenthereareinstrumentsonparameters.Thismakesnestedeventsmatchthebehaviouroftoplevelevents.Eventswhichdependontheoldbehaviourneedtobemanuallyfixedupby(forexample)addingasustainpointtothenestedeventstimeline.Android-Loggingversionwillnowproducepropercrashstacksbutduetobinarysizeincreasethereleaseversionwillcontinuetonot.XboxOne-Removed"acp"and"feeder"fromFMOD_DURANGO_THREADAFFINITY.Boththreadswereremovedinpreviousversionsandsettingthemdidnothing.UE4-AudioComponentsusingocclusionfrompreviousversionsareNOTcompatiblewiththisversion.OcclusionandAttenuationnowdonotrelyonUE4structs.

  • 11/09/171.09.08-StudioAPIminorrelease(build90162)

    Fixes:

    LowLevelAPI-Fixedextraneouslogging.

  • 07/09/171.09.07-StudioAPIminorrelease(build90008)

    Features:

    UE4-Cachedspusedforocclusionlowpasseffect&addsupportforuseofMultibandEQ(lowpassonbandAonly).UE4-FMODAudioComponentnowreuseseventinstancesuntiltheobjectisnolongerneededorRelease()iscalled.UE4-AddedsupportforUWP.Unity-AddedsupportforUnityv2017.1.Unity-AddedabuttonintheFMODmenuforRefreshingBankfiles.

    Fixes:

    StudioAPI-FixedscatterersoundsbeingprocessedbyFMOD::Geometry.StudioAPI-Fixedmulti-streameventsplayingoutofsync(introducedin1.09.01).LowLevelAPI-FixedChannelControl::setDelaybeingignoredifaddDSPwascalledimmediatelyafterit.LowLevelAPI-FixedpotentialcrashifcallingChannel::setPositionsoonafterSystem::playSoundwithpausedastrue.LowLevelAPI-FixedclickonChannel::setPaused(false)causedbyanon-zeroChannel::setPositionafterSystem::playSoundwithpausedastrue.LowLevelAPI-FixedpotentialcrashifcallingSystem::getRecordPositionwhiledisconnectinganaudiodevice.LowLevelAPI-FixFMOD_ACCURATETIMEnotloopingmod/s3m/xm/itfilesproperly,andmidifilesnotloopingproperlywithouttheflag.LowLevelAPI-FixedcrashwhenattemptingtoloadinvalidVSTfiles.UE4-FixcompileerrorbyaddingcategoriestoAnimNotifyvars.Unity-Switch-Fixed"unknownpointerencoding"errorwhenanexceptionoccurs.Unity-FixpluginpathforUWPbuilds.Unity-FixedpossiblecrashwhenusingGoogleVRplugin.Unity-FixEventEmitterSetParameternotworkingunlessparameterhadaninitalvaluesetineditor.

  • Notes:

    StudioAPI-Reducedmemoryusageforeventswithasmallnumberofinstances.LowLevelAPI-FMOD_CREATESOUNDEXINFO::initialseekpositionwillnowwrapifthevaluegivenislongerthantheFMOD::Soundlength.LowLevelAPI-Addeddocumentationtothetopoffmod_codec_rawtobemoreinstructionalforpluginwriters.UE4-AddedsupportforUE4.17.Unity-Devicespecificerrorswillnowcauseonlyasingleexceptiontobethrownandtheintegrationwillassumeno-soundmode.Switch-NowbuiltwithSDK1.7.0.XboxOne-NowbuiltwithMarch2017QFE3XDK.

  • 06/07/171.09.06-StudioAPIminorrelease(build88495)

    Features:

    StudioAPI-ImprovedperformancewhenalargenumberofEventInstanceshavebeencreatedbutnotstarted.LowLevelAPI-HTML5-Performanceincreasedby10%.

    Fixes:

    StudioAPI-Fixedabugwhereanasynchronousloopingmultiinstrumentwouldstopselectingnewplaylistentriesafterplayinganestedeventwhichitselfcontainsanasynchronousloopingmultiinstrument.StudioAPI-Fixedabugwhereaparametercouldtriggerparameterinstrumentsbeforehavingitsvalueupdatedbymodulatorswhenrestartinganeventinstance.StudioAPI-Fixedincorrectautomationinterpolationontransitiontimelineswithlead-outregions.LowLevelAPI-FixedDSPswithsidechaininputsincorrectlygoingidlewhenthemaininputisidlebutthesidechaininputisnot.LowLevelAPI-FixedthecompressorDSPnotplayingoutitsreleasecorrectlywhenitsinputsareidle.LowLevelAPI-RemovemainthreadstallfromSystem::playDSP(orplayingageneratorDSPviaStudioAPI).UE4-SequencerintegrationnowsupportspreviewingeventplaybackinaneditorviewportbyusingtheSequencertransportcontrols.ASequencersectionhasbeenaddedtothedocumentation.UE4-AddedAreBanksLoadedfuntiontoFMODStudioModule.Unity-EventsinEventBrowserwindownowinalpabeticalorder.Unity-SettingparametersonStudioEventEmitternolongergeneratesgarbage.

    Notes:

    LowLevelAPI-AddedcheckingtoSystem::mixerResumetoensurecalled

  • fromthesamethreadasSystem::mixerSuspend.XboxOne-NowbuiltwithOctober2016QFE3XDK.

  • 08/06/171.09.05-StudioAPIminorrelease(build87666)

    Features:

    LowLevelAPI-Switch-AddedsupportforHTCsocketstoallowcommunicationsbetweenFMODtoolsandruntimeviatargetmanager.EnableusingFMOD_NX_SetHTCSEnabled(TRUE).LowLevelAPI-XboxOne-AddedsupportforSystem::attachChannelGroupToPortwithFMOD_DURANGO_PORT_TYPE_MUSIC.

    Fixes:

    StudioAPI-FixedFMOD_ERR_INTERNALreturnedwhenloadingoldbankfilescontainingtransitiontimelineautomationofinstrumentvolumes.StudioAPI-Fixedbugwhereveryshortinstrumentswouldnotplaywhencrossfading.StudioAPI-MadechangestothelogicinEventDescription::isOneShotsothatitconsistentlyreturnstrueforeventswhichareguaranteedtofinishwithoutintervention,andfalseforeventswhichmayplayindefinitely.LowLevelAPI-FixedChannelControl::setMixLevelsInputnotworkingandupdateddocs.LowLevelAPI-FixedChannel::setLoopCountnotworkingwithverysmallstreams.LowLevelAPI-StrictererrorcheckingwhenloadingIMAADPCMwavfilestopreventapotentialcrashfrommalformeddata.LowLevelAPI-FixedpotentialcrashinChannelGroupoperationswhenaChannelfailedtoplayonitwithFMOD_ERR_SUBSOUNDS.LowLevelAPI-FixedConvolutionreverbpanningamonoIRwithastereoinputincorrectly.LowLevelAPI-FixedraceconditionswhensettingFMOD_DSP_SEND_RETURNID.LowLevelAPI-FixedacrashwithsomeMOD/S3M/XM/ITfiles.Introducedin1.09.00.LowLevelAPI-System::setDSPBufferSizewillroundtherequestedbuffer

  • sizeuptotheclosestmultipleof4topreventacrashwhensendingmeteringdatatostudio.LowLevelAPI-PS4-FixedGPUcomputecompatibilityissuewithSDK4.508.001.GPUcomputeisnowre-enabled.LowLevelAPI-Switch-ReducedthreadprioritytoavoidconflictwithProfiler.LowLevelAPI-Windows-FixedASIOoutputmodefailingtoinitializeifthedevicesrequiresabuffersizeof2048samples.Unity-FixedbankdirectorypathseparatorswhendevelopingacrossOSX&Win.Unity-FixedsimulatedAndroiddevicesproducingnosound.Unity-BankLoadExceptionnowdisplayerrormessagecorrectly.Unity-Fixedbankloadingandunloadingrefcountaccuracy.Unity-FixedMaceditorattemptingtoloadLinuxpluginswhenbuildingforLinuxplatform.Unity-Improveddetectionof3DEventInstancesthathaven'thadtheirpositionsetyet.UE4-FixedintegrationworkingwithUE4'sIWYUnon-monolithicheadersystem,fornowtheintegrationisstillusingtheoldPCHsystem.UE4-AddednewnativeAnimNotifyclass,oldonedidn'tworkoncodeprojects.UE4-Sequencerintegration.FMODeventscanbestartedandstoppedandeventparameterscanbecontrolledbyaddingcustomtrackstosequencer.UE4-Fixedmaxvorbiscodecsnotbeingsetcorrectly.UE4-Fixedfilereadersbeingaccessedfrommultiplethreads.

    Notes:

    UE4-AddedsupportforUE4.16.

    Notes:

    UpdatedGoogleVRplugintoversion0.4.0,pleasenotethereisaknowncrashwhenloadingthepluginonWindowsXP,Googleareawareandinvestigating.

  • 10/04/171.09.04-StudioAPIminorrelease(build86084)

    Fixes:

    StudioAPI-Fixeddelayedplaybackonstreamingsoundsinevents(introducedin1.09.03).StudioAPI-FixedAHDSRreleasenotworkingonsinglesoundsshorterthan100milliseconds.StudioAPI-FixedEventDescription::is3Dreturningtrueforeventsthatonlyhave2Dpanners.StudioAPI-SetprogrammersoundstoFMOD_LOOP_NORMALinternallyiftheywerenotcreatedthatway.StudioAPI-Fixedregressionintroducedin1.09.00whichallowedeventstoplayattheoriginbefore3dattributeswereupdated.StudioAPI-Fixedissuewherereverbtailwouldcutoffwhenalleventsonabusfinishedplaying.LowLevelAPI-FixedFMOD_DSP_TRANSCEIVERmakingchannelsaudiblethatweren'tsupposedtobe(introducedwithglitchfixin1.09.03).LowLevelAPI-FixedloopclicksonPCMsoundsifusingFMOD_DSP_RESAMPLE_CUBICorFMOD_DSP_RESAMPLE_SPLINE.LowLevelAPI-FixedFMOD_ADVANCEDSETTINGS::resamplerMethodbeingignored.LowLevelAPI-Fixedpluginunloadingformulti-descriptionlibrariespotentiallyfailingdependingonhowit'sunloaded.LowLevelAPI-Fixedstreamglitchwhengoingvirtualthenresuming.LowLevelAPI-Fixedvirtualvoiceslosingtheirloop/2d/3dstatus,andnotstayingvirtualifChannel::setModewasused.Introducedin1.09.00.LowLevelAPI-FixedFMOD_UNIQUEnotbeingacceptedifChannel::setModeorSound::setModewasused.(itcouldbesuccessfullyusedviacreateSound/createStream).LowLevelAPI-Fixedrarecrashinmixer,introduced1.09.00.LowLevelAPI-Switch-FixedFMOD_NX_THREADAFFINITYsocorescanbeORdtogethertoformamask.LowLevelAPI-PS4-GPUcomputedisabledduetoanincompatibilitywithSDK4.508.001.

  • LowLevelAPI-Windows/Mac-Re-enableSRSdownmixer80Hzhighpassfilterbydefault.AddFMOD_INIT_DISABLE_SRS_HIGHPASSFILTERinitflagtodisableit.FSBankAPI-FixedPSVitaAT9encodernotworkingwithcurrentlyavailableSonylibrary.FSBankAPI-Fixedfullscale32bitfloatwavfilesencodingincorrectly.

    Notes:

    StudioAPI-FMODexpectsprogrammersoundstobecreatedwithFMOD_LOOP_NORMAL.ThisisnowspecifiedintheFMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIESdocumentation.FSBankAPI-BuildinganFSBwithPSVitaAT9encodingnowrequires64bit.PS4-NowbuiltwithSDK4.508.001.Switch-NowbuiltwithSDK0.12.17.XboxOne-NowbuiltwithOctober2016QFE2XDK.

  • 20/03/171.09.03-StudioAPIminorrelease(build85359)

    Features:

    LowLevelAPI-Updatedthe/examples/dsp_customexampletoincludealotmorefunctionalityincludingparameters,andcaptureofwavedata.LowLevelAPI-Addfmod_reduced.jsforreducedfunctionality,butalsoreducedsize.LowLevelAPI-Switch-Addedsupportforsettingthreadaffinity.StudioAPI-Reducedsizeoffmodstudio.jsand.memfiles.

    Fixes:

    StudioAPI-Fixedeventdopplersettingsnotbeingappliedtosoundsspawnedbyscatterer.StudioAPI-FixedbusandVCAhandlesnotbeingsetupproperlyinStudio::Bank::getBusListandStudio::Bank::getVCAList.StudioAPI-FixedcrashescausedbystoppingeventsthatareroutedintoabuswithinstancelimitingenabledwhentheyareintheFMOD_STUDIO_PLAYBACK_STARTINGstate.StudioAPI-Fixedtempoandmarkereventcallbacksnotbeingfiredwhenthetimelinecursorisinthelead-inorlead-outregionofatransitiontimeline.LowLevelAPI-FixedglitcheswithTransceiverDSPafterinputsgoidle.LowLevelAPI-FixChannel::setPosition(pos,FMOD_TIMEUNIT_MODORDER)notworkingwhenplayingpaused.LowLevelAPI-Fixedshortstreamscreatedasnon-loopingthenswitchedtoloopingviatheChannelAPInotloopingseamlessly.LowLevelAPI-FixedDSPpluginversion>=109dataparametersotherthan3DattributesnotapplyingifFMOD_INIT_3D_RIGHTHANDEDisused.LowLevelAPI-FixedrarecrashinFMODPannerDSP.Introducedin1.09.00.LowLevelAPI-Re-FixMOD/S3M/XM/ITfilecrashwithsamplesthathave0length,for1.09only.

  • LowLevelAPI-FixedpotentialmemoryleakifSystem::initreturnedanerror.LowLevelAPI-FixFMOD_ACCURATETIMEnotloopingamodfileproperly,andnotseekingcorrectlywithFMOD_TIMEUNIT_MODORDER.LowLevelAPI-HTML5-LoadingFSBsoundsdidnotworkproperly.LowLevelAPI-Windows-Fixed5.1->stereoSRSdownmixcausinglackofbass.LowLevelAPI-Windows-FixFMOD_INIT_PREFER_DOLBY_DOWNMIXnotworking.FSBankAPI-FixcrashifFSBANK_INIT_GENERATEPROGRESSITEMSisnotused.Unity-Removederrorwhenpluginfieldisaddedbutempty.UE4-Removederrorwhenpluginfieldisaddedbutempty.

    Notes:

    UE4-AddedsupportforUE4.15.

  • 15/02/171.09.02-StudioAPIminorrelease(build84334)

    Fixes:

    Unity-RemoveifdeffromEnforceLibraryOrderasitisn'tharmfulforstaticlibplatformstocallGetStats.UE4-OcclusioncannowuseMultibandEQinsteadofLowpassfilter.LowLevelAPI-FixcrashwhenconnectingtoFMODProfiler.exeandthereisacircularconnectionLowLevelAPI-FixglitcheswithTransceiverDSPafterinputsgoidle.LowLevelAPI-FixChannel::setPosition(pos,FMOD_TIMEUNIT_MODORDER)notworkingwhenplayingpaused.

  • 09/02/171.09.01-StudioAPIminorrelease(build84153)

    Features:

    LowLevelAPI-AddedFMOD_DSP_STATE_FUNCTIONS::getlistenerattributestotheDSPpluginAPItoquerythecurrentlistenerattributes.Unity-AddedsupportforRigidbody2Din3Dattributesettingsandintegrationscripts.Unity-AddedsupportforObjectEnable/DisableonEventEmitterandParameterTriggerscripts.UE4-AddedGetLengthfunctionforblueprintsthatreturnstheeventlengthinmilliseconds.UE4-Improvedineditorprofilingstats.

    Fixes:

    Unity-FixedcompatibilitywithUnity4.6&4.7forOSXandIOS.Unity-Fixed"filenotfound"errorwhensettingsassetiscorruptUnity-Fixedset3DAttributesambiguity.Unity-FixednotbeingabletocopyReadOnlybanksintoStreamingAssets.Unity-FixedeventinstanceleakinUnityPlayOneshotAttachednotreleasing.Unity-SpecifiedversiontocheckforWiiUBuildTargetforearlyUnity5.UE4-FixedXboxOnedelayloaderrornowthatUE4handlesit.UE4-Android-AddedARM64support.StudioAPI-AHDSRmodulatorcurveshapesnowworkcorrectly.InpreviousversionstheenvelopewasinterpolatedlinearlyregardlessoftheshapedisplayedintheUI.StudioAPI-Fixedloopingsinglesoundsinanasyncmultisoundbeingcut-offwhenthemultisoundisun-triggered.LowLevelAPI-FixedChannel::setReverbPropertiesnotresettingreverbconnectiontoanewtailDSPwhenturningwetmixoffandon.LowLevelAPI-Ifthesystemisinitializedinright-handedmode,FMODwillnowswaptoleft-handedwhenpassingattributesintoplugins.This

  • onlyappliestopluginsrebuiltagainstthisversion,oldpluginsremainunswapped.LowLevelAPI-FixMOD/S3M/XM/ITfilecrashwithsamplesthathave0length.LowLevelAPI-Fixedsomepotentialcrasheswhenrunningoutofmemory,thesewillcorrectlyreturnFMOD_ERR_MEMORYnow.LowLevelAPI-Win-FixedWASAPIrecordingdeviceenumerationtakingacoupleofsecondsafterSystem::initbeforebeingcorrect.LowLevelAPI-Win-FixedpotentialerrorreturnedfromSystem::updateifdeviceisunplugged.LowLevelAPI-MIDI-FixedSound::set/getMusicChannelVolumereferringtowrongtrackindicesratherthanjustanormal0-15trackindex.LowLevelAPI-MIDI-FixedChannel::setPositioncausinglouddrumbangnoiseafterseek

    Notes:

    StudioAPI-Whenloadinglegacybankswithloopingsoundsnestedinmultisounds,themultisoundissettocut-offallsoundswhenuntriggered,includingnon-loopingsounds.Thisisachangeinbehaviourcomparedtoearlierversionswhereonlyloopingsoundswerecut-off.LowLevelAPI-DSPpluginAPIversionhasbeenincreased,formaximumcompatibilitypluginwritersshouldonlyrebuildagainstthisversioniftheyneedthegetlistenerattributesfeature.Oldpluginsarestillsupported.Switch-NowbuiltwithSDK0.12.10

  • 01/12/161.09.00-StudioAPImajorrelease(build82164)

    Important:

    AddedsupportfortheNintendoSwitchplatform.

    Features:

    StudioAPI-Addedsupportformultiplelistenerweights,withStudio::System::setListenerWeightandStudio::System::getListenerWeight.Thisallowslistenerstobefadedinoroutsmoothly.StudioAPI-ProfilinguseslessCPUandmemory.StudioAPI-AddedFMOD_STUDIO_INIT_LOAD_FROM_UPDATEtodriveallloadingfromStudio::System::updateratherthanthebankandresourceloadingthreads.Mainlyusedinnon-realtimesituations.StudioAPI-AddedabilitytorunreplaysatfasterthanrealtimespeedusingFMOD_STUDIO_COMMANDREPLAY_FAST_FORWARD.StudioAPI-AddedStudio::EventInstance::setReverbLevelandStudio::EventInstance::getReverbLevel.StudioAPI-Supportforautomationofmodulatorproperties.LowLevelAPI-Improvedmemoryusewhenloadingsoundswithnames.LowLevelAPI-Addednewefficientmultibandequalizer(FMOD_DSP_TYPE_MULTIBAND_EQ)featuring5toggleablebandswithvariablerollofflow/highpass,shelf,peaking,band-pass,all-passandnotchmodes.LowLevelAPI-AddedloggingfunctiontotheDSPpluginAPI.UseFMOD_DSP_LOGhelpermacrofromaDSPcallback.LowLevelAPI-AddedFMOD_DSP_STATE_FUNCTIONS::getuserdatatotheDSPpluginAPI.UseFMOD_DSP_GETUSERDATAhelpermacrofromaDSPcallback.FSBankAPI-AddedabilitytopassNULLastheFSBfilenameforFSBank_BuildcausingtheFSBtobebuiltinmemory.UseFSBank_FetchFSBMemorytogetaccesstothedataoncethebuildhascompleted.

  • Fixes:

    StudioAPI-Fixedincorrectplaybackvolumeforinstrumentsandplaylistitemswhosevolumepropertyissettoanon-zerodBvalue.

    Notes:

    LowLevelAPI-IncrementedPluginSDKversionforDSPplugins.Dynamiclibrarypluginsbuiltwithearlierversionswillcontinuetoload.LowLevelAPI-IncrementedFMOD_CODEC_WAVEFORMATversion.Codecsthatprovidenamesmustkeepthenamememorypersistentforthelifetimeofthecodec.LowLevelAPI-IncrementPluginAPIversionforOutputplugins.DynamiclibraryOutputPluginsmustberebuilt.LowLevelAPI-FMOD_DSP_TYPE_LOWPASS,FMOD_DSP_TYPE_LOWPASS_SIMPLE,FMOD_DSP_TYPE_HIGHPASS,FMOD_DSP_TYPE_HIGHPASS_SIMPLEandFMOD_DSP_TYPE_PARAMEQareconsidereddeprecatedandwillberemovedinthefuture.UsethenewFMOD_DSP_TYPE_MULTIBAND_EQinsteadwhichhastheperformanceof"simple"effectswithfullfeaturedquality.LowLevelAPI-ChangedreverbwetmixtosendfromthefaderDSPofaChannelGroup.PreviouslyitsentfromtheheadDSP.Noweffectsplacedpre-faderwillapplytothesignalsenttothereverb,whileeffectsplacedpost-faderwillnot.LowLevelAPI-ChannelGroupreverbwetlevelisnowscaledbythegroup'seffectiveaudibility.LowLevelAPI-ChannelGroupreverbnolongerautomaticallydisablesreverbonitschildchannelswhenthewetlevelissettonon-zero.LowLevelAPI-Channel::setReverbPropertiesnowallowssettingthewetlevelbeforethespecifiedreverbinstancehasbeencreated.LowLevelAPI-ChannelControl::addDSPandChannelControl::removeDSPmanagestandardDSPconnections(FMOD_DSPCONNECTION_TYPE_STANDARD)tomaintainthemixerhierarchy.Otherconnectiontypes(FMOD_DSPCONNECTION_TYPE_SIDECHAIN,FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN,andnow

  • FMOD_DSPCONNECTION_TYPE_SEND)areleftundisturbed.LowLevelAPI-FMOD_INIT_MIX_FROM_UPDATEwillnowdirectlyexecutethemixerfromSystem::updateinsteadoftriggeringthemixtohappeninanotherthread.StudioAPI-Incrementedbankversion,requiresruntime1.09.00orlater.StudioAPI-Latestruntimesupportsloadingoldbankversionsfrom1.03.00.StudioAPI-Studio::Bus::setFaderLevel,Studio::Bus::getFaderLevel,Studio::VCA::setFaderLevelandStudio::VCA::getFaderLevelisnowcalledStudio::Bus::setVolume,Studio::Bus::getVolume,Studio::VCA::setVolumeandStudio::VCA::getVolume.StudioAPI-Studio::EventInstance::getVolume,Studio::EventInstance::getPitch,Studio::EventInstance::getParameterValue,Studio::EventInstance::getParameterValueByIndex,Studio::Bus::getVolume,Studio::VCA::getVolumenowhaveanadditionalargumenttogetthefinalvaluewhichincludesautomationandmodulation.StudioAPI-TherequiredalignmentforStudio::System::loadBankMemoryhasbeenaddedastheconstantFMOD_STUDIO_LOAD_MEMORY_ALIGNMENT.StudioAPI-Eventinstancesnowdisablereverbontheirinternalchannels,forallglobalreverbinstances.Previouslyonlydidsoforreverbinstance0.UseStudio::EventInstance::setReverbLeveltocontrolthereverbmixforthewholeeventinstance.StudioAPI-Disconnectedsidechainmodulatorsarenowinactive.Previousbehaviorwastofallbacktomonitoringtheevent'smastertrackoutput.LowLevelAPI-FMOD_DSP_RELEASE_CALLBACKisnowcalledfromthemainthreadLowLevelAPI-UnimplementedChannelControl::overridePanDSPfunctionhasbeenremoved,alongwithFMOD_CHANNELCONTROL_DSP_PANNERenumvalue.LowLevelAPI-PS3-Removedoldopt-inFIOSsupportviaFMOD_PS3_EXTRADRIVERDATA.NewrecommendedapproachistouseFMOD_FILE_ASYNCREAD_CALLBACKandsetappropriatedeadlinesbasedonFMOD_ASYNCREADINFO::priority.LowLevelAPI-XboxOne-OptimizedXMAdecodingperformanceandremovedtheACPthread.LowLevelAPI-PS4-ImprovedAT9decodingperformance.FSBankAPI-Addedsupportforsourcedataasamemorypointerinsteadoffilename.

  • Documentation-SomeFMOD_DSP_PAN_SURROUNDenumschangedtoFMOD_DSP_PAN_2Dforclarity.

  • 01/12/161.08.15-StudioAPIminorrelease(build82163)

    Features:

    PS4-AddsupportforSystem::getOutputHandle,toreturnsceporthandle.

    Fixes:

    UE4-FixmissingpluginerrorwhenbuildingonMac.

    UE4-Fixedcompatibilitywith4.14.Unity-FixedOSXworkingwithunifiedlibrary.Unity-FixedWiiUcopyingbankserror.Unity-FixedXboxonedllmetafilesmissingplatformtarget.Unity-Fixedduplicatedllcopyingbuilderroronsomeplatforms.Unity-Addednullchecktostoperrorbeingthrownwhennoeventassigned.Unity-FixineditoroutofboundsexceptioninRuntimeManager.LowLevelAPI-AllowDSP::setParameterDatawithnulldataand0lengthtofreeconvolutionreverbimpulseresponsedata.LowLevelAPI-Fixedshortloopingstreamsplayingsomeofthestartwhenswitchedtonon-loopingviatheChannelAPI.LowLevelAPI-FixedFMOD_CREATESOUNDEXINFO::pcmsetposcallbackgettingwrongsoundpointerpassedtoitwithastream.StudioAPI-Fixedincorrectparametervaluesbeingpassedtonestedeventswhenvalue"hold"isbeingused.StudioAPI-PS3-FixpotentialcrashwiththenewChannelMixeffect.FSBankAPI-FixedencoderbugwithFADPCMcausingoccasionalclippingatplayback.

    Notes:

    FSBankAPI-FSBs/BanksmaynotbebinaryidenticaltopreviousreleaseduetoFADPCMencoderbugfix,howeverfullcompatibilityismaintained.

  • 20/10/161.08.14-StudioAPIminorrelease(build80900)

    Fixes:

    UE4-Fixforcrashwhenusing"ValidateFMOD"menuitem

    Notes:

    PS4-NowbuiltwithSDK4.00XboxOne-Addedbetterlogginganddocumentationtodescribeanincorrectlyconfiguredappxmanifestregardingmicrophonerecording.

  • 04/10/161.08.13-StudioAPIminorrelease(build80479)

    Fixes:

    StudioAPI-Fixedpotentialcrashafterthefollowingsequenceofactions:loadmasterbank,trytoloadmasterbankagainandfailwithFMOD_ERR_EVENT_ALREADY_LOADED,unloadmasterbank,reloadmasterbank.LowLevelAPI-FixcircularDSPconnectioncausinghangincertainsituations.Unity2-Fixissueswithmulti-objecteditingofemitters.

  • 22/09/161.08.12-StudioAPIminorrelease(build80229)

    Features:

    Unity2-AddedabilitytooverrideminimumandmaximumdistanceforEventemitters.Unity2-Addedsupportformultiplelisteners.StudioAPI-Addedsupportforautopitchatminimum.StudioAPI-Addedsupportfortheglobalmasterbusbeingduplicatedacrossbanks.

    Fixes:

    StudioAPI-Fixautopitchcuttingoffatzeroforparameterwithminimumvaluethatislessthanzero.StudioAPI-FixeventswithatranscievereffectnotallowingtheeventtostopAndroid-FixedcrashwhenloadingFSBsorBanksthatcontainasoundthatisn'tmono,stereo,5.1or7.1.Android-Fixedcompatibilityissuewithsomedevicesintroducedinpreviousreleaseduetor12bupdate.PresentsasaruntimelinkererrorwhenloadingtheFMODlibrary,failingtolocate__aeabi_atexit.iOS-Fixedstutteringduringfadeoutwhendevicescreengoestosleep.LowLevelAPI-FixFMOD_DSP_TRANSCEIVERmemorystomp.LowLevelAPI-Fixchannelsplayingatincorrectpitch.Introducedin1.08.10.

    Notes:

    StudioAPI-Incrementedbankversion,requiresruntime1.08.00orlater.StudioAPI-Latestruntimesupportsloadingoldbankversionsfrom1.03.00.LowLevelAPI-ImprovedvalidationforChannelGroup,DSPandSoundhandles,detectsinvalidpointersandusageafterrelease.

  • 08/09/161.08.11-StudioAPIminorrelease(build79819)

    Features:

    LowLevelAPI-PS3-AddedsupportforFMOD_DSP_CHANNELMIX.Unity2-RespectGameViewmutebutton.

    Fixes:

    FSBank-Fixcrashon64-bitwhenencoding16kHzor24kHzsourcesusingVorbisatlowqualitysettings.LowLevelAPI-FixFMOD_SOUND_PCMSETPOS_CALLBACKgettinginvalidpositionvaluewhenasoundopenedwithFMOD_OPENUSERloops.LowLevelAPI-Android-Fixedcrashonloadwitholddeviceswhenusingarmeabi.Unity2-FixCREATESOUNDEXINFOnotgettingmarshalledproperly.

    Notes:

    Android-NowbuiltwithNDKr12b.Android-MinimumAndroidversionisnowAPIlevel9duetoNDKr12bdeprecatingolderversions.

  • 22/08/161.08.10-StudioAPIminorrelease(build79252)

    Features:

    StudioAPI-Improvedperformanceofsidechainmodulator.LowLevelAPI-ImprovedChannelControl::setPitchaccuracybetweenDSPclockandtheunderlyingcodecdecodingspeed.Unity2-Addedoptionforplay-in-editortoreflecttheactivebuildtargetforloadingbanks.

    Fixes:

    LowLevelAPI-FixederrortryingtocreateaReturnDSPwhenthesystemformatissettoFMOD_SPEAKERMODE_RAW.LowLevelAPI-FixedFFTDSPcrashifwindowsizeissmallerthanDSPblocksize.LowLevelAPI-Removedspuriouswarningmessageswhenloadingpluginsonsomeplatforms.LowLevelAPI-Android-TweakedOpenSLautodetection,nowrequiresdevicetospecifylowlatencyandablocksize

  • channelcountwhenpassedFMOD_SPEAKERMODE_DEFAULT.NowworksevenifthesystemformatissettoFMOD_SPEAKERMODE_RAW.UE4-Canberecompiledwith4.13pre-release.Documentation-AddeddocumentationforFMOD_DSP_PANenums.

  • 01/08/161.08.09-StudioAPIminorrelease(build78489)

    Features:

    LowLevelAPI-PS4-AddsupportforsocialscreenaudiototheportsAPI.StudioAPI-AddedStudio::EventInstance:setListenerMaskandStudio::EventInstance::getListenerMask,thataddstheabilitytospecifywhichlistenersapplytoeacheventinstance.Unity2-Warningisnowproducedwhenplayingineditorifthepositionofa3Deventisnotset.UE4-Addedblueprintfunctionstoseteventproperties.

    Fixes:

    StudioAPI-Fixedcaseofindeterminismwhenbuildingbanksthatcontaineventswithautomationcurves.LowLevelAPI-FixedFMOD_OUTPUT_OBJECT3DINFO::gainsoitonlyincludesdistanceattenuationnotbusgain(whichisnowpre-appliedtoFMOD_OUTPUT_OBJECT3DINFO::buffer.LowLevelAPI-FixedchannelmixDSPvolumenotalwaysbeinginitialized.LowLevelAPI-WiiU-FixedpotentialcrashduringSystem::initifSystem::setDriverorSystem::setOutputhasbeencalled.LowLevelAPI-Fixhangonnetstreamswhentheconnectiontimesout.LowLevelAPI-Linux-FixFPUcontrolwordofthecallingthreadbeingmodifiedwhentheFMODdynamiclibraryisloaded.LowLevelAPI-Android-FixedpotentialcrashifFMODisn'tloadedwithSystem.loadLibrary,nowapropererrorwillbeissued.FSBankAPI-FixedFADPCMnotloopingseamlesslyfornon-zerocrossingloops.UE4-Fixedpluginloadingassuminga"lib"prefixforpluginsonAndroid,Mac,LinuxandPS4.Nowpluginloadingwillattempttoloadthenamewithandwithoutaddingalibprefix.UE4-RespectFApp::IsUnattendedformessage-boxerrors.UE4-FixeddeprecationwarningsaboutAttachTousage.

  • Unity2-FixerrorswhenbanksourcefilesareupdatedwhileEventBrowserpreviewisplayingorpaused.Unity2-FixunnecessarycopyingofBankfilesinOSXeditor.

    Notes:

    LowLevelAPI-Linux-Removedlimitof32deviceswithALSAoutputmode.LowLevelAPI-IncrementedAPIversionofOutputplugins.Dynamiclibrarypluginsbuiltwithearlierversionsof1.08willcontinuetoload.

  • 14/07/161.08.08-StudioAPIminorrelease(build77846)

    Features:

    UE4-bMatchHardwareSampleRatewillusethesystemdefaultformattoavoidexcessivelymatchingtheoutputrateonmobiledevices.UE4-AddedbLockAllBuseswhichwillforceallbusestobecreatedatstartup,ratherthanondemand.

    Fixes:

    StudioAPI-Fixedloopingsoundsinamultisoundplaylistfailingtostopifthemultisounditselfisnon-looping.StudioAPI-Fixedrarecrashcallingthefollowingfunctionswhilethebankcontainingtheeventisunloading:Studio::EventInstance::getDescription,Studio::EventInstance::getParameter,Studio::EventInstance::getParameterValue,Studio::EventInstance::setParameterValue,Studio::EventInstance::setParameterValueByIndex,Studio::EventInstance::triggerCue,Studio::ParameterInstance::getDescriptionandStudio::ParameterInstance::setValue.StudioAPI-Fixedsharedeventsbecominginvalidatedwhenoneofthebankscontainingthemisunloaded.CouldalsomanifestasStudio::EventInstance::getDescriptionfailingwithFMOD_ERR_INTERNAL.StudioAPI-FixedcrashthatcouldoccurwhenusingFMOD_STUDIO_INIT_SYNCHRONOUS_UPDATEandcallingStudio::System::updatefrommultiplethreadsatthesametime.StudioAPI-Increasedschedulinglookaheadtimetoensuresampleaccuratetimelineschedulingevenifthereisanoutputstall.StudioAPI-FixedcrashthatcouldoccurwhenimproperlycallingStudio::Bus::getChannelGroupwithoutfirstcallingStudio::Bus::lockChannelGroup,ifthebuswasbeingdestroyedasthecallwasmade.

  • StudioAPI-FixedrarecrashcallingthefollowingfunctionswhilethemasterbankcontainingthebusorVCAisunloading:Studio::System::getBus,Studio::System::getBusByID,Studio::System::getVCAandStudio::System::getVCAByID.StudioAPI-FixedraretimingissuewhereStudio::System::getEventwouldsucceedbutStudio::EventDescription::createInstancewouldfailwithFMOD_ERR_INTERNAL,ifcalledjustasthebankcontainingtheeventfinishedloading.StudioAPI-FixedrarehanginStudio::System::getBankCountwhencalledwhilebanksarecurrentlyunloading.LowLevelAPI-FixedrareglitchatthestartofXMAplaybackcausingnon-seamlesslooping.LowLevelAPI-Fixedrarehangonshutdownwhenusingmultiplesystems.LowLevelAPI-Fixstreamswithanunknownfilelengthremainingintheplayingstateafteranendoffileisencountered.LowLevelAPI-Windows-EnumerationofrecorddeviceswillnowreflectachangeofdefaultdevicewithWASAPIoutput.LowLevelAPI-Linux-EnumerationwillnowcorrectlydisplayGUIDsandspeakermodesforALSAoutput.LowLevelAPI-Linux-FixedpotentialcrashifbothPulseAudioandALSAaremissing/unavailable.Unity2-FixpluginloadingonLinuxstandalonebuilds.Unity2-Fixscriptcompilationerrorsinstandalonebuilds.Unity2-FixEventBrowserpreviewofeventswithbuilt-inparameters.Unity2-FixmissingtvOSfiles.

    Notes:

    LowLevelAPI-SignificantlyreducedmemoryconsumptionwhenusingFMOD_DSP_FFT.PS4-NowbuiltwithSDK3.508.101UE4-UpdatedOculuspluginto1.0.4.

  • 27/06/161.08.07-StudioAPIminorrelease(build77241)

    Features:

    FSBankAPI-AddedsupportforLinux.Unity2-LiveUpdateandDebugOverlaycanbesettoonlybeenabledinstandalonebuildswhenthedevelopmentbuildoptionisset.Unity2-AddMuteAllEventsandPauseAllEventsfunctionstotheRuntimeManager.Unity2-Audiowillnowpausewhentheapplicationpauses.UE4-AddedMixerSuspendandMixerResumeblueprintfunctions.UE4-AddedIsBankLoadedblueprintfunction.

    Fixes:

    StudioAPI-FixedStudiocommandbufferassertandcrashthatcouldoccurwhenusingFMOD_STUDIO_INIT_SYNCHRONOUS_UPDATEinconjunctionwithmultiplethreads.LowLevelAPI-Fixcrashwhenclosingasystemwithamulti-pluginDLLstillloaded.LowLevelAPI-iOS/Android-Improvedaudiostabilitywhenmixerthreadisoverloaded.FSBankAPI-FixedcallingconventionlinkererroronWindowsinFSBankLibheader.FSBankAPI-Fixedissuewhenpassingduplicatesourcefileswithdifferentencodingsettingswouldcausecachefileconflicts.

    Notes:

    Unity2-Renamed"LevelStart"and"LevelEnd"triggersto"ObjectStart"and"ObjectDestroy"tomoreaccuratelyreflectwhenthetriggersoccur.

  • 17/06/161.08.06-StudioAPIminorrelease(build76937)

    Features:

    Unity2-AddedframeworkforregisteringnativepluginsoniOSandtvOS.Unity2-AddedsupportforimportingStudioBanksasTextAssetssotheycanbeaddedtoUnityAssetBundles.

    Fixes:

    LowLevelAPI-Fixedcrashonshutdown,aftercreatingmultiplesystemsandsettingasystemcallback.LowlevelAPI-PS4-FixissueswithcallingFMOD_Orbis_GetPadVolume()immediatelyafteropeningthecontrolleraudioport.

  • 15/06/161.08.05-StudioAPIminorrelease(build76824)

    Features:

    StudioAPI-AddedStudio::EventDescription::isSnapshot.Unity2-Added"PreloadSampleData"checkboxtoEventEmittertoreducelatencywhenemittersaretriggeredforthefirsttime.Unity2-AddedscriptexampletoshowhowtobuildanasynchronousloadingscreenthatincludesloadingFMODBanks.

    Fixes:

    StudioAPI-FixedStudio::EventDescription::isOneshot()incorrectlyreturningtrueforsnapshots.LowLevelAPI-FixFMOD_ADVANCEDSETTINGS::maxADPCMCodecsnotbeingapplied.LowLevelAPI-FixcrashwhenusingCreateSoundfrommultiplethreads(includingFMODAsyncloadingthreads).Unity2-FixissueswhenbankfileintheUnityprojectStreamingAssetsfolderhaveadifferentcasetothebanksintheStudioproject.Unity2-Fixissueswheneditorlogfilecannotbeopenedbecauseit'sreadonly.Unity2-Ifthe"LoadAll"optionsareselectedintheFMODSettingsthenthemainthreadwillnowblockuntilit'scomplete.UE4-FixforOnEventStoppedcallbackfiringrepeatedlyiftriggerstheinstancetoplayagain.

    Notes:

    LowLevelAPI-AllSystem,ChannelControl,ChannelGroup,Channel,andDSPAPIfunctionscheckforNaNandINFfloatsandreturnFMOD_ERR_INVALID_FLOATifdetected.StudioAPI-AllAPIfunctionscheckforNaNandINFfloatsandreturnFMOD_ERR_INVALID_FLOATifdetected.StudioAPI-AllAPIfunctionswithoutputparametersnowclearthose

  • valuesinthecaseofanerror.Previouslysomevaluesmayhavebeenleftuninitialized.Inthecaseofanerror,intandfloatoutputsaresetto0,booloutputsaresettofalse,andpointersaresettoNULL.Structuresareclearedtozeros,andstringbuffersaresettotheemptystring.

  • 25/05/161.08.04-StudioAPIminorrelease(build76196)

    Features:

    StudioAPI-Addedruntimesupportforstealquietestpolyphony.LowLevelAPI-Improvedperformancewhenconnect


Recommended