HackerN64 / HackerSM64

A Super Mario 64 decompilation repo based on CrashOveride95/ultrasm64 that aims to provide a flexible, easy-to-use base for creating romhacks.
345 stars 160 forks source link

Remove artifacting that can occur if a note with no attack is played #486

Closed gheskett closed 1 year ago

gheskett commented 2 years ago

ADSR envelopes are set so a new note always starts at 0 volume and then increases to a destination volume over time. Currently it is not possible to start a note at full volume, which is not good for especially percussion samples. Setting an attack value of 1 isn't too bad for punchiness, but the way the volume change was implemented means the sample will go from 0% to 100% at once after it has already been playing for 1 update, which may result in a very noticeable popping sound (this is probably why Nintendo never used anything smaller than 2 here).

Wimpy percussion can make M64s sound substantially worse than they deserve. This is a silly issue and needs a workaround, probably in the form of supporting envelopes with initial 0 values. Unfortunately this can't be applied to streamed tools because it would likely crash other repos, but values of 2 are usually good enough for those anyway.

gheskett commented 2 years ago

Further investigation has me to believe that the envelopes are not the reason this happens. Further research is needed for proper diagnosis, but this issue is still otherwise valid.

gheskett commented 1 year ago

Further investigation has me to believe that the envelopes are not the reason this happens. Further research is needed for proper diagnosis, but this issue is still otherwise valid.

Figured this out for real, now the open PR is fully complete and is ready for review.