Development of a sound library

I’m currently working on a sound library that complements SDL’s
functionality. Think of it as a virtual studio, quite different from
anything that’s there.

Overall, it has:

  • Mixing of all channels
  • Volume gain/attentuation
  • Endless amount of channels (limited by CPU and memory)
  • 16 Bit only
  • Handles endian/sign/sample rate issues
  • Adjustable sample rate

On a per channel basis, it has:

  • Stereo 16 bit audio per channel
  • Pitch shifting
  • Balance/panning
  • Delay
  • Mute
  • Plugin architecture - plug in whatever sound generation you’d like
    and connect it to a channel
  • Mute groups - attach several plugins to a channel - only one plays, but
    will cut off one and start playing another without annoying clicks/pops
  • Process plugin per channel, allowing chainable custom processing on each
    channel (processing, such as gating/compression need to be written!)
  • Fade in/out
  • Mute will smoothly silence a channel and not make it click/pop

So far my list of plugins include:

  • Ogg/Vorbis/Wav streaming (sample rate conversion)
  • In memory waveform playback (sample rate conversion)
  • Explosion generator/synthesizer

The mixing accumulators are all 32 bit. Mix as many channels as you like.
It’ll only spend CPU power mixing them if they’re actually making sound.

I do plan on releasing this as a sidecar to SDL sometime in the coming
months once it’s completely written, debugged, and presentable.

I was wondering if anyone had any requests for the basic mixer
capabilities that would be useful to gaming. I think I have it covered,
and what isn’t covered can easily be written by end users to plug in.

I’ve tried to duplicate a lot of my Yamaha 02r’s mixer’s capabilities:

since all of the mixer’s features seem to be extremely useful for games.
One could also create a virtual studio akin to Reason with this fairly
easily. I am missing bus/effects sends, but those could be added in the
future. It also looks to be a complement to SDL_audio as well, with a
slight bit of overlap.

Thoughts?

–>Neil-------------------------------------------------------------------------------
Neil Bradley What are burger lovers saying
Synthcom Systems, Inc. about the new BK Back Porch Griller?
ICQ #29402898 “It tastes like it came off the back porch.” - Me

This is kinda off topic but back in my pre-sdl directx days i was trying to
make a program called Sound Brush that would take a scripting language that
could create vars and evalutate math that eventualy would be some form of
y=f(t) where t was time so you could basicly mathematicly describe sound.
Do you think this kind of tool is something sound related people would think
was cool or useful? Im askin cause you seem to know alot about
sound…especialy after seein that pic of your workstation heheh.> ----- Original Message -----

From: nb@synthcom.com (Neil Bradley)
To:
Sent: Wednesday, July 31, 2002 9:38 PM
Subject: [SDL] Development of a sound library

I’m currently working on a sound library that complements SDL’s
functionality. Think of it as a virtual studio, quite different from
anything that’s there.

Overall, it has:

  • Mixing of all channels
  • Volume gain/attentuation
  • Endless amount of channels (limited by CPU and memory)
  • 16 Bit only
  • Handles endian/sign/sample rate issues
  • Adjustable sample rate

On a per channel basis, it has:

  • Stereo 16 bit audio per channel
  • Pitch shifting
  • Balance/panning
  • Delay
  • Mute
  • Plugin architecture - plug in whatever sound generation you’d like
    and connect it to a channel
  • Mute groups - attach several plugins to a channel - only one plays, but
    will cut off one and start playing another without annoying clicks/pops
  • Process plugin per channel, allowing chainable custom processing on each
    channel (processing, such as gating/compression need to be written!)
  • Fade in/out
  • Mute will smoothly silence a channel and not make it click/pop

So far my list of plugins include:

  • Ogg/Vorbis/Wav streaming (sample rate conversion)
  • In memory waveform playback (sample rate conversion)
  • Explosion generator/synthesizer

The mixing accumulators are all 32 bit. Mix as many channels as you like.
It’ll only spend CPU power mixing them if they’re actually making sound.

I do plan on releasing this as a sidecar to SDL sometime in the coming
months once it’s completely written, debugged, and presentable.

I was wondering if anyone had any requests for the basic mixer
capabilities that would be useful to gaming. I think I have it covered,
and what isn’t covered can easily be written by end users to plug in.

