Giter Site home page Giter Site logo

jarikomppa / soloud Goto Github PK

View Code? Open in Web Editor NEW
1.6K 63.0 262.0 12.46 MB

Free, easy, portable audio engine for games

Home Page: http://soloud-audio.com

License: Other

C++ 16.22% C 80.77% Python 1.96% Lua 0.36% Batchfile 0.01% CMake 0.45% TeX 0.17% CSS 0.07%
audio game-development engine sound sound-effects synthesizer game portable mp3 ogg

soloud's Introduction

SoLoud

SoLoud is an easy to use, free, portable c/c++ audio engine for games.

ScreenShot

Zlib/LibPng licensed. Portable. Easy.

Official site with documentation can be found at: http://soloud-audio.com

soloud's People

Contributors

boriscarvajal avatar brightening-eyes avatar coldencullen avatar defaultsamson avatar dorgonman avatar eduardodoria avatar fungos avatar fuzzyquils avatar gabteles avatar jarikomppa avatar kvisle avatar lamelizard avatar laptabrok avatar ligfx avatar lukesanantonio avatar matthew-oconnell avatar nlsdvl avatar ocornut avatar petrihakkinen avatar ruby0x1 avatar shartte avatar tapio avatar tapir avatar timgates42 avatar tv-s avatar valid-ptr avatar vk2gpu avatar woollybah avatar xyzz avatar zensoturi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

soloud's Issues

modplug: faster instances

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.

Precision sound triggering

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.

integrate sfxr

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.

FFT filter framework

Create a sub-classable fft filter class that handles fft / ifft and lets the 'payload' do things like pitch shifting.

3d audio testing

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.

64 bit builds

Someone's bound to need a 64bit build eventually. At least back ends (dyndll stuff) needs a lot of work.

Stream from memory

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".

Chain sounds with gapless playback

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.

Sample loop points

Implement loop points to audio. Currently looping always jumps to the beginning of the stream.

Resamplers

Create API for resamplers (fast and high quality options)

Wave length

Add methods to get the length of a wave source.

FFT library replacement?

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.

Visualization data from different points of graph

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.

Research sfml / allegro

Research whether making back-ends for sfml and allegro makes sense, and implement them if there's a chance of getting low latency

portaudio support improvements

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..

Emscripten support

Try to figure out whether it's possible to get SoLoud to work through emscripten. May require new features in Emscripten to work.

Generalize "memory file i/o"

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..

Broken build

Looks like soloud_bus.h is missing (probably .cpp too)

[suggestion] make demos cross-platform

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

XM / MOD player

Find or implement a free XM / MOD player, and implement it as an audio source.

Simple recording plugin?

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.

Integrate modplug

Integrate the public domain modplug as an audio source (mod/midi format support)

Redesign handling of number of voices

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).

osx port

Figure out audio interface(s) in osx for new backends
Solve dyndll loading in osx for existing backends

Speech enhancement filters

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.

3d audio and clicks

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).

better FFT implementation

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.

Error handling

Currently, the SoLoud api has no mechanism for error reporting. Design and implement a non-invasive mechanism. Exceptions can't be used.

C-interface and DLL

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.