2022 Audio libraries

It is 2022 , and I was wondering what audio libraries people use with Monogame to develop games.
I am having a hard time trying to decide what to use due to some requirements

  • not interested in MP3 format due to licensing
  • be able to loop or positions music tracks at precise positions so I can do cross fades, advance effects like low pass filters, etc
  • work on desktop platforms (Win,Linux,Mac) in OpenGL

So here is my list so far

  • OpenAL - seems to be very good , source code available in C++, but it is quite old from 2007? I am not quite sure how old was the last update, so in the future we may have compatibility issues
  • OpenAL Soft - software implementation of OpenAL but as per documentation doesn’t support mp3 or ogg (seems to be very old too )
  • fMOD - seems to be good , lots of updates, but there is licensing and logo in all games to consider once you reach certain revenue thresholds, (I do not want to worry or mess with this kind of things).
  • Standard Monogame audio manager with XACT - ogg, wav and compressed audio , not very versatile and limited functionality for looping audio and control of the audio
  • NVorbis decoder - found at GitHub - NVorbis/NVorbis: C# Ogg Vorbis decoder
  • MonoSound - just found this library on 2022/10/26 @ NuGet Gallery | MonoSound 1.5.2 , seems to have to some effects and supports many file types
  • SoLoud - 2022/10/28 - not exactly a C# monogame library but it is a library that can be used by Monogame as sound manager, it is free and has tons of effects and capabilities at SoLoud , this got me really excited because you can apply a lot of effects at runtime and also can do streaming of audio, you can also seek a specific position so it can be used for loops of music, still I need to test more but I feel it is a very good alternative solution. Not sure if this will run on mobile, Linux or iOS.
2 Likes

Just use FMOD. Licensing is not that bad and have only gotten better over time. Adding an extra logo is no big deal and when you actually have to pay for it you’ll have plenty of cash from your game’s earnings. And the thing is stupidly powerful, especially if you use FMOD Studio. Monogame’s audio is straight up hot garbage, better just pretend it does not exist. There is also WWISE, but I am not aware of any good C# ports. And OpenAL sounds like a lot of work.

I just updated my own FMOD library to the latest everything, it does not support mac, but you can add it yourself with relative ease.

I’m using NVorbis (ogg) GitHub - NVorbis/NVorbis: C# Ogg Vorbis decoder
Which I think is supposed to work on Linux and Mac but I have only built on windows.

Thanks you.

I have updated the list above, I started testing SoLoud and it is very powerful library.

How it went so far?

I am currently in the process of investigating different audio libraries as well. SoLoud is one I want to play around right now. There was no updates to it in the last 2 years and not sure how stable its overall state is … but sound is something which shouldn’t change so much … the premade c# wrapper tho needs a bit of tinkering, it’s a bit messy with (wrong) datatypes and such

FMOD is surely nice and all but maybe a bit of overload for what I need (basically fading and loading dynamically) - I may fall back to it when everything else doesnt work out but I would rather omit any neccisities that come with it (splashscreen etc) - would most likely go that route if the budget would be available to just license it.

Was also thinking about just using native XAudio2 as this is available right away by using the SharpDX - I am a little bit trapped on DX anyway, so that is no big deal in my case (I guess) - still feels odd to do something knowing it wont work ever anywhere else …

Haven’t checked out MonoSound yet - but yea, found it in NuGet.

So yea - just joining you in checking out Audio Libs :slight_smile:

1 Like

So far I’ve been using SoLoud and it is pretty good for the kind of games I am making, I will releasing a game using Monogame with SoLoud next month. FMOD is overkill for me, it is good but it costs money and have many requirements that I do not want to comply, since I started with 0$ I am working in the best way I can.

SoLoud by itself works pretty well but you will have to make something on top to match what XACT was doing before, but from capability perspective it covers all my needs at the moment. I would recommend you to test it and see if it works for you. Check the demos to see if that provides what you need.

About MonoSound, I found bugs and couldn’t fix them, also I couldn’t find a way to make it do what I wanted, so I dropped it.

1 Like

yea I am currently using SoLoud in Exipelago. I actually do all the fading between sfx etc on my own anyway, so I am not missing a lot here. I mainly want the ability to use several mixers/bus and load audio without the ContentManager … of course, if I would work with external sound designers, FMOD would be the way to go providing a much more complex “audiorama”.

SoLoud works without big hassle, seems to be easy on performance. Will find out at a later point how it scales with more sfx - I especially like the licencing stance of the author, which is clear, to the point and without questionmarks.

That’s the main reason I am also using it. Simple, free, and no need to worry with license fees.
Once I really test its maximum load in my next game which I am planning to release by end of this month.

Has anyone tried the dynamic reverb thats in monogame. I see it in the internals but havent found a sample or the explosed apis. It appears to be implemented for XACT and on non DX platfroms, im curious about windows , and android for soundeffectinstance on a short wav file like a bullet shot in a cave or something. applying reverb to different sounds with the parameter for wet/dry or room size can be tricky . i was uiing audacity before and testing carefully but then i only have w in-cave and outside versions of the sound. be nice to do it dynamically measure around the character and apply it… I dont use the content manager i just load the WAV file as an embedded resource now.