I’ve tried to duplicate a lot of my Yamaha 02r’s mixer’s capabilities:

http://www.synthcom.com/~nb/Studio3.jpg

since all of the mixer’s features seem to be extremely useful for games.
One could also create a virtual studio akin to Reason with this fairly
easily. I am missing bus/effects sends, but those could be added in the
future. It also looks to be a complement to SDL_audio as well, with a
slight bit of overlap.

Thoughts?

–>Neil



Neil Bradley What are burger lovers saying
Synthcom Systems, Inc. about the new BK Back Porch Griller?
ICQ #29402898 “It tastes like it came off the back porch.” - Me


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl

Neil Bradley

I’m currently working on a sound library that complements SDL’s
functionality. Think of it as a virtual studio, quite different from
anything that’s there.

I was wondering if anyone had any requests for the basic mixer
capabilities that would be useful to gaming. I think I have it covered,
and what isn’t covered can easily be written by end users to plug in.

Well, if you’re taking requests, I’d like the streaming bits (OGG/WAV) to
work with SDL_RWop rather than locking 'em into playing files or memory
chunks. I’m working on a commercial product, and I’m wanting to keep all
resources (including sound) in a single big resource file so folks can’t
mess with things.> From: sdl-admin at libsdl.org [mailto:sdl-admin at libsdl.org]On Behalf Of

Sent: Wednesday, July 31, 2002 11:38 PM
To: sdl at libsdl.org
Subject: [SDL] Development of a sound library


John Hattan Sweet software for a saturnine world
@John_Hattan http://www.thecodezone.com

That actually sounds like a very useful feature for my needs too.

-Blake> ----- Original Message -----

From: john@thecodezone.com (John Hattan)
To:
Sent: Thursday, August 01, 2002 12:12 PM
Subject: RE: [SDL] Development of a sound library

From: sdl-admin at libsdl.org [mailto:sdl-admin at libsdl.org]On Behalf Of
Neil Bradley
Sent: Wednesday, July 31, 2002 11:38 PM
To: sdl at libsdl.org
Subject: [SDL] Development of a sound library

I’m currently working on a sound library that complements SDL’s
functionality. Think of it as a virtual studio, quite different from
anything that’s there.

I was wondering if anyone had any requests for the basic mixer
capabilities that would be useful to gaming. I think I have it covered,
and what isn’t covered can easily be written by end users to plug in.

Well, if you’re taking requests, I’d like the streaming bits (OGG/WAV) to
work with SDL_RWop rather than locking 'em into playing files or memory
chunks. I’m working on a commercial product, and I’m wanting to keep all
resources (including sound) in a single big resource file so folks can’t
mess with things.


John Hattan Sweet software for a saturnine world
john at thecodezone.com http://www.thecodezone.com


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl

capabilities that would be useful to gaming. I think I have it covered,
and what isn’t covered can easily be written by end users to plug in.
Well, if you’re taking requests, I’d like the streaming bits (OGG/WAV) to
work with SDL_RWop rather than locking 'em into playing files or memory
chunks. I’m working on a commercial product, and I’m wanting to keep all
resources (including sound) in a single big resource file so folks can’t
mess with things.

I’m doing exactly the same thing. As a matter of fact, my “wad” file (for
lack of a better term) is keyed to the user’s information and is different
for every user. The executable is the same. So it’ll have to stream in my
protected form.

My wave streamer code opens up a named resource (OpenResource() call) and
does a ReadResource() call to get more data. That’s where my decoder goes.
This architecture will lend itself well to this, so you can do whatever
decoding/decryption you want to do.

Of course it won’t stop someone from hacking up a version of SDL’s DLL to
stream the audio handed to the callback to a file, but it’ll make it quite
difficult. Too bad the SDL license won’t prevent that. ;-(

–>Neil-------------------------------------------------------------------------------
Neil Bradley What are burger lovers saying
Synthcom Systems, Inc. about the new BK Back Porch Griller?
ICQ #29402898 “It tastes like it came off the back porch.” - Me

Hi.
I’m longging for ur sound library that u mentioned before…
when will it show up in public ?

Sound pitching in real time is what i really need in linux.

thanks for great stuff

harbang
@jung-suk_han