squiggythings / WaveTracker

A free and open source music-making software for Windows. Uses wavetable synthesis and sampling to generate sounds.
https://wavetracker.org
MIT License
484 stars 15 forks source link

[Feature Request] Wavetable length/height configuration & PSG Noise? #44

Closed N-SPC700 closed 3 weeks ago

N-SPC700 commented 1 month ago

I'm requesting these features since I think it'd help the usability of the tracker more, at least in my opinion.

Noise generator

This one sounds silly. I know, I could just sample PSG noise from another tracker, or use drum samples, but with what I want to do, I don't think this will work. Since the tracker seems intent on being chiptune-like, I feel like it'd only be fitting. Simultaneously, I feel like I'm missing something myself, since I combed over the documentation and it surprised me that there was no mention of PSG noise being a viability in the program. I think a simple one could copy the noise pattern in the AY-3-8910, TI SN76489 (or its Sega variant since it differs) or C64, or something else. Maybe it could even be configured. Ultimately I think this would be a nice addition, since not everyone can/wants to break out the samples for a simple hihat sound.

Configurable wavetable lengths

The reasoning for this one is because Wavetracker uses exclusively 64-step long and 32-high wavetables, which matches no existing PSG. While this would be fine, it makes converting existing wavetables a lot harder. The feature being requested would give wavetable entries in the wave banks a configurable height and length (obviously to something reasonable for the program).

For example, if I wanted to convert a Gameboy wavetable, or a 32-step long N163 wave, I currently need to:

  1. Double every single value each wave has (Wavetracker is effectively 5-bit, going to 32) since the GB and N163 are 4-bit.
  2. Double each wave entry somehow. There are two options to tackle this:
    • First option is to simply paste the wave in twice. This causes it to play an octave higher than it needs to, meaning it cannot play bass frequencies as well.
    • Second option is to manually duplicate every step of the wave, which lets it play at the desired octaves without compromising the low end.
  3. An extremely unreliable and sometimes inaccurate method is to attempt porting the wave merely by eye and hoping the result is accurate enough.

However, the wave length/height process varies from chip to chip, here are some examples:

In short, while converting from all of these is doable, it is extremely tedious to do, and I think configurable wave lengths would also be useful for those that make new waves, too, since 64x32 waves are rather overkill in some cases.

Arg-xz commented 1 month ago

Yeah, both the PSG Noise and Wavetable length and height config would be really nice to have. It would be great to have PSG noise so I wouldn't have to grab samples just for drums.

cxong commented 1 month ago

It seems that a noise generator is coming soon? https://github.com/squiggythings/WaveTracker/commit/201af8630a7525952eba3b7a5d9fa4b62cc245df