godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.11k stars 69 forks source link

Add a node / music editor that uses a simple, custom - made synth for Godot game music . . #2209

Closed jasperbrooks79 closed 2 years ago

jasperbrooks79 commented 3 years ago

Describe the project you are working on

A Tomb raider game . .

Describe the problem or limitation you are having in your project

I recently got a Sega Megadrive sound emulator, for my music program . . I wanted to ask, if we could get a custom little music and, effects maker, that works like C 64 / classic arcade sound emulator . .

https://www.youtube.com/watch?v=U6aOpFhO6zU

2021-01-28 0918

It basically just stores notes, and uses a simple sound - frequency modulator or, ' synth ' to generate computer sounds . . I really love the OLD, classic Amiga and, C 64 sounds, and was hoping, Godot could get a ' music / sound / theme ' tab, next to 3D, 2D, Script, Assetlib, where one can make nice computer sounds . . It's very small in size, and an advantage is, the ' scores ' are kept in a very small format . . it could be nice for web - games, and it could be fun, for Godot devs to make their own custom version of, a classic game synth, made only, for Godot, with a library of sounds and, effects, to get started . . it could also support samples, in wav, perhaps . . while it'd add a bit to the size, of the engine, perhaps 50 KB, or 100 KB, one could make 10 hour long songs or, compositions, that then only take up 50 kb, for each one . . Remember the old Amiga ' intros ' . .>

https://www.youtube.com/watch?v=sTx0Xrr5rvc

While one can make them in an external program, they have to be saved, as .wav or, .ogg, which takes space . . And, it could be an amazing challenge, to make a video synth, that was only for Godot, and ran in the program . . if we could also have a chord prog. tracker, it'd be complete, and a little synth visualizer >>

2021-01-28 0748

2021-01-31 0924

if it supported small samples, it could be endlessly customizable . . and, one could make any classic arcade sound effect, very fast, in Godot, and the size of the games, would be drastically reduced, in terms of audio or, music . .

Here's a Sega Mega drive game, aren't those amazing and, cool sounds . . .

https://www.youtube.com/watch?v=kLzblT3JWVU

The synth just creates frequencies and, layers . . Suppose we had 8 tracks, or 16, and some classic sounds, bass, drum, snare, and, where one can tweak each sound, by setting some simple settings . . <3 those are some of the prettiest and, cool sounds I ever knew, especially good, for say browser games, to lower download size . . the synth is just some math, that makes the frequencies or, so . .

2021-01-28 0928

Make, a special synth, modulator for Godot, that makes good video game sounds, all way back to, C64, arcade, etc . . it'd also run well on android, tablets, so on <3 and, give that ' classic ' video - game sound, prob. not be bigger, than 20 kb, the code <3

Describe the feature / enhancement and how it helps to overcome the problem or limitation

Well, I love video - game music, this would be a cool feature, to emulate classic systems and, arcade ya ya . .

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

Add a ' music / score / sound ' bar, next to 3D, 2D, Script, which is a simple music track editor, maybe with support for small samples, etc . . specifically made, to re-make or, pay tribute to all classic video games, from way back when <3 <3 . .

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

I can't change the editor, this much . . :OO :OO . . .

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

Well, it would be very small, and allow users to make the BEST, classic video game music, if it was done well, specifically made for Godot, paying tribute to all classic synths, in the best way <3

you could call, it Godot Power synth, or Godot Rage synth, something that can blast a stereo or, something cool . . :OO . . or, Godot Tempo Synth <3 . . :OOO . .

also, it could be cool, to try and make the ' ideal ' video game music ' synth ' looking back, at all the years <3 . .

jasperbrooks79 commented 3 years ago

Axel F theme . . https://www.youtube.com/watch?v=SlyK_elUmIw

I saw some C 64 tracks, the size is like 2 KB, for something like <3 just add more tracks, improve the synth, over time . . and, one can make amazing music, using a PC keyboard and, mouse, alone . . <3

or, add support for a format, like in sunvox, so you just import the nodes, but I think you need a special Godot synth <3 prob. easy to make, if one knows a bit about computer music or, sound . . <3

ps. over time the synth could be improve, to make ' better ' bass sounds, even big bands . . ' Godot Symphony synth ' . .

