New audio subsystem

Started by iWasAdam, July 16, 2018, 12:16:32

Previous topic - Next topic

iWasAdam

yep. I't not a simple thing to explain. lol.

I'm sorting out some wavetable stuff ATM. Finally got my hands on the original PPG wavetable files and am tweaking how to deal with it so it is sice and simple and usable.

iWasAdam

PPG wavetable stuff all sorted along with some new filter stuff

Now for the BIG ONE...

All updated and cross compiled on Windows and Linux without any issues!  :o

MikeHart

Wow, that is looking really good.

iWasAdam

thanks Mike.   ;)

the backend is using some SDL audio. does Cerberus support SDL2?

MikeHart

Quote from: iWasAdam on August 09, 2018, 10:44:15
thanks Mike.   ;)

the backend is using some SDL audio. does Cerberus support SDL2?
CX uses GLFW and OpenAL right now.

Qube

coming together very nicely I see :) - Are you going to be offering it to the M2 community as I'm sure there are others who would want a working sound system on MacOS?.

Barely touched Monkey 2 myself and if as you say the sound is iffy on MacOS then meh :P
Mac Studio M1 Max ( 10 core CPU - 24 core GPU ), 32GB LPDDR5, 512GB SSD,
Beelink SER7 Mini Gaming PC, Ryzen 7 7840HS 8-Core 16-Thread 5.1GHz Processor, 32G DDR5 RAM 1T PCIe 4.0 SSD
MSI MEG 342C 34" QD-OLED Monitor

Until the next time.

Derron

@Qube
It is not a "sound system" (in the sense of "PlayAudio(file.ogg)") but a "sound generator/machine".

Think there are less people being able to make use out of it - but if they are able to, then they surely find it useful.


bye
Ron

iWasAdam

QuoteIt is not a "sound system" (in the sense of "PlayAudio(file.ogg)") but a "sound generator/machine".
Actually Derron. it is! (if that's the way you want it to be)

It won't stream - but I could add that - but I can't see a reason for that (in this case).

All of what you have seen can be thought of as the internal structure underneath PlayAudio().
Usually (when you call PlayAudio) there is a lot of code you never see that does all the nasty stuff like loading audio into the correct format and setting up the audio driver and feeding the driver.

This is a new subsystem. But one that you can see (because of its complexity) and rewire, redesign.

It may be that the end user never see this side of things... ?

The relative command to PlayAudio("cccc") would be (something like):

synth = New Synth
sound1 = synth.LoadAudio("ccccc")
PlayAudio( sound1 )

Derron

So it is an "audio feed generator".
You might consider adding "stream support" so people could use it to get rid of the "cracks" or "missing begin" on Mac OS X.

For such things you need to create helpers to ease the pain of mixing audio (set pane, individual volumes, ...). Means a useful group of commands for "play an ogg file"-users).


bye
Ron

Qube

Quote from: iWasAdam on August 10, 2018, 06:48:04
QuoteIt is not a "sound system" (in the sense of "PlayAudio(file.ogg)") but a "sound generator/machine".
Actually Derron. it is! (if that's the way you want it to be)
I thought so ;D
Mac Studio M1 Max ( 10 core CPU - 24 core GPU ), 32GB LPDDR5, 512GB SSD,
Beelink SER7 Mini Gaming PC, Ryzen 7 7840HS 8-Core 16-Thread 5.1GHz Processor, 32G DDR5 RAM 1T PCIe 4.0 SSD
MSI MEG 342C 34" QD-OLED Monitor

Until the next time.

iWasAdam

so. latest update is everything is working and I'm starting on the final big concept... The FX

The simplest way to think of this all the sounds (voices) can be fed into (up to) 3 FX units. These are the same as foot pedals when playing guitar:


each single voice has three fx sends (how much of the output to send (feed) into any FX - this is shown above by the FX panel with the 3 fx feeds.

I have (currently) set aside 5 fx including reverb, delay, chorus, etc. These are shown on the top.
You click and drag a pedal onto a blank pedal position below it and the faders automatically fill themselves in for you.
FX are global - they affect ALL voices, but you can set the amount per voice...

In use it could be something like this:
footsteps (this is our voice)
we want to have different levels of echo if we are inside or out
so we use an echo fx in slot 1

when we want to use lots of echo we would use:
footsteps.FX1 = 1
or no echo
footsteps.FX1 = 0
or some echo
footsteps.FX1 = 0.25



Qube

Quoteso. latest update is everything is working and I'm starting on the final big concept... The FX
Looking forward to seeing this all in action in your next game :)
Mac Studio M1 Max ( 10 core CPU - 24 core GPU ), 32GB LPDDR5, 512GB SSD,
Beelink SER7 Mini Gaming PC, Ryzen 7 7840HS 8-Core 16-Thread 5.1GHz Processor, 32G DDR5 RAM 1T PCIe 4.0 SSD
MSI MEG 342C 34" QD-OLED Monitor

Until the next time.