shithub: dumb

Download patch

ref: 46a337c17f1921640757007c67f5af3ca2a3ba19
parent: fed6a743dd695249dde84369b09ac8a4e6facfe7
author: Chris Moeller <[email protected]>
date: Fri Sep 27 15:59:47 EDT 2013

Envelopes do not carry when New Note Action is Cut

--- a/dumb/src/it/itrender.c
+++ b/dumb/src/it/itrender.c
@@ -1730,7 +1730,7 @@
 	int pitch_env_tick = 0;
 
 	DUMB_IT_SIGDATA *sigdata = sigrenderer->sigdata;
-	unsigned char nna;
+	unsigned char nna = ~0;
 	int i, envelopes_copied = 0;
 
 	if (channel->playing) {
@@ -1749,7 +1749,7 @@
 		else
 			nna = channel->playing->instrument->new_note_action;
 
-		if (!(channel->playing->flags & IT_PLAYING_SUSTAINOFF))
+		if (!(channel->playing->flags & IT_PLAYING_SUSTAINOFF) && nna != NNA_NOTE_CUT)
 		{
 			vol_env_tick = channel->playing->volume_envelope.tick;
 			pan_env_tick = channel->playing->pan_envelope.tick;
@@ -1858,7 +1858,7 @@
 	if (!channel->playing)
 		return;
 
-	if (!envelopes_copied && sigdata->flags & IT_USE_INSTRUMENTS) {
+	if (!envelopes_copied && sigdata->flags & IT_USE_INSTRUMENTS && nna != NNA_NOTE_CUT) {
 		for (i = 0; i < DUMB_IT_N_NNA_CHANNELS; i++) {
 			IT_PLAYING * playing = sigrenderer->playing[i];
 			if (!playing || playing->channel != channel) continue;