Smiechu
Member
Hi!
As I mentioned couple of times already, I'm working on a custom audio engine for GMS2 utilizing only pure GML functionality. This means it should be 100% cross-platform. But on the other hand quite resource-demanding (already proved) and slow to develop.
I would like to slowly share with you my progress, concept and first thoughts. Additionally I would like to get some feedback, what users would actually need, and how they would like to use it. On the other hand this is not a "white board", I have already made some design decisions, and these are not a thing to change.
Below please find attached the first "rough" version of a document describing the systems functionality and structure:
http://bit.ly/SAE_doc_01
I'm simply recreating a well known structure of a classic analogue mixer setup - widely known from DAW software. It's a workflow structure which evolved for last 60 years of music production, there is really no sense reinventing the wheel. This means we have a master channel with basic controls and fx bin/container. Source for master channel are outputs of mixer channels, with basic controls, fx bin, sends, and an input source.
User can choose from couple of audio sources - ie. generator/synth, but the most important source is the standard audio file playback.
GMS allows only to load standard wave files to buffers, it's not possible to use build in "sound resource".Here comes the first bump. Wave files are quite large, and they need time to load into memory - a 3 minute music track, needs couple seconds to load approx. 10-15 or even more. The process is faster with YYC. Solved thanks to @hippyman !!!
Second bump, the playback of multiple sounds is quite resource demanding - playback of 8 sounds at a time is causing drops using VM by 60FPS game speed on my i7 2600 CPU, and there is nothing more - only the engine. Buffer read/write functions are taking most of the CPU time. Fortunately using YYC things are looking much, much better. Using higher game speeds also helps.
So main list of functionality will be:
- playing audio loaded from included wave files,
- incorporating a classic analogue mixer workflow with sends/fx/etc,
- basic fx - eq, filters, simple reverb, delay, echo, chorus, compression, limiting etc,
- basic audio analysis in order to trigger events in game, or control objects,
- functions for control and automation of mixer and fx parameters,
- debug GUI with mixer view, where user could manually set the parameters in order of creating desired sound scenes.
Optional functionality:
- generators, basic synths,
- record input source,
- midi playback, mod playback,
- user programmed fx,
- advanced beat detection,
I'm currently cleaning up my project, the core base is up and running, with first basic fx and most of the controls. Next week I'll be programming a nice GUI, in order to present you a demo video, and maybe some practical use examples.
Please stay tuned, and give ma a feedback if you feel something is missing here, or you have some suggestions.
As I mentioned couple of times already, I'm working on a custom audio engine for GMS2 utilizing only pure GML functionality. This means it should be 100% cross-platform. But on the other hand quite resource-demanding (already proved) and slow to develop.
I would like to slowly share with you my progress, concept and first thoughts. Additionally I would like to get some feedback, what users would actually need, and how they would like to use it. On the other hand this is not a "white board", I have already made some design decisions, and these are not a thing to change.
Below please find attached the first "rough" version of a document describing the systems functionality and structure:
http://bit.ly/SAE_doc_01
I'm simply recreating a well known structure of a classic analogue mixer setup - widely known from DAW software. It's a workflow structure which evolved for last 60 years of music production, there is really no sense reinventing the wheel. This means we have a master channel with basic controls and fx bin/container. Source for master channel are outputs of mixer channels, with basic controls, fx bin, sends, and an input source.
User can choose from couple of audio sources - ie. generator/synth, but the most important source is the standard audio file playback.
GMS allows only to load standard wave files to buffers, it's not possible to use build in "sound resource".
Second bump, the playback of multiple sounds is quite resource demanding - playback of 8 sounds at a time is causing drops using VM by 60FPS game speed on my i7 2600 CPU, and there is nothing more - only the engine. Buffer read/write functions are taking most of the CPU time. Fortunately using YYC things are looking much, much better. Using higher game speeds also helps.
So main list of functionality will be:
- playing audio loaded from included wave files,
- incorporating a classic analogue mixer workflow with sends/fx/etc,
- basic fx - eq, filters, simple reverb, delay, echo, chorus, compression, limiting etc,
- basic audio analysis in order to trigger events in game, or control objects,
- functions for control and automation of mixer and fx parameters,
- debug GUI with mixer view, where user could manually set the parameters in order of creating desired sound scenes.
Optional functionality:
- generators, basic synths,
- record input source,
- midi playback, mod playback,
- user programmed fx,
- advanced beat detection,
I'm currently cleaning up my project, the core base is up and running, with first basic fx and most of the controls. Next week I'll be programming a nice GUI, in order to present you a demo video, and maybe some practical use examples.
Please stay tuned, and give ma a feedback if you feel something is missing here, or you have some suggestions.
Last edited: