• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!
  • Hello [name]! Thanks for joining the GMC. Before making any posts in the Tech Support forum, can we suggest you read the forum rules? These are simple guidelines that we ask you to follow so that you can get the best help possible for your issue.

Discussion Audio Engine in GMS2

Andrey

Member
I'm wondering if the GMS2 audio engine will evolve?
Around this topic in general there is silence.
I expected a breakthrough in this issue with the release of GMS2, but this did not happen.

The road map includes:
Audio - basic audio generator in IDE
Audio - basic sample editor in IDE (cut / copy / paste / Trim / resample / Fade In / Fade Out)

but it's not about the new features: an equalizer, effects that can be encoded and exported to all platforms, including mobile.

Why is the audio engine so simple and the years remain at this level? :(
 

Smiechu

Member
Why is the audio engine so simple and the years remain at this level? :(
Audio signal processing is not an easy topic. I would say it needs much bigger knowlage and experience than graphic processing. Maybe there is no one at yoyo who is specialising in this topics, and alternative of buying and implementing external solutions is not profitable.
Sadly the technology behind audio processing in games has stopped around year 2000 when dedicated sound cards for game audio processing didn't break throug into the market like dedicated video cards.

On the other hand, supper deep audio processing tools are not needed for a typical game.
Using buffers you cam write your own algorithms if you need.
 

FrostyCat

Redemption Seeker
Nobody needs the tone generator or sample editor in particular. There are already existing programs for them, and I just wish YoYo would stop trying to waste time reinventing the wheel and start putting effort where it's genuinely warranted. The IDE plugin documentation is a far higher and more fundamental priority than either of these roadmap items.

As for equalizers and sound effects, I agree that they are sorely needed, but this area is YoYo's technical weak spot and fixing it with a new library is a legal minefield. And given that YoYo has just stepped on one of those mines (hence the reports about audio differences in 2.1.5), I think they need time to reorganize their legal and technical strategy before moving on with any potential improvements.
 

csanyk

Member
I don't need an audio file editor to be built in to GMS.

But what I would like is some native GMS support for programmatic audio.

I like to make old-style games, in the style of the the 8-bit systems that I grew up on. These didn't rely on playing back pre-recorded audio files; they generated sounds on the fly by sending instructions and data to a sound chip. I'd like to be able to use audio more dynamically than I'm currently able to, to procedurally generate the audio in my games. If GMS had features like a programmable synthesizer, that I could control during runtime through GML code, it could really open up doors to some creative and innovative sound-based play.

I would also very much like to be able to apply various filters and such to prerecorded audio files, for example low or high pass filters, and other effects. It'd also be useful if I could detect when a beat happens in a music file, and trigger an event or action on beats, in sync to music.

Perhaps there are ways to do some of the above already, but they are either unknown to me, or are very difficult to do, or require the use of extensions that aren't usable with all build targets. So some GML functions would be very welcome.
 

Andrey

Member
Guys, of course I'm not writing about the built-in sound editor (such as Audition). I see something from the sound editor in the road map. And I do not need these functions and unnecessary.
I write about the sound engine that processes sound in real time to control the sound in games through the code (change frequencies, make effects, filters, etc.).
And the question is whether the engine will develop in this direction. Or in 2-3 years everything will remain at the same stage.
And why this question is not discussed at all? Games will be much better, if there are audio effects, filters.

p.s.: 2022, FMOD support announced for the future! This is awesome! :banana:
 
Last edited:

FrostyCat

Redemption Seeker
Guys, of course I'm not writing about the built-in sound editor (such as Audiocity). I see something from the sound editor in the road map. And I do not need these functions and unnecessary.
I write about the sound engine that processes sound in real time to control the sound in games through the code (change frequencies, make effects, filters, etc.).
And the question is whether the engine will develop in this direction. Or in 2-3 years everything will remain at the same stage.
And why this question is not discussed at all? Games will be much better, if there are audio effects, filters.
It will develop in this direction once the legal and technical barriers are sorted out.

As a proprietary engine developer, YoYo is NOT as free as an average game developer to just wrap in an audio library like BASS or FMOD, or even include codecs for certain formats. They need special redistribution licenses that are not only legal hot potatoes, but financially binding on any export the library finds itself in. YoYo could develop technically all they want, but if the legal and financial issues drag on, they may still be at square one.

Given that YoYo has just gotten into trouble with an audio library vendor, I don't think they'll be improving this aspect of GMS 2 as much as they'll be re-evaluating it altogether. My take is that if this happens, we may end up with a two-tiered audio system: A basic one that's OK to hand out alongside a stock copy of GMS 2, and a premium one that entails a licensing agreement with a third-party audio engine. Think Spine for comparison.
 

Smiechu

Member
I don't need an audio file editor to be built in to GMS.

But what I would like is some native GMS support for programmatic audio.

I like to make old-style games, in the style of the the 8-bit systems that I grew up on. These didn't rely on playing back pre-recorded audio files; they generated sounds on the fly by sending instructions and data to a sound chip. I'd like to be able to use audio more dynamically than I'm currently able to, to procedurally generate the audio in my games. If GMS had features like a programmable synthesizer, that I could control during runtime through GML code, it could really open up doors to some creative and innovative sound-based play.

I would also very much like to be able to apply various filters and such to prerecorded audio files, for example low or high pass filters, and other effects. It'd also be useful if I could detect when a beat happens in a music file, and trigger an event or action on beats, in sync to music.

Perhaps there are ways to do some of the above already, but they are either unknown to me, or are very difficult to do, or require the use of extensions that aren't usable with all build targets. So some GML functions would be very welcome.
So...
If I would program an oldstyle 8-bit or 1-bit audio engine / synth in GMS? Would you be interested in buying such an asset/extension?
 

FrostyCat

Redemption Seeker
That's cool!

It's so much better than nothing.
I do hope that you understand this is personal speculation based on facts I've gleaned from past events and updates. I don't work for YoYo, and plenty of my requests have been ignored or turned down before.

Sure, if it's good.
Then perhaps you should get your shopping cart ready.

And by the way, one of the extensions in the link above is a pure GML implementation using audio buffers.
 

Andrey

Member
I do hope that you understand this is personal speculation based on facts I've gleaned from past events and updates. I don't work for YoYo, and plenty of my requests have been ignored or turned down before.
Yes, of course I understand that.
 

Smiechu

Member
And that's exactly what extensions and community are for... if there is a need for some very specific functionality i.e. 8-bit synthesizer, or PC-speaker emulation... first thing to do is look for extensions on the marketplace, if not ask the community to maybe create one.
There is really no sense to have every possible specific functionality directly in GMS... there is enough of bugs already.
 

csanyk

Member
And that's exactly what extensions and community are for... if there is a need for some very specific functionality i.e. 8-bit synthesizer, or PC-speaker emulation... first thing to do is look for extensions on the marketplace, if not ask the community to maybe create one.
There is really no sense to have every possible specific functionality directly in GMS... there is enough of bugs already.
OP wasn't asking the community to make anything for him, he was asking for YYG's plans for what they intend to do with the audio engine. Big difference.
 

Smiechu

Member
OP wasn't asking the community to make anything for him, he was asking for YYG's plans for what they intend to do with the audio engine. Big difference.
You didn't catch my point. First of all I was referencing another request in this topic regarding i.e. having an 8-bit synthesizer in GMS - what is a complete waste of YoYo's time, as it's a very, very specific feature.
Second thing, the question stated by the OP was already answered. It's very probable that implementing advanced audio features doesen't calculate, as using 3rd party solutions would lead to commercial / law problems. And developing own audio solutions needs knowlage, experience and time.
 

Andrey

Member
the question stated by the OP was already answered.
Well, that was an opinion. Of course, YoYo silence in this matter. And this is understand why.
But if the subject of the sound engine is not raised at all, I suppose nothing will change and will not. There is no demand, there is no proposal.
Indeed, GMS2 in sound lags far behind competitors very much. Accordingly, the games come out with a flat sound.
 

Smiechu

Member
Accordingly, the games come out with a flat sound.
Games made in GMS are generally flat becouse most of them is aiming "old-school-retro-pixel-art" style, so a bunch of beeps, clicks and brumms is all they possibly need, more would spoil the mood.

But if it goes for flatness in audio - in my opinion it has nothing to do with lack of functions. Simply creating good music and sfx is a very hard job.

Generally GMS has the main tool (audio buffers) to create sound fx. When I have a little bit time I'll see if implementing some basic tools like eq, compression/limiting, and reverb is possible using only gml code is possible and/or efficient enough.
 

csanyk

Member
Games made in GMS are generally flat becouse most of them is aiming "old-school-retro-pixel-art" style, so a bunch of beeps, clicks and brumms is all they possibly need, more would spoil the mood.
And yet you can see no reason at all why the ability to program dynamic sound in the way it used to be done on 8-bit systems would be desirable beyond a tiny audience. :rolleyes: Note, I wasn't asking for anyone to provide a chip emulator for the NES or C64 or some specific system; I just expressed that it's desirable to me (and I assume many others) to be able to generate audio programmatically from audio primitives, analogous to the way we often have occasion to procedurally draw video from drawing primitives.

Currently, the capability offered by GMS is to store a sound file and play it back. I use some external tool, such as sfxr/bfxr/jfxr to generate sound effects, export them from that tool into .wav format, add the wave files to my project as sound resources, and then play them at run time when needed.

For years, I've thought that it would be much cooler if the code inside of *fxr could be brought into GMS, and I could then make calls to it through its API at runtime, setting up instruments and adjusting their settings procedurally, to create dynamic sounds that are unique to a specific set of conditions that emerge during play. That capability would yield essentially infinite flexibility at runtime, and enable compelling audio-based game genres that aren't feasible within the current limitations of GMS.

Here's something to consider: "the way most gamemaker games are" is a chicken-egg situation. The games are the way they are because that's what GMS is good at doing. If GMS added [new feature] then over time you might expect to see more games made using [new feature] than were made before when implementing [similar feature] took a lot of work/skill and specialized knowledge.

But if it goes for flatness in audio - in my opinion it has nothing to do with lack of functions. Simply creating good music and sfx is a very hard job.
Indeed, it is not easy to make good sound effects. But the only thing you can do with them in GMS is store a sound file as a resource in your project, and then play it. You can do some limited stuff like adjusting the gain, the position, and pitch shift, but that's about it, at least with the standard audio functions. I don't know what can be done with audio buffers, though, apart from syncing tracks to play together so you can mix gain levels at runtime. Which, don't get me wrong, is pretty cool, but I'd love to know what other capabilities are available via audio buffers.

Generally GMS has the main tool (audio buffers) to create sound fx. When I have a little bit time I'll see if implementing some basic tools like eq, compression/limiting, and reverb is possible using only gml code is possible and/or efficient enough.
I've asked in the past (elsewhere in these forums) for any kind of tutorial showing how to make use of audio buffers to do cool stuff, and still haven't seen anything.

I get that audio processing is hard and requires some technical/scientific knowledge. But really, no different from programming shaders, I think. If YYG can support shader language, then it'd be nice to give our ears similar treatment.

And I also get that there may be legal constraints to using some existing audio engine/library/framework, but that in itself isn't reason not to do something like what I'm envisioning. Work out the licensing and do it, if that's what it takes. Are there no technologies available under a liberal license such as the BSD license or MIT license? The sfxr tool I mentioned above is widely used, is free/open source, and has been extended by various developers to create other projects (such as bfxr and jfxr) which are also free, so seemingly isn't IP-encumbered.
 

Smiechu

Member
just expressed that it's desirable to me (and I assume many others) to be able to generate audio programmatically from audio primitives, analogous to the way we often have occasion to procedurally draw video from drawing primitives.
But you have that possibility... GMS has audio buffers implemented allowing you live sound generation/manipulation. Pass a simple A*sin(f*n) to audio buffer and you have your first sound...
Yes you need to build it from scratch the same way like with primitives, vertex buffers and shaders. But you havr that possibility.

One more time, there are tools on markerplace allowing some retro styles things

GMS has also implemented already a surround sound modulation. With sources and listeners - works very nice in my opinion.
 

Andrey

Member
Simply creating good music and sfx is a very hard job.
I fully agree with this.

But this work is paid by the players. People are ready to pay for quality.

Switch export is coming out soon. I wonder how games created on GMS2 will sound? And with whom will have to compete for the player? With them? :eek:

By the way, I wonder what prevents to integrate Wwise in GMS2? License?
 

csanyk

Member
But you have that possibility... GMS has audio buffers implemented allowing you live sound generation/manipulation. Pass a simple A*sin(f*n) to audio buffer and you have your first sound...
Yes you need to build it from scratch the same way like with primitives, vertex buffers and shaders. But you havr that possibility.
Well, that's really good to know. As I've said, I've seen ZERO tutorials on audio buffers, and the manual doesn't give any hint to the possibility of passing a math function into an audio buffer to generate sound. Buffers in general are an advanced topic in GMS and not a lot of good tutorials exist for them still. I'm aware of them, but haven't made use of them, and I have little understanding of what they can do, or how to do them.

So, when you say "but you have that possibility already"... well, no, *I* don't have that possibility. I am not a low level programmer, electrical engineer, physicist, or mathematician. I am not opposed to learning how to do these things, but I only have so much capacity to learn. And to learn, I need a teacher. The manual only goes so far. I would like for my focus to be on designing games and implementing game designs, not building infrastructure. YoYo provides the infrastructure. I'm here as just one small voice saying "Hey, this is something I would like to do, and it would be awesome if the tool made it easier." Maybe others would like it too.

The stuff that requires a deep understanding of heavy math/science is pretty beyond me, and I'm sure many other GMS users are as well. That's why we're using GMS, and not building our own engine in C.
 

Smiechu

Member
Well, that's really good to know. As I've said, I've seen ZERO tutorials on audio buffers, and the manual doesn't give any hint to the possibility of passing a math function into an audio buffer to generate sound. Buffers in general are an advanced topic in GMS and not a lot of good tutorials exist for them still. I'm aware of them, but haven't made use of them, and I have little understanding of what they can do, or how to do them.

So, when you say "but you have that possibility already"... well, no, *I* don't have that possibility. I am not a low level programmer, electrical engineer, physicist, or mathematician. I am not opposed to learning how to do these things, but I only have so much capacity to learn. And to learn, I need a teacher. The manual only goes so far. I would like for my focus to be on designing games and implementing game designs, not building infrastructure. YoYo provides the infrastructure. I'm here as just one small voice saying "Hey, this is something I would like to do, and it would be awesome if the tool made it easier." Maybe others would like it too.

The stuff that requires a deep understanding of heavy math/science is pretty beyond me, and I'm sure many other GMS users are as well. That's why we're using GMS, and not building our own engine in C.
Yeah, the same way I completely don't understand how shaders work... though I use couple of them which I downloaded and/or purchased, but have no idea how they work and why.

This is also the specific of GM... YoYo created the marketplace to unload the development team from bargain of dealing whit things which are not necessary a priority, but could be easily made and delivered by the community (shaders, specific functions, etc..).

There is also the aspect of GM being mulitplatform. I'm not sure if it's really so easy to find one audio system to suit them all...

Never the less, you gave me a kick, and I'll look what are the possibilities with this what gives GMS now.
 
Top