From 3a7b7e1fac6159973992181d83bf2414d9e3bada Mon Sep 17 00:00:00 2001 From: Angel Ortega Date: Mon, 17 Mar 2008 13:56:32 +0100 Subject: [PATCH] Fixed the loop start and end parameters in sf2. --- ss_core.c | 8 +++++++- ss_input.c | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ss_core.c b/ss_core.c index 7ec4b40..41d0503 100644 --- a/ss_core.c +++ b/ss_core.c @@ -217,8 +217,14 @@ static sample_t ss_pick_sample(struct ss_wave *w, int channel, double offset) o = (int) offset; /* is the wanted sample not in memory? */ - if (o < w->p_offset || o > w->p_offset + w->p_size) + if (o < w->p_offset || o > w->p_offset + w->p_size) { + + if (verbose >= 3) + printf("ss_pick_sample: offset: %lf, p_offset: %d, p_size: %d, size: %lf, loop_end: %lf\n", + offset, w->p_offset, w->p_size, w->size, w->loop_end); + ss_load_page(w, o); + } wave = w->wave[channel]; return wave[o - w->p_offset]; diff --git a/ss_input.c b/ss_input.c index a62191d..3227f4e 100644 --- a/ss_input.c +++ b/ss_input.c @@ -638,8 +638,8 @@ int ss_load_sf2_file(struct ss_ins *i, const char *file, const char *iname) sample_rate, -1 ); - w->loop_start = loop_start; - w->loop_end = loop_end; + w->loop_start = loop_start - start; + w->loop_end = loop_end - start; w->base_freq = ss_note_frequency(base_note); w->min_freq = ss_note_frequency(min_notes[m]); w->max_freq = ss_note_frequency(max_notes[m]); -- 2.11.4.GIT