[beast/wip/soundfont: 815/832] BSE: SF2: use mixfreq to compute number of silent samples required for done output



commit 62ee1805e77727da6210d6125336610a9107bd38
Author: Stefan Westerfeld <stefan space twc de>
Date:   Fri Mar 8 20:28:38 2013 +0100

    BSE: SF2: use mixfreq to compute number of silent samples required for done output

 bse/bsesoundfontosc.cc |    3 ++-
 bse/bsesoundfontosc.hh |    1 +
 2 files changed, 3 insertions(+), 1 deletions(-)
---
diff --git a/bse/bsesoundfontosc.cc b/bse/bsesoundfontosc.cc
index 6f84701..59c80ae 100644
--- a/bse/bsesoundfontosc.cc
+++ b/bse/bsesoundfontosc.cc
@@ -115,6 +115,7 @@ static void
 bse_sound_font_osc_init (BseSoundFontOsc *self)
 {
   memset (&self->config, 0, sizeof (self->config));
+  self->config.silence_bound = bse_engine_sample_freq() * 0.020;  /* output is zero for 20 ms => set done 
output */
   self->preset = NULL;
 }
 
@@ -400,7 +401,7 @@ sound_font_osc_process (BseModule *module,
        sfrepo->n_silence_samples[sfrepo->channel_map[flmod->config.osc_id]] += n_values;
       else
        sfrepo->n_silence_samples[sfrepo->channel_map[flmod->config.osc_id]] = 0;
-      float done = (sfrepo->n_silence_samples[sfrepo->channel_map[flmod->config.osc_id]] > 1024 && 
sfrepo->fluid_events == NULL) ? 1.0 : 0.0;
+      float done = (sfrepo->n_silence_samples[sfrepo->channel_map[flmod->config.osc_id]] > 
flmod->config.silence_bound && sfrepo->fluid_events == NULL) ? 1.0 : 0.0;
       BSE_MODULE_OSTREAM (module, BSE_SOUND_FONT_OSC_OCHANNEL_DONE_OUT).values = bse_engine_const_values 
(done);
     }
 
diff --git a/bse/bsesoundfontosc.hh b/bse/bsesoundfontosc.hh
index a4c7764..92b11cf 100644
--- a/bse/bsesoundfontosc.hh
+++ b/bse/bsesoundfontosc.hh
@@ -38,6 +38,7 @@ struct _BseSoundFontOscConfig
   int                  sfont_id;
   int                  bank;
   int                  program;
+  int                   silence_bound;
   BseSoundFontRepo     *sfrepo;
 
   int                   update_preset;  /* preset changed indicator */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]