r3842 - in trunk: . bse



Author: timj
Date: 2006-07-15 18:15:18 +0000 (Sat, 15 Jul 2006)
New Revision: 3842

Modified:
   trunk/TODO
   trunk/bse/ChangeLog
   trunk/bse/gslwaveosc-aux.c
Log:
Sat Jul 15 20:06:24 2006  Tim Janik  <timj gtk org>

        * gslwaveosc-aux.c: use doubles instead of floats to store temporary
        filter state. this avoids artefacts for larger pitch values.




Modified: trunk/TODO
===================================================================
--- trunk/TODO	2006-07-15 14:32:42 UTC (rev 3841)
+++ trunk/TODO	2006-07-15 18:15:18 UTC (rev 3842)
@@ -17,6 +17,9 @@
 - merge 2 * BseSimpleADSR into 1
 - delete BseAtanDistort
 - nuke compat code
+USAGE:
+- in song view, there should be a way to directly load wave files
+- when popping up the synth selection, if no synth is presnet but waves are available, the notebook should show the Waves page
 MISC:
 - fix bsepcmdevice-alsa.c:alsa_device_retrigger():g_malloc0(): to instead use bse_engine_const_zeros()
 - make BSE_REGISTER_OBJECT() define parent_class, similar to G_DEFINE_TYPE

Modified: trunk/bse/ChangeLog
===================================================================
--- trunk/bse/ChangeLog	2006-07-15 14:32:42 UTC (rev 3841)
+++ trunk/bse/ChangeLog	2006-07-15 18:15:18 UTC (rev 3842)
@@ -1,3 +1,8 @@
+Sat Jul 15 20:06:24 2006  Tim Janik  <timj gtk org>
+
+	* gslwaveosc-aux.c: use doubles instead of floats to store temporary
+	filter state. this avoids artefacts for larger pitch values.
+
 Sat Jul 15 04:11:06 2006  Tim Janik  <timj gtk org>
 
 	* bsebiquadfilter.c (bse_biquad_filter_class_init): 

Modified: trunk/bse/gslwaveosc-aux.c
===================================================================
--- trunk/bse/gslwaveosc-aux.c	2006-07-15 14:32:42 UTC (rev 3841)
+++ trunk/bse/gslwaveosc-aux.c	2006-07-15 18:15:18 UTC (rev 3842)
@@ -46,8 +46,6 @@
   wave_boundary = wave_out + n_values;
   do
     {
-      gfloat ffrac;
-
       if (CHECK_SYNC)
 	{
 	  gfloat sync_level = *sync_in++;
@@ -113,8 +111,8 @@
       /* process filter while necesary */
       while (wosc->cur_pos >= (FRAC_MASK + 1) << 1)
 	{
-	  gfloat c, c0, c1, c2, c3, c4, c5, c6, c7, c8;
-	  gfloat d, d0, d1, d2, d3, d4, d5, d6, d7;
+	  double c, c0, c1, c2, c3, c4, c5, c6, c7, c8;
+	  double d, d0, d1, d2, d3, d4, d5, d6, d7;
 	  gfloat *x;
 
 	  if (UNLIKELY ((block->dirstride > 0 && wosc->x >= boundary) ||
@@ -172,16 +170,14 @@
       if (wosc->cur_pos >> FRAC_SHIFT)
 	{
 	  guint k = wosc_j - 2;
-
-	  ffrac = wosc->cur_pos & FRAC_MASK;    /* int -> float */
+	  double ffrac = wosc->cur_pos & FRAC_MASK;    /* int -> float */
 	  ffrac *= 1. / (FRAC_MASK + 1.);
 	  *wave_out++ = y[k & 0x7] * (1.0 - ffrac) + y[(k + 1) & 0x7] * ffrac;
 	}
       else
 	{
 	  guint k = wosc_j - 3;
-
-	  ffrac = wosc->cur_pos;                /* int -> float */
+	  double ffrac = wosc->cur_pos;                /* int -> float */
 	  ffrac *= 1. / (FRAC_MASK + 1.);
 	  *wave_out++ = y[k & 0x7] * (1.0 - ffrac) + y[(k + 1) & 0x7] * ffrac;
 	}




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