ref: cfb81dff3e9a09bd943bec1a814f35c41432c356
parent: 4f9a59e413f0cf404b136a7a1696968ecddd8372
author: Chris Moeller <kode54@gmail.com>
date: Mon Jan 11 04:00:26 EST 2010
{11/29/2006 6:00:28 AM}2006-11-01 00:50 UTC - kode54 - IT renderer now cuts existing notes when it reaches a note where the instrument references an invalid sample. (jumping under trees.it) 2006-10-14 08:33 UTC - kode54 - IT renderer pattern loop processor now resets the rows played to clear table per channel regardless of whether order changed since last loop start was initiated. This is correct, since two pattern loop starts in a row means that a loop will never jump to the first loop point. git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C136
--- a/dumb/src/it/itrender.c
+++ b/dumb/src/it/itrender.c
@@ -1225,7 +1225,7 @@
if (!channel->played_patjump)
channel->played_patjump = bit_array_create(256);
else {
- if (channel->played_patjump_order != sigrenderer->order)
+ //if (channel->played_patjump_order != sigrenderer->order)
bit_array_reset(channel->played_patjump);
}
channel->played_patjump_order = sigrenderer->order;
@@ -1318,7 +1318,7 @@
channel->sample = channel->instrument;
channel->truenote = channel->note;
}
- if (!(channel->sample >= 1 && channel->sample <= sigdata->n_samples && (sigdata->sample[channel->sample-1].flags & IT_SAMPLE_EXISTS) /* && sigdata->sample[channel->sample-1].C5_speed*/))
+ if (!(channel->sample >= 1 && channel->sample <= sigdata->n_samples && (sigdata->sample[channel->sample-1].flags & IT_SAMPLE_EXISTS) && sigdata->sample[channel->sample-1].C5_speed))
channel->sample = 0;
}
@@ -2673,7 +2673,7 @@
instrument_to_sample(sigdata, channel);
if (channel->note < 120) {
if ((sigdata->flags & IT_USE_INSTRUMENTS) && channel->sample == 0)
- return 1;
+ it_retrigger_note(sigrenderer, channel); /* Stop the note */ /*return 1;*/
if (entry->mask & IT_ENTRY_INSTRUMENT)
get_default_volpan(sigdata, channel);
} else