so, one can add ' better ' and better COMPUTER sounds, to get that PC ' vibe ' ya ya . . first part, is making it sound, like old arcade machines or, Amiga . . :OO . . over time, the Godot team could vote on new, or more sounds, to add to what presets, it has . . make a Superb video - game music synth, or perhaps a few ones, one for old games, then for 1990's games or, so . . Godot Classic Synth, Godot Neo Synth, Godot Power Synth, Godot Super-Core Synth . . <3 . . it's just emulations, so it doesn't take much space or, so . . :OO

so, then game devs can make iconic stuff, like Super Mario theme, if they want, fast . . <3 <3

or . . SF2 Chun-Li theme >> https://www.youtube.com/watch?v=8HjCFw8Hz8s

SF 2 Guile theme, or so . . https://www.youtube.com/watch?v=FEdbR0jnfvQ

<3 ya ya

those classic themes, made by a solo dev, could one day be played, with a big orchestra, live . .

like, Snake eater ( MGS ) theme . .> https://www.youtube.com/watch?v=I8pg2XoQTlA

<3 . .

the advantage is incredible low data size and, also it could be fun for Godot devs, to decide what sounds get added, each year, like a new Beeep or, boooom, or, so on . . <3

if it was stored in a MIDI format, other programs could open, like LMMS, and the synth was a VST, then one could open it, and recreate it in any music program, and record instruments, even entire symphony orchestras, like the BBC symphony VST, one can get for free <3

https://www.youtube.com/watch?v=pwiLvezaWWg

then, one could combine video game music, with a rock - band or, symphony, save it as a .wav or, .ogg, since that can't be done, in Godot . .

also, if the sample editor worked well, so after importing a .wav, one just drag-drop into a synth, then the sky's, the limit :OO . . <3

jasperbrooks79 commented 3 years ago

also, if it supported surround sound, so it was easy to send the sound, back and forth, between speakers, then one could create stuff, like a rolling effect, bass that, shakes the floor, so on <3 Thx . . since cinemas use 10 speakers, and one sub-woofer, if one could go that high, then one could make a video - game theme, that could be played back in a cinema, for like speed - runs or, big competitions . . :OO . . imagine hearing one's video game theme, blasting in a cinema, while players compete or, gather to play a nice, good game, together <3 . .

Cool . .

that'd be, epic, super - cool, wonder-ful . . <3

that feeling, when the seats shake, or the room ' vibrates ', are just sound waves, making the floor and, air ' compress ' and, ' float ', I think <3 . . Thanks . .

ps. one could make an optimized synth for, android of, mobile . . <3

the idea is, to make ' best ' custom track editor, for video games <3 , custom, for Godot <3 <3 . . . .

YuriSizov commented 3 years ago

We prefer not to overburden the editor with features which are better handled by specialized tools. For example, LMMS is a good option for audio production. There are even VSTs/plugins that specialize in game sounds (like a free retro one named "sfxr").

If someone wants to support some kind of editor like this in Godot, this is a perfect use case for plugins.

jasperbrooks79 commented 3 years ago

I just felt it was cool, if in 5 - 10 year, maybe . . Godot Synth had become like, a ' classic ', and people could be like, man, that was done in Godot, with those nice sounds <3 . . same way, we feel about Mario theme today <3

the size of say ProTracker, is like 0.2 megabytes, and it'd give Godot team something to work, a chance to design a new UI, for such a program and, to make something, that in 10 years, might be seen, as a source of joy and, fond memories among gamers, that they can use, in their projects or, music software <3

that ' Godot ' sound, or so . . . <3 so, cool . .

also, for an optimized, effective synth, it would not require much power, from CPU and, the file size of tracker or, MIDI files, is so low, like 20.000 bytes, for a 30 minute song, often . . :OO

RichardEllicott commented 3 years ago

i also would some sort of basic synth to support some quick oldschool style development

it's fun to make old fashioned looking tilemaps, it feels natural for this i should be able to make bleeps and bobs.... but i fear how on earth would the Godot team be able to decide on which synth to use?

at the moment i think this proposal may be too complicated.... is there any sort of standard library out there that encapsulates this so the Godot devs don't have to invent it?

for example, "fluidsynth", is this appropriate? it is a SF2 based synth... i'd have thought since we had these in our soundblaster days, they used a synthesis model similar (with more channels) to these old consoles (they had setting similar to FM). I think that "sound fonts" allowed FM like stuff, and also samples to.

By using a popular open sourced project like fluidsynth maybe it's possible, cos it's sort of a standard

Calinou commented 3 years ago

@RichardEllicott FluidSynth is LGPL-licensed, which is too restrictive to be included in core Godot. That said, nobody prevents someone from developing a third-party C++ module or GDNative add-on for it.

