sfx

Community Forums/Monkey2 Talk/sfx

taumel(Posted 2015) [#1]
What about sound?

One aspect which was always quite basic in BRL products (even BlitzMax) are the sound capabilities.

Till a certain degree you can compensate things by creating the right samples, dynamic playlists and there was Brucey adding bass/fmod support. Dunno if this is within the scope of the project but a more capable sound engine (realtime effects/mixing, tracker support, ...) could be nice.


abakobo(Posted 2015) [#2]
Yes tracking would be great!


Difference(Posted 2015) [#3]
Totally agree. I've put a lot of effort into sequencing with native Monkey audio calls, and it's just not doable without hickups. ( http://www.monkey-x.com/Community/posts.php?topic=8523&post=87893 )

There are of course several aspects to this. Input latency, playing back/controlling audio in it it's own thread, writing to audio buffers and much more.


Nobuyuki(Posted 2015) [#4]
Probably beyond typical language scope and would likely belong in a discussion related to mojo2, though I get the feeling that mojo2's audio is going to be identical to mojo1's; Mark's only talked about the graphical improvements thusfar.

With the extra abilities the language offers, it's likely that writing wrappers for audio libraries will be a heck of a lot easier. It would be nice to have a "real" audio buffer exposed from mojo that data can be sent to using mostly native-monkey code, perhaps with externs for things like tracker and chiptune formats (like klystrack). That is to say, allow us to write to the audio buffer in Monkey2 the way we'll be able to write to texture surfaces. Many years ago I managed to hook up libmodplug to Python's built in wav output lib. No idea how to properly manage that in Monkey without a bunch of wrappers, but I'm definitely gonna give libmodplug/libopenmpt/fmod-studio a go once Monkey2 is out and relatively stable.


nullterm(Posted 2015) [#5]
FMOD need to be careful of the license cost, and BASS for that matter too.

I've tried to stick with OpenAL on my C++ projects for this reason.


Skn3(Posted 2015) [#6]
It would be nice if we could setup audio data processor functions and pass it to the audio engine. I have dealt with a few audio libs on iOS before and by far the best for audio manipulation were:

http://alexbw.github.io/novocaine/
http://theamazingaudioengine.com/

These both provide really easy access to modify live audio data. In monkey (custom module) I was able to do the following:

- pipe audio from the amazing audio engine via microphone
- add an effect to the data by manipulating it in the amazing audio input callback
- feed it to gstreamer (http://gstreamer.freedesktop.org/) via an appsink
- have it streamed over the network using RTSP (via gstreamer)

It was at a time when gstreamer mic support on iOS was broken. I guess my point is that with some form of direct access to input/output audio data, we can hack together a lot of things!