SoLoud is an easy to use, free, portable c/c++ audio engine for games.
Zlib/LibPng licensed. Portable. Easy.
Official site with documentation can be found at: http://soloud-audio.com
Free, easy, portable audio engine for games
Home Page: http://soloud-audio.com
License: Other
SoLoud is an easy to use, free, portable c/c++ audio engine for games.
Zlib/LibPng licensed. Portable. Easy.
Official site with documentation can be found at: http://soloud-audio.com
Try to figure out whether it's possible to get SoLoud to work through emscripten. May require new features in Emscripten to work.
Currently, SoLoud has two ways of handling wave data: completely uncompressed to memory, or completely streamed off disk. An intermediary approach could also be useful, where compressed data is in memory and is decompressed on the fly. In this context, raw 16 and 8 bit audio is also considered to be "compressed".
Since the panning volumes only change once per audio buffer, it produces audible clicks. Add small ramps to fix this. (Might simplify the mixer because after this we might not need to evaluate volume faders once per sample).
Add methods to get the length of a wave source.
Research whether making back-ends for sfml and allegro makes sense, and implement them if there's a chance of getting low latency
Need to be able to trigger sounds at a better accuracy than at the start of a sound buffer. Use case: shmup where lots of things are shooting and triggering sounds. Currently most of the sounds will just overlap.
Such as darkbasic, glbasic, blitzmax, etc. I'll need people who use those languages to help with this.
Make an emscripten-friendly build mode.
Implement loop points to audio. Currently looping always jumps to the beginning of the stream.
Hi,
would it be possible to get a simple microphone recording plugin?
I suggest some API like:
bool record_start( );
AudioSourceInstance* record_stop(); // no idea about the return value - but it would return a buffer that you can immediately play or analyze.
One of the requested features is a DLL interface, mainly so that SoLoud could be used from other languages than c++. Creating the DLL requires a plain "C" interface. The "C" interface could be largely autogenerated by parsing the header files and generating the glue code. Some bits, like custom audio sources, are either harder or impossible, but most of SoLoud's functionality should wrap into a "C" interface rather nicely.
The wav/wavstream classes have some "read file from memory pointer" functionality, this should probably be generalized to reduce copypasta.
My fear with this is that this move will turn soloud more into one of those feature creep monsters and will be tweeting its status in a couple years..
Looks like soloud_bus.h is missing (probably .cpp too)
The codegen should also parse a template file and generate custom output to make generation of various non-c wrappers easier.
Implement direct /dev/dsp back-end on Linux.
The author of sfxr gave us permission to re-license sfxr under zlib/libpng license, so do so and integrate sfxr as an audio source.
Instead of fixed max number of voices, soloud probably should sort the sounds by audibility and only play the N most audible.
It makes more sense to "play" hundreds of audio loops in positional audio, but most of those are not audible at the same time (actually, most will have a volume of 0).
The ffft library is great, but takes ages to compile; we don't need the flexibility, and instead only really need some specific fixed-width fft/ifft solution.
Find a soloud api-friendly way of exposing more of libmodplug api (like querying current pattern or whatnot)
We're doing plenty of stuff in the portaudio callback that portaudio documentation directly forbids, including file i/o and memory allocations.
A better way would probably be to run a separate thread that performs those calculations in advance, and gets triggered by the portaudio callback whenever we've run out of ready material.
Negative side effect from this is increased latency, and things seem to work fine..
It should be possible to change the libmodplug so that we can have several "playheads" for one set of data that's loaded. This would also make creation of instances faster, as parsing would only happen on load() time.
Often you want to seamlessly segue from a sound effect to a new music track, or do consecutive sound effects or seamless playback of multiple pieces of music one after another.
Would be nice to have basic functionality in soloud to achieve these without having to code your own callback magic crap.
SoLoud needs filters to adjust the way the speech synth sounds. Result doesn't (necessarily) need to be legible. Stuff like robotize, radio static, "blackmailer masked voice", etc.
Create a sub-classable fft filter class that handles fft / ifft and lets the 'payload' do things like pitch shifting.
rpg maker seems to use ruby, so having a ruby wrapper might benefit at least those guys..
Implement WASAPI windows back-end.
Figure out audio interface(s) in osx for new backends
Solve dyndll loading in osx for existing backends
Currently, visualization data is gathered from the exit point of the sound graph. It would be better if the data could be gathered from any point, or at least from the output of any mix bus.
This way the visualization wouldn't be hampered by global volume changes, filters down the line etc, and thus it would be possible to create visualizations "in the world", instead of just the global output.
Refactor OpenAL back-end to use the new thread functions and test on Linux.
Find or implement a free XM / MOD player, and implement it as an audio source.
Integrate the public domain modplug as an audio source (mod/midi format support)
Currently there's no guarantee that when starting (or unpausing) two streams, they'll start at the same time. Second one may end up in the next output buffer.
Should define typedefs for sound handles and errorcode return codes to make it more obvious what different ints are.
most (SDL) demos might be cross-platform by switching from SDL graphics (which is legacy 1.2 anyways) into text ascii art
maybe a single header-only portable console library with gotoxy()/clear() and (color) printfs should be enough
Architectural work: figure out what to actually do with the speakers
3d audio isn't completely tested, the look-at matrix might work as is, or it might need work, attenuation modes might have some issues, etc.
While lerp resampler is better than nothing, SoLoud needs a higher quality resampler (or few).
Replacing the audio system in some full-scale game would be a great way to test and stress SoLoud.
Should make static libraries and binaries of the tests, at least.
Create API for resamplers (fast and high quality options)
I'm not quite satisfied with the current FFT implementation; I'm not certain, but I think doing fft + ifft should result in more or less the same signal, instead of blowing up the amplitude. Also, I know it could be faster, especially since we use a fixed window size.
The code has already been refactored so that replacing the implementation should be simpler.
After about a day, float starts to run out of precision, so it's probably not a good choise in the long run - consider alternatives / workarounds.
Fix the SDL back-end to load sdl2 dll correctly (different mutex function names)
One of the "basic" features SoLoud still lacks are mixing busses.
Someone's bound to need a 64bit build eventually. At least back ends (dyndll stuff) needs a lot of work.
Currently, the SoLoud api has no mechanism for error reporting. Design and implement a non-invasive mechanism. Exceptions can't be used.
Add ADPCM compressed audio support to wave loader
Short mono-mix of current output audio. Only generated if enabled via flag at init time.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.