It looks like someone started creating a GDNative add-on for FluidSynth, although it was abandoned: https://github.com/nonameentername/godot-gdnative-fluidsynth

RichardEllicott commented 3 years ago

@RichardEllicott FluidSynth is LGPL-licensed, which is too restrictive to be included in core Godot. That said, nobody prevents someone from developing a third-party C++ module or GDNative add-on for it.

It looks like someone started creating a GDNative add-on for FluidSynth, although it was abandoned: https://github.com/nonameentername/godot-gdnative-fluidsynth

there's no point now of taking up the challenge now, a shame they opted to use the Stalman license!

i doubt it's the easiest native thing to do either, having to stream back to the audio buffer.

no other SF2 based synths out there? i google and it doesn't show anything up.... i was thinking because there is this standard called "Soundfont 2" that was why it'd be appropiate... it'd have already been chosen to accommodate them sounds the SoundBlaster was pumping out in the early 90s ..... i more would like there to be a standard we could all use, as opposed to everyone doing various GDNative experiments (putting it outside the reach of many users)

fire commented 3 years ago

Please try https://bitbucket.org/arlez80/godot-midi-player/src/master/ and https://bitbucket.org/arlez80/godot-mod-player/src/master/ since these exist there's not much need to add to the core of godot.

jasperbrooks79 commented 3 years ago

the point is, the Godot devs do AMAZING things, all the time . . technically speaking, the old arcade synths are basically just ' oscillators ' or, frequency makers, when you put a computer generated frequency into some SPEAKERS, it says BEEEEP, or other stuff . . same as, any recording is just, some frequencies and, amplitudes . .

2021-02-03 0418

that's how all classic synth sounds are generated, from the arcades . . one just need to send the ' wave ' into the sound card, and it makes the ' sound ', like a grammophone or, tape recording . . a microphone records waves, in the air, and ' stores ' them on a physical medium, when they're played again, the SPEAKERS 1 - to - 1 makes the same ' sound vibrations ' . .

2021-02-03 0421

so, to get started making a ' synth ', all you have to do is make some ' sounds ', that are sine waves, and send them to the sound card . .

Then, make a ' synth ', where you can change settings like hertz, amplitude, so on . .

2021-02-03 0423

Start, by making a ' sine ' wave, and make the sound card output that ' signal ', in the speakers . .

Here's a tutorial . . It has demos of how a sine wave and, another type of wave ( box wave ) sounds, it's really cool . .

https://www.youtube.com/watch?v=v4XG_NHLWcs ( 8 minutes )

You can hear, those sounds are CLASSIC arcade sounds . .

then, all you have to do, to create ' new ' sounds, is do ' math ' on the waves, maybe sin ^ 2, or take a slower sine wave ( Hz ) and, add a faster sine wave ( fast Hz ), and then you get something interesting . .

it's super - easy to make, the question is, to make the sound card ' play ' the signal . .

Then, when you have a bunch of sounds, you could make say 10 presets, for a ' bass ', a ' beep ', etc . . that could become the ' classic ' Godot sound library, and the code would be very low, basically make sound wave ( sine curve ) and, send it to sound card . . then, over time, the Godot team could experiment with it, and make some sounds, that were made for ' Godot ', and in 5 - 10 years time, when someone makes a NEW game, people might recognize it, just from the sound, and say, THAT was made in Godot, my favorite Godot games growing up, had THAT beeep, THAT'S Godot . .

Like, the Mario theme <3

Then, when you make the ' synth ' interface, just add some knobs that change frequency, Hz, and even add weird stuff like ' Add ', ' Subtract ', ' Multiply ' . . Boom, you have an infinite amount of sounds, in 5 - 10 minutes . . <3

it's basically all the stuff shaders do, adding, subtracting, using sine waves to make things fade, and appear again, by altering the transparency or, alpha value . . it just doesn't get sent into a ' texture ' or, shader, that displays it visually, but into the sound card, which send the vibration or, frequency into the speakers, aka sound <3 . .

I think it makes much sense, to add a chip-tune editor, to Godot . . and it, starts with sine or, cosine waves, audio often uses sine waves . .

advantage is, the size of music, goes from megabytes, to say 2 kbyte, for 10 minute songs . . <3

also, it'd be so cool, to have a very nerdy, music editor, also if some Godot devs had the time, and were bored or, needed a hobby, making this could be SO cool <3 . .

here's some music made on C64, it didn't have a sampler, so it's all made, using sine waves, and flat waves . .

