godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.13k stars 85 forks source link

An AudioWaveGenerator Node to produce frequency sounds #33

Open KoreTeknology opened 5 years ago

KoreTeknology commented 5 years ago

Describe the project you are working on:

The aim of this project is to add to the audio features a new type of node: Audio Wave generator, this node will produce a sound based on properties, related to audio synthesis.

Describe how this feature / enhancement will help your project:

At the minimal level, this node will get some basic settings: Waveforms, ADSR, rate, pitch on a secundary level, the enveloppe feature can be extended

Show a mock up screenshots/video or a flow diagram explaining how your proposal will work:

here is a preview: newnode

If this enhancement will not be used often, can it be worked around with a few lines of script?:

not really, even with scripts, it is a bit more complicated as the node get some extra properties that will be mapped onto controllers or requests during animations..

Is there a reason why this should be core and not an add-on in the asset library?:

The main reason is that wave generation is a great advantage during creating beep, crunch and other fx... the sound processing is relevant for most of the games/app created today... apart from that, i would encourage to get this feature as a standard, a great help, even if you are doing proptotyping and not want to create or load samples.

About the version of this, i would ask you to get some feedback about the choice to make an addon or a pure implementation in the audio core...please, let me know what you think... i didnt started yet to implement this, but i am used to do this kind of work in C++, maybe i should start... anyway, this feature can be done an other way, apart from loading a wavfile, but still, without the parameters Have a great day

groud commented 5 years ago

Sorry, there is an issue template, please it fill in.

KoreTeknology commented 5 years ago

hi groud... i just followed the guide... so where goes this kind of proposals ? please

groud commented 5 years ago

This kind of proposal can stay here, but you need to fill in the issue template, as it is asked on the top when you open an issue : Describe the project you are working on: Describe how this feature / enhancement will help your project: Show a mock up screenshots/video or a flow diagram explaining how your proposal will work: Describe implementation detail for your proposal (in code), if possible: If this enhancement will not be used often, can it be worked around with a few lines of script?: Is there a reason why this should be core and not an add-on in the asset library?:

KoreTeknology commented 5 years ago

ah ok, i was deleting the template to answer it properly and describe this project, i wasnt sure, thx for your support, i am modifying the request to fit your template, thanks to accept it

groud commented 5 years ago

Thanks :)

reduz commented 5 years ago

Is there a reason why this should be core and not an add-on in the asset library?:

girng commented 5 years ago

very cool, but might be better suited as an addon? not sure

KoreTeknology commented 5 years ago

You are right girng, now i look at it and for sure, as this must be done within much more features, and i (as many) want to have a clean code of godot core, i see here the oportunity to publish as an addon... let see the 3.2 audio updates and check for the next release what people think about audio "devices" and tools included, thx to all

NoodleSushi commented 4 years ago

I could try developing an add-on that does this; only downside is that playing on a very specific moment in time (syncing e.g. rhythm games) wouldn't be possible. It's gonna have a very short delay like any other AudioStreamPlayers.

RoseAndres commented 3 years ago

I found this discussion looking to see of Godot already had something like this in the engine or something in the gdscript api to make the non-trivial task of coding waveforms easier.

I have a game I've been working on that has zones that affect the player character from some kind of waveform node/api would be the perfect fit for this.