chrismaltby / gb-studio

A quick and easy to use drag and drop retro game creator for your favourite handheld video game system
https://www.gbstudio.dev
MIT License
8.45k stars 468 forks source link

Music Enhancements #687

Open darklink513 opened 3 years ago

darklink513 commented 3 years ago

Is your feature request related to a problem? Please describe. Music making is severely limited. Understanding, of course, that it can't be like LSDJ, it should still be possible to get more sounds out of the wave ~and noise~ channels.

Describe the solution you'd like I am unsure of how GBTPlayer works, however I feel like it should be possible to include more sounds. As for the wave channel, perhaps make it possible to alter the default sounds by providing a .txt file that contains a sequence of 32 numbers between 0 and F. This should be the equivalent of one wave channel sample. As there are currently only eight samples available, perhaps limit the number of these text files to eight. ~As for the noise channel simply increasing the readable range of the samples should be enough to make it more viable. Being limited to sixteen samples at C-5 makes it difficult to get decent sounding percussion.~

Edit: I just read about the noise channel upgrades.

RichardULZ commented 3 years ago

You can eject the engine to change the samples in gbtplayer.s, as 0x78,0x9F etc, each 0-f being a sample. Pitch bends and hardware volume envelope with 9ve were added (advanced, only play in engine), and noise can now use note pitch.

We might migrate to hUGEtracker at some point which would greatly expand things, but migration workflows need to be perfected. Toxa also demonstrated rudimentary sample playback in music with hUGE, by writing a custom routine, though not tested with banking?

Don't get your hopes too high, but hUGEtracker is our most likely upgrade path so far.

Separately, sound effect functions need expanding, I stalled on creating a dynamic noise preview in editor, but otherwise a stale branch with pitch bend and volume envelope is sitting around.