https://www.youtube.com/watch?v=wgle3x_XI3M ( 7 minutes, Commodore 64 so-called ' Cracktro ' music ) . . <3

Also, it's good nostalgia, and the music is super - cool . . I get, hyped over, such stuff . . <3

there's no samples, it's 100 % computer - generated . . also, it could be an amazing challenge, for Godot team to design the interface, for working with it . . <3 . .

Skærmbillede (975)

Godot has an amazing user - interface, is user - friendly, maybe devs could make a really nice chip - tune interface, start there <3 . .

it's same question, if I want to use Godot for making 2D games only, why is the 3D editor even there, I could even as a 2D only dev suggest you remove the 3D editor, since it takes up space . . but, there's agreement even though not everybody wants to make 3D, it should be there, and even if not every-body wants to make chip - tune ( or later, sample - based Amiga 500 ) music, maybe it ' should ' be there <3 also, it'd be super - good fun, and lower disc - space requirements for mp3, ogg, and for long music, it wouldn't have to be decompressed, and so be faster for the CPU, especially if the wave calculations could be done, some of them, on the GPU, if it's good, at that . . like CPUParticles and, GPUParticles, CPUSynth or, GPUSynth, or CPUWave or, GPUWave, or something . . <3

music is such an important part of video games, and a chip - tune editor + synth + ' arranger ' certainly is an important part of my games, even if I don't use 2D, my UI is a 3D UI, only, with textures with text on it . . so, why is 2D editor even there, well it's bec. not all, but ENOUGH want 2D graphics or, so, in THEIR titles <3 . . . .

jasperbrooks79 commented 3 years ago

a voice recording, is ALSO just some waves, when should speakers ' move ' in or, ' out ', up down . .

2021-02-03 0442

it's just really complex, when it's a voice or, music recording, with real instruments . . but, that's basically just a ' signal ', tells the speakers when to push ' out ' or, ' in ', which makes the play - back . . it'd be super - easy to make, if one started with sine waves, then tried all kinds of math on the waves, to see what that does . .

then, one often add some presets, imagine if one's favorite game, growing up, had been made in Godot, and one could open Godot, and start ' using' those sounds . . it could become almost time-less, like Mario theme so, many, many good arcade games . . <3

over time, you can make, so one can add a ' sample ', drop a sound in, and then put ' that ' in the track or, chord - line editor or, so . . <3

Godot has it's own visual script, it's own 3D editor, it's own code language, GDScript, it's own little version, of what the other engines do . . but, I wish one could make chip - tunes in Godot, using an in - house, super - custom user - friendly interface, for fun . .

Thx . . . <3 <3

ps. I edited the above post a ton, I only post this and, I'm editing this now, or so . . <3

2021-02-03 0448

can't you almost hear the sounds, of arcade, Nintendo, Sega system, C 64 <3 <3 . .

also, it could be FUN challenge, to make it, so it integrates well with the engine, it'd take like maybe 0.2 megabytes, and if one NEVER clicks the ' Music ' or, ' Theme ', or ' Music ' button, one NEVER sees that editor and, won't have to use it, at all . .

Please . .

Super Mario theme, later played by an entire symphony, people really LOVE these chip - tunes, and the BEST one's go down in history or, become legends . . and, it saves disc - space, and it's a chance for Godot devs, to make a NEW feature, have fun, and see what they can make, also the interface, make it user - friendly, fun . . Thx . . .

https://www.youtube.com/watch?v=Ifdpk82PMr4 ( Mario theme, by a big orchestra <3

also, if the GPU is better at making these waves, or SOME of the calculations, it could be a GPU - enhanced sound wave generator <3 . . just, a crazy idea . . <3

when you send a .wav into the ' sound ' card, it's also just a frequency, speech, music, it's all just stuff, that makes the ' speaker ' diaphragm oscillate or, vibrate . . send in a ' sine ' wave, boom, you have the most basic element, of chip - tunes . . and, 15 years from now, when people make a new Godot game, the classic sounds that you made today, maybe 40 presets, can STILL be heard, and people can be like, MAN that's a good theme, oh boy, I had so much fun, when I heard that music or, score <3 <3 . . .

add . . it'd take minimal space, and if it was a ' button ', top of editor, if you NEVER wanted to use it, like 2D game makers never use the 3D editor anyway, or the other way, or that some people only use visual script, but never GDSCript, or the other way . . there's a TON of stuff already in the engine, that MANY don't use . . but, same as 2D has to be there, bec. it's a part of computer games, and 3D ALSO has to be there, making chip - tunes, imo, even if it isn't used in all games, I think, should be there . .

