Looks great already!
Don’t know if that was already planned, but dsp callbacks should also retrieve the exact time of the first sample that is passed to the callback.
Especially for current stream dsp’s, it’s really hard to synchronize them visually because you don’t know when the sample you are currently being processing is to be played.
It might also be usefull when you want to reproduce the exact same effect (for music generation tools this is really important)
It would be really cool if all these dsp’s were already included with fmod, but make sure they can be used on each individual channel/stream, and also on the final mix output.
(Not the same way as the spectrum dsp in fmod 3)
In what modes the 4-channel sound will actually be available?
Traktor dj has a 4-channel mode that works with WDM drivers, and BPM Studio has a 4-channel mode that only works with ASIO drivers.
I assume 4-channel mode is just not possible with basic DirectSound?
I don’t know if this is possible, but being able to accurately synchronizing multiple sound cards would also be a great feature (so comparing the actual playing time of two songs on different sound cards).
For the equalizer dsp I have some cool code that works really great (has low-shelf, high-shelf, low-pass, high-pass, notch,) and works quite fast.
The Low and High shelf are as easy as specifying a frequency and a number in dB to increase or decrease the lower or higher frequencies.
If you need this code, you only have to say it.
- Adion asked 16 years ago
A few ideas:
Native COM bindings for use in VB (could probably be made in a couple hours of work in VC)
.NET bindings? (Dunno how hard it would be, I have VC# but I haven’t used it much… you’d definitely be gaining some ground there as most audio libs don’t work in .NET)
Some sort of dynamic audio filtering system (Where the user creates a ‘audio shader’ of sorts out of a set of predefined ‘instructions’, which are inserted into the actual processing loop in realtime… self-modifying code is neat.) Of course, that would be insanely difficult, but it’s something I’ve been wanting to develop for a long time.
Would it be possible to get internal resampling features for sound? I.e. if you’re using FMod for CD Ripping, you could have it resample to 22khz 8-bit stereo samples in realtime as it rips… It might be nice, albeit not very useful.
Kernel-based DSP filter… similar to how graphics programs allow you to create custom image filters by specifying a 2d filter kernel… perhaps a DSP plugin could be made that runs on a 1 dimensional filter kernel?
A ‘disk writer’ dsp unit, similar to how Winamp has a disk writer output plugin? Something to record sound output in realtime?
The ability to use custom EAX filters on EAX compatible cards, maybe? I’m not even sure how difficult that is in pure code, let alone a library, but hey.
The geometry engine sounds awesome, and I actually think it could be helpful for gameplay code too:
For example, if I want to model sound being blocked by walls and such, could I somehow query FMod’s geometry engine to see if a guard at point (x, y, z) can hear a footstep from a player at point (x2, y2, z2)?
Some ideas for the Linux port :
- [url=http://jackit.sourceforge.net:1s7vu7vr]Jack[/url:1s7vu7vr] Output support (Jack is the VST equivalent for unices),
- [url=http://www.ladspa.org:1s7vu7vr]LADPSA[/url:1s7vu7vr] plugins support (DMO equivalent),
- an fmod deamon ? (server side working like artsd or esd)
Other ideas :
- parametrable FFT size (get 512/1024/2048 or > for the fft unit)
- a prebuffer function,
- a basic resampler (from/to 8 to 48khz or > )
Have you looked at:
“Perceptual Audio Rendering of Complex Virtual Environments”
by Nicolas Tsingos, Emmanuel Gallo and George Drettakis?
The paper is available at:
http://www-sop.inria.fr/reves/personnel … index.html
along with some videos. Is this something you could add to FMOD Ex?
[quote="brett":38snisej]The new DSP engine is cool :)[/quote:38snisej]
Oh yeah? Well I think it’s [b:38snisej]lame[/b:38snisej].
Please don’t hurt me, brett. I was only kidding.
I’m interested. Does this override standard DSP effects, or is it just another link in the chain that syncs two DSPs?
If you want I can definitely build you some good solid COM bindings in time for the actual first release of FMod 4, as long as I can get my hands on the headers for calling it… .NET I might be able to do too.
As for the audio shader thing, I’m quite interested in trying to build such a thing for FMod 4. I’d do it for FMod 3, but I’m not sure if I could pull it off with the way the buffers and such work. I’ll probably mess around with using Lua scripts to manipulate audio buffers sometime in the next week… I’ll let you know how it turns out.
And no, I meant with EAX cards, I wasn’t aware you could use custom EAX filters with FMod… I must have missed it ^_^ I always thought you were limited to the built in filters. I know the kX drivers let you compile EAX filters using some sort of EAX assembly language, and I wasn’t sure if that was possible using standard creative drivers.
When I saw the FMOD Ex descriptions at this forum, I started dancing around because this is what I always needed (wished). And I’ll probably buy a licence in future.
Just a hint to rename/split “Sound Shaders” name to:
– “Audio Shaders” for vertex-like shaders (logic, packer, buffer)
– “Sample Shaders” for pixel-like shaders (single samples)
So people can write AS and SS, just like they write VS (vertex shader) and PS (pixel shader) with OpenGL or Direct3D.
[quote:1cyhylra]Data Driven system for Sound Designers
Data driven API This is an API for programmers. This API simply consists of very limited commands such as
All event behaviour is specified by an external tool, not the programmer. The tool is described in the next point.
Sound Designer Tool
This powerful yet easy to use and flexible sound designer tool allows sound events to be modeled and created by the sound designer. The capabilities would include such things as layering, effects, random behaviour, and stitching of sounds.
This allows for complex audio models (such as a car engine with multiple layers, sounds and effects) to be totally controlled by the author, then all the programmer has to do is call the previously defined set of simple commands, such as SendEvent and UpdateParameter. In the car model cast, the ‘parameter’ in UpdateParameter might just be ‘revs’ or ‘torque’ or some other English type value, rather than a value defined by a programmer.
Network tweaking tool
This allows a user to tweak the audio parameters in a game over the network while the game is running!
A sound designer now gets even more control over the outcome of the audio mix by being able to alter sound parameters such as volume / frequency / randomization etc while the game is running. This will save hours of time instead of the usual routine of testing, quitting, tweaking, recompiling, running. Even with that old method it can lead to mistakes which take several attempts to perfect. Using the network tweaking tool the sound designer can get it right first time.[/quote:1cyhylra]
We are currently developing a similar set of tools on top of fmod374 so this is of great interest. How far away do you think these tools are?
- bencrossman answered 14 years ago
thank you for your hint concerning speedup/slowdown of output. I partly succeeded to sync playing of 2 PCs over network. I implemented it by sending sync packets over UDP and doing a fast dynamic speedup/slowdown of the client but it still has a small asynchronity, although I also took the network delay into consideration (measured with QueryPerformanceCounters). It looks like I have to implement it with RTP. Have you thought about supporting synchronized play of 2 or more clients over network in the next version 😉
If not I will have to implement it by myself 😕
Ah, before I forget… some sort of dynamic limiter/compressor would rock. A good use would be setting it up on your background music channel(s), and then hooking the input up to the channels used by voice playback… then, when people talk, the music would be compressed and get quieter so you can always hear voices without them being unnecessarily loud. A few games do this and it’s an excellent effect, very good on the ears. Dunno how difficult that would be though ^_^
I think it might be easier on you if you change the way your DSP plugins work (the built in ones at least), by having each DSP plugin or group of plugins in a seperate dll (fmod_reverb.dll, fmod_flange.dll, etc) so that people who don’t want DSP effects get a smaller FMod.dll, and those who do can pick and choose which ones to include. That would probably make it easier on people distributing custom DSP plugins, because they could just give out an fmod_.dll and a coder can just do something like LoadDSPPlugin(“fmod_whatever.dll”) instead of having to set up their own callbacks.
[quote="brett":3gbs0sb2][quote="Paranoid_Android":3gbs0sb2]I know in the current version of FMOD getting the length of a mod file is impossible without an incredible ammount of computation and such. Will FMOD 4 be able to calculate the length of a mod file in a reletively short ammount of time?[/quote:3gbs0sb2]
just re-reading some of these older posts, it looks like exact mod length calculation has been included when i originally said it wouldnt :D[/quote:3gbs0sb2]
You said we wouldn’t get sound shaders, either. 😀
If I ask for realtime physical modeling of instrument contours for tone generation, and you say no, does that mean we’ll get it later, too? 😀
Awesome, DSP and file format plugins will own. It would be pretty cool to have a whole collection of DSP and file format plugins for use with FMod.
BTW, have you considered removing some format support from the main library and moving it into plugins for FMod4? For example, formats like WMA/ASF? That would cut down on the size of the actual library, and since WMA/ASF have issues with FMod that means few people use them anyway…
That would be great:
1 : Full MP4 and AAC support! at least AACv2
2 : Winamp Input PlugIn support
3 : Encoding output support, e.g. to serve network streaming capabilities
4 : Optimized Pitch and TimeStreching routines!
5 : ALL samples also in C# 😉 e.g. the goods once are still missing, e.g. dsp_dev or dsppluginviewer !!!
KarlKox already ask about this in this thread
will it be possible to read some samples ahead (the samples that aren’t yet played….) or do i have to put read ahead code into a stream_callback ?
it would be nice for visualizing. or gap detection…
I just though about portability of opening CD audio discs.
Wouldn’t it be much better to have something like “CD:01” to open 1st CD drive instead of opening drive letters? AFAIK there are no drive letters on platforms other than Win32/Win64.
Apologies if someone has already raised this but do you plan on modifying the names of items to load in the event library (eg, EventSystem::load())?
If not is it possible to change these to const char * parameters in a future release as it makes it annoying to use with std::string. I consistently have to use const_cast<> to pass strings from our configuration system.
- deighvyd answered 13 years ago
Please login first to submit.