just make a tab, next to 2D, 3D, and if people don't want to use it, they never have to look at it or, see that editor, same as people that never use say, an AnimationPlayer, won't ever have to see that dock . . <3 also, it'd be fun, for Godot team to make the ' basic ' presets, that most new users will start with :OO in 10 - 15 years, when there's 200 games with those sounds, you can go, HEY, that's from GODOT ! ! :OO as iconic, as Indiana Jones theme or, so . .

also, minimum disc space usage . . MIDI is as compressed, as it gets . . :OO

jasperbrooks79 commented 3 years ago

I updated the comments a ton, this is the proposal, added stuff in first and, second comment, since you get e-mails every time :OO ( I don't get e - mails ?? ! ) ..

last, if you wanted your characters to have ' chip ' sounds, like when the speak, they say beeep-beep-blip-booom-beep-beep, one could make that, as well, to 100 % computer generated characters, also in SOUND - design <3 So good, Thanks ya ya . .

sry, I get a bit austistic, when I don't do things certain way, sry . . so, I edited first posts, like 20 times <3 this, is the last . . <3

like, if you took a sound sine curve, and divided it with TIME, so at 1 second, it is divided with 1, at 2 seconds, with 2 . . then, the curve lowers over time, and you have a ' fading ' sound . . <3 there are, so many options . .

2021-02-03 0537

2021-02-03 0538

it's just, sine functions, all kinds of crazy math and, algorhithms . . <3 <3

so, when making a ' sine synth ', one could have some sliders, that moved with ' snap ', or increments, so one could set frequency to 1 - 10, with 1 steps, or logarhitmic steps, like dB ( decibels ) . .

I really hope we can get this, bec. it's super - nerdy, minimal space, a chance to make my own iconic Mario bros or, arcade them, and even if not EVERYBODY wants music, same not everybody wants 2D, some people do . . maybe you could hire a former industry game dev, that has worked on sound, or someone in the community, part - time, to try and make this . . it'd be a nice job, and when basic chip - tune sine - wave synth is made, what comes next ? . . one can generate all kinds of stuff, and it'd have to be optimized, 'good' code, so it runs well, etc . . maybe hire, a special sound specialist or, engineer, someone from the community that REALLY likes music, and let that person make it, integrate it <3 an AMAZING addition to Godot 4, as I see it . . <3

also, one can make some cool visualizers . . <3

2021-02-03 0547

2021-02-03 0548

it's just, math, sine functions, x^2 functions, 1 / x, addition, etc . . :OO . . like, old dial - up modem sounds, whhheeee, hssss, boooom, beeeep, wrrrzzz . . <3

last, a piano works like, there are repeating keys, 12 in all . .

2021-02-03 0552

after each twelve keys, the frequency is doubled linearly . .

so, if you press ' C ', and then press the next ' C ', it the same sound, but with double frequency ( brighter ), guitars work the same, also bass, so you can make a ' keyboard ', electronically, if you know this . . I think, the steps between them are just divided into twelve, the classic 12 notes, A, A#, B, C, C#, D, D#, E, F, F#, G, G# . . <3

also, if a Commodore 64 could make amazing music, I don't think modern computers would be very slowed at it, the alternative is to have to decompress high - quality .ogg files, at run - time, which is maybe slower . . <3

the last thing it need, is a ' final ' modulator, where one can control volume, so one can conduct it, like a symphony, or add effects like more bass, more treble, more mid-tones or, fading, sudden burst . . <3

2021-02-03 0605

and, maybe some classic sounds, like reverb, chorus, made mathmatically . . just bursting certain frequency ranges . .

2021-02-03 0609

and, some final modulations or, processing . . <3 it's all, math, functions, waves, sine curves, etc . . and, one can make amazing sounds, when one gets good, at it, just needs a nice user - interface, and some preset sounds, to start on <3 . .

you could even contact people, at open source chip - tune, like sunvox, and maybe pay them part - time, or hire one full - time, to make a bad - ass chip - tune composer / director interface and, experience . . :OO

Calinou commented 2 years ago

Closing, as audio production of this kind is better suited to third-party tools. For MIDI output, see https://github.com/godotengine/godot-proposals/issues/2321.

fire commented 2 years ago

This proposal is also a less focused / duplicate version of https://github.com/godotengine/godot-proposals/issues/3394 which is still open.