Re: DavOrgan C++ port - please review



   Hi!

On Wed, Nov 15, 2006 at 02:36:12AM +0100, Tim Janik wrote:
> On Mon, 23 Oct 2006, Stefan Westerfeld wrote:
> 
> >   Hi!
> >
> > I just C++ified the DavOrgan module - please review. I'll not post a
> > diff between the old C code and the C++ code (hardly readable, because
> > everything is different), but start with the new implementation as-is
> > and then the rest of the changes I made to SVN to make it work.
> 
> thanks, it's great to see some movement on the porting front.
> 
> note that in the below review i'm also commenting on non-porting changes.
> it's probably best if you simply commit the most straight-foward ported
> version and then apply those comments on the resulting .idl/.cc file.
> note that for the move, you should "svn copy" davorgan.h -> idl and .c -> .cc.
> 
> hm, looking at the changelog, you seem to have done the copying already, but
> not applied the changes, leaving SVN with stale files (i.e. not taken care
> of by the Makefile etc.). comitting this copy only shortly before the
> application of the below changes and removal of the old .c and .h variants
> would have been much better.

Yes. Anyway, here is my new suggestion for an 1:1 port. I didn't include
improvements to the IDL fil you suggest, but concentrated on getting the
mix_freq() dependant table right. Also I am no longer introducing
double (i) casts, at the cost of having the loops that fill the tables
do double <-> int comparisions, which I wanted to avoid before.

plugins/davorgan.idl:
========================================================================
/* DavChorus - DAV Chorus Effect                        -*-mode: c++;-*-
 * Copyright (c) 1999, 2000, 2002 David A. Bartold and Tim Janik
 * Copyright (c) 2006 Stefan Westerfeld
 *
 * This library is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Library General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 * Boston, MA 02111-1307, USA.
 */
#include <bse/bse.idl>

namespace Bse {
namespace Dav {

class Organ : Effect {
  Info    icon      = "icons/organ.png";
  Info    authors   = "David A. Bartold";
  Info    license   = _("GNU Lesser General Public License");
  Info    category  = _("/Audio Sources/Organ");
  Info    blurb     = _("DavOrgan is a modifiable additive organ synthesizer");
  IStream freq_in   = (_("Freq In"), _("Frequency Input"));
  OStream audio_out = (_("Audio Out"), _("Organ output"));
  group _("Base Frequency") {
    Real base_freq = Freq (_("Frequency"), NULL, BSE_KAMMER_FREQUENCY, STANDARD ":dial");
    Int  base_note = Note (_("Note"), NULL, BSE_KAMMER_NOTE, GUI);
    Int transpose = (_("Transpose"), _("Transposition of the frequency in semitones"),
					     0, BSE_MIN_TRANSPOSE, BSE_MAX_TRANSPOSE, 12,
					     STANDARD ":f:dial:skip-default");
    Int fine_tune = FineTune (_("Fine Tune"), _("Amount of detuning in cent (hundredth part of a semitone)"),
					     STANDARD ":f:dial:skip-default");
  };
  group _("Harmonics") {
    Real harm0 = Perc (_("16th"),	_("16th Harmonic"), 100.0, STANDARD ":scale");
    Real harm1 = Perc (_("8th"),	_("8th Harmonic"), 100. * 36. / 127., STANDARD ":scale");
    Real harm2 = Perc (_("5 1/3rd"),	_("5 1/3rd Harmonic"), 100. * 100. / 127., STANDARD ":scale");
    Real harm3 = Perc (_("4th"),	_("4th Harmonic"), 100. * 32. / 127., STANDARD ":scale");
    Real harm4 = Perc (_("2 2/3rd"),	_("2 2/3rd Harmonic"), 100. * 91. / 127., STANDARD ":scale");
    Real harm5 = Perc (_("2nd"),	_("2nd Harmonic"), 100. * 55. / 127., STANDARD ":scale");
   };
  group _("Instrument flavour") {
    Bool brass = (_("Brass Sounds"), _("Changes the organ to sound more brassy"), FALSE, STANDARD);
    Bool reed  = (_("Reed Sounds"),  _("Adds reeds sound"), FALSE, STANDARD);
    Bool flute = (_("Flute Sounds"), _("Adds flute sounds"), FALSE, STANDARD);
  };
};

} // Dav
} // Bse

plugins/davorgan.cc:
========================================================================
/* DavOrgan - DAV Additive Organ Synthesizer
 * Copyright (c) 1999, 2000, 2002 David A. Bartold and Tim Janik
 * Copyright (c) 2006 Stefan Westerfeld
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General
 * Public License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 * Boston, MA 02111-1307, USA.
 */
#include "davorgan.genidl.hh"
#include <bse/bsemathsignal.h>
#include <bse/bsemain.h>
#include <vector>

namespace Bse { namespace Dav {

using namespace std;
using namespace Birnet;  // FIXME: move to Bse namespace
using Birnet::uint32;    // FIXME: move to Bse header

class Organ : public OrganBase {
  /* per mix_freq() tables */
  class Tables
  {
    uint	  m_ref_count;
    uint	  m_rate;

    vector<float> m_sine_table;
    vector<float> m_triangle_table;
    vector<float> m_pulse_table;

    Tables (uint urate) :
      m_ref_count (1),
      m_rate (urate),
      m_sine_table (urate),
      m_triangle_table (urate),
      m_pulse_table (urate)
    {
      double rate   = urate;
      double half   = rate / 2;
      double slope  = rate / 10;
      int    i;

      /* Initialize sine table. */
      for (i = 0; i < rate; i++)
	m_sine_table[i] = sin ((i / rate) * 2.0 * PI) / 6.0;

      /* Initialize triangle table. */
      for (i = 0; i < rate / 2; i++)
	m_triangle_table[i] = (4 / rate * i - 1.0) / 6.0;
      for (; i < rate; i++)
	m_triangle_table[i] = (4 / rate * (rate - i) - 1.0) / 6.0;

      /* Initialize pulse table. */
      for (i = 0; i < slope; i++)
	m_pulse_table[i] = (-i / slope) / 6.0;
      for (; i < half - slope; i++)
	m_pulse_table[i] = -1.0 / 6.0;
      for (; i < half + slope; i++)
	m_pulse_table[i] = ((i - half) / slope) / 6.0;
      for (; i < rate - slope; i++)
	m_pulse_table[i] = 1.0 / 6.0;
      for (; i < rate; i++)
	m_pulse_table[i] = ((rate - i) * 1.0 / slope) / 6.0;
    }
    ~Tables()
    {
      // private destructor; use ref_counting
    }

    static map<uint, Tables*> table_map;   /* rate -> rate specific tables */
    static Mutex              table_mutex;

  public:
    static Tables*
    ref (uint rate)
    {
      AutoLocker locker (table_mutex);

      if (table_map[rate])
	table_map[rate]->m_ref_count++;
      else
	table_map[rate] = new Tables (rate);

      return table_map[rate];
    }
    void
    unref()
    {
      AutoLocker locker (table_mutex);

      if (--m_ref_count == 0)
	{
	  table_map[m_rate] = 0;
	  delete this;
	}
    }
    const float*
    sine_table() const
    {
      return &m_sine_table[0];
    }
    const float*
    triangle_table() const
    {
      return &m_triangle_table[0];
    }
    const float*
    pulse_table() const
    {
      return &m_pulse_table[0];
    }
  };

  /* actual computation */
  class Module : public SynthesisModule {
  public:
    /* frequency */
    double	  m_transpose_factor;
    double	  m_fine_tune_factor;
    double	  m_cfreq;

    /* instrument flavour */
    bool	  m_flute;
    bool	  m_reed;
    bool	  m_brass;

    /* harmonics */
    double	  m_harm0;
    double	  m_harm1;
    double	  m_harm2;
    double	  m_harm3;
    double	  m_harm4;
    double	  m_harm5;

    /* phase accumulators */
    uint32	  m_harm0_paccu;
    uint32	  m_harm1_paccu;
    uint32	  m_harm2_paccu;
    uint32	  m_harm3_paccu;
    uint32	  m_harm4_paccu;
    uint32	  m_harm5_paccu;

    /* mix_freq() specific tables */
    const Tables *m_tables;

    Module() :
      m_tables (Tables::ref (mix_freq()))
    {
    }
    void
    config (OrganProperties *properties)
    {
      m_cfreq = properties->base_freq;
      m_transpose_factor = bse_transpose_factor (properties->transpose);
      m_fine_tune_factor = bse_cent_factor (properties->fine_tune);

      // percent -> factor conversions
      m_harm0 = properties->harm0 / 100.0;
      m_harm1 = properties->harm1 / 100.0;
      m_harm2 = properties->harm2 / 100.0;
      m_harm3 = properties->harm3 / 100.0;
      m_harm4 = properties->harm4 / 100.0;
      m_harm5 = properties->harm5 / 100.0;

      m_flute = properties->flute;
      m_reed = properties->reed;
      m_brass = properties->brass;
    }
    void
    reset()
    {
      uint32 rfactor = bse_main_args->allow_randomization ? 1 : 0;
      uint32 mix_freq_256 = mix_freq() * 256;

      /* to make all notes sound a bit different, randomize the initial phase of
       * each harmonic (except if the user requested deterministic behaviour)
       */
      m_harm0_paccu = rfactor * g_random_int_range (0, mix_freq_256);
      m_harm1_paccu = rfactor * g_random_int_range (0, mix_freq_256);
      m_harm2_paccu = rfactor * g_random_int_range (0, mix_freq_256);
      m_harm3_paccu = rfactor * g_random_int_range (0, mix_freq_256);
      m_harm4_paccu = rfactor * g_random_int_range (0, mix_freq_256);
      m_harm5_paccu = rfactor * g_random_int_range (0, mix_freq_256);
    }
    static inline float
    table_pos (const float *table,
	       uint	    freq_256,
	       uint	    mix_freq_256,
	       uint32	   *paccu)
    {
      *paccu += freq_256;
      while (*paccu >= mix_freq_256)
	*paccu -= mix_freq_256;
      
      return table[*paccu >> 8];
    }
    void
    process (unsigned int n_values)
    {
      const float *sine_table = m_tables->sine_table();
      const float *flute_table = m_flute ? m_tables->triangle_table() : sine_table;
      const float *reed_table = m_reed ? m_tables->pulse_table() : sine_table;
      const float *ifreq = istream (ICHANNEL_FREQ_IN).values;
      float	  *ovalues = ostream (OCHANNEL_AUDIO_OUT).values;
      uint         freq_256;

      if (istream (ICHANNEL_FREQ_IN).connected)
	freq_256 = BSE_FREQ_FROM_VALUE (ifreq[0]) * m_transpose_factor * m_fine_tune_factor * 256 + 0.5;
      else
	freq_256 = m_cfreq * m_transpose_factor * m_fine_tune_factor * 256 + 0.5;

      uint mix_freq_256 = mix_freq() * 256;
      uint freq_256_harm0 = freq_256 / 2;
      uint freq_256_harm1 = freq_256;
  
      if (m_brass)
	{
	  uint freq_256_harm2 = freq_256 * 2;
	  uint freq_256_harm3 = freq_256_harm2 * 2;
	  uint freq_256_harm4 = freq_256_harm3 * 2;
	  uint freq_256_harm5 = freq_256_harm4 * 2;

	  for (uint i = 0; i < n_values; i++)
	    {
	      float vaccu;

	      vaccu = table_pos (sine_table, freq_256_harm0, mix_freq_256, &m_harm0_paccu) * m_harm0;
	      vaccu += table_pos (sine_table, freq_256_harm1, mix_freq_256, &m_harm1_paccu) * m_harm1;
	      vaccu += table_pos (reed_table, freq_256_harm2, mix_freq_256, &m_harm2_paccu) * m_harm2;
	      vaccu += table_pos (sine_table, freq_256_harm3, mix_freq_256, &m_harm3_paccu) * m_harm3;
	      vaccu += table_pos (flute_table, freq_256_harm4, mix_freq_256, &m_harm4_paccu) * m_harm4;
	      vaccu += table_pos (flute_table, freq_256_harm5, mix_freq_256, &m_harm5_paccu) * m_harm5;
	      ovalues[i] = vaccu;
	    }
	}
      else
	{
	  uint freq_256_harm2 = freq_256 * 3 / 2;
	  uint freq_256_harm3 = freq_256 * 2;
	  uint freq_256_harm4 = freq_256 * 3;
	  uint freq_256_harm5 = freq_256_harm3 * 2;

	  for (uint i = 0; i < n_values; i++)
	    {
	      float vaccu;

	      vaccu = table_pos (sine_table, freq_256_harm0, mix_freq_256, &m_harm0_paccu) * m_harm0;
	      vaccu += table_pos (sine_table, freq_256_harm1, mix_freq_256, &m_harm1_paccu) * m_harm1;
	      vaccu += table_pos (sine_table, freq_256_harm2, mix_freq_256, &m_harm2_paccu) * m_harm2;
	      vaccu += table_pos (reed_table, freq_256_harm3, mix_freq_256, &m_harm3_paccu) * m_harm3;
	      vaccu += table_pos (sine_table, freq_256_harm4, mix_freq_256, &m_harm4_paccu) * m_harm4;
	      vaccu += table_pos (flute_table, freq_256_harm5, mix_freq_256, &m_harm5_paccu) * m_harm5;
	      ovalues[i] = vaccu;
	    }
	}
    }
  };
public:
  bool
  property_changed (OrganPropertyID prop_id)
  {
    switch (prop_id)
      {
      /* implement special handling of GUI properties */
      case PROP_BASE_FREQ:
	base_note = bse_note_from_freq (base_freq);
	notify ("base_note");
	break;
      case PROP_BASE_NOTE:
	base_freq = bse_note_to_freq (base_note);
	notify ("base_freq");
	break;
      default: ;
      }
    return false;
  }

  /* implement creation and config methods for synthesis Module */
  BSE_EFFECT_INTEGRATE_MODULE (Organ, Module, OrganProperties);
};

map<uint, Organ::Tables*> Organ::Tables::table_map;
Mutex                     Organ::Tables::table_mutex;

BSE_CXX_DEFINE_EXPORTS();
BSE_CXX_REGISTER_EFFECT (Organ);

} // Dav
} // Bse

> this can actually be declared outside the class and then use
> static linkage to reduce the exported symbols. that'll make particular
> sense if refactored out of the class as a functional unit of:
> - a table_map protecting mutex,
> - the table_map with static linkage
> - a table_map ref() function that returns a const Tables*
> - a table_map unref() function
> 
> all accesses will simply go thorugh ref()/unref() then.

I think I have not followed your suggestions 100%, but I like my
approach. To be specific, I think the ability to make things static
private members is more important than saving exported symbols.

Putting everything into the Tables object seems reasonable to me, as
there is only little work to do, so I think we need no extra
factory-like object. 

the diff (without davorgan.cc / davorgan.idl):
================================================================================


Index: tests/audio/organsong.bse
===================================================================
--- tests/audio/organsong.bse	(revision 4138)
+++ tests/audio/organsong.bse	(working copy)
@@ -3,7 +3,7 @@
 (bse-version "0.7.1")
 
 (container-child "BseWaveRepo::Wave-Repository"
-  (modification-time "2006-10-21 19:32:55")
+  (modification-time "2006-12-11 20:46:18")
   (creation-time "2006-10-21 19:13:44")
   (license "Creative Commons Attribution 2.5 (http://creativecommons.org/licenses/by/2.5/)")
   (author "Stefan Westerfeld"))
@@ -12,11 +12,11 @@
   (denominator 4)
   (numerator 4)
   (tpqn 384)
-  (modification-time "2006-10-21 19:32:55")
+  (modification-time "2006-12-11 20:46:18")
   (creation-time "2006-10-21 19:13:49")
   (license "Creative Commons Attribution 2.5 (http://creativecommons.org/licenses/by/2.5/)")
-  (blurb "Melody based on BWV 147 Herz und Mund und Tat und Leben / Jesus bleibet meine Freude")
   (author "Johann-Sebastian Bach, Stefan Westerfeld")
+  (blurb "Melody based on BWV 147 Herz und Mund und Tat und Leben / Jesus bleibet meine Freude")
   (container-child "BsePart::Part-1"
     (n-channels 1)
     (insert-notes 0
@@ -110,7 +110,7 @@
     (snet (link 2 "BQS Organ"))
     (insert-part 10368 (link 1 "Part-2"))))
 (container-child "BseCSynth::BQS Organ"
-  (modification-time "2006-10-21 19:32:55")
+  (modification-time "2006-12-11 20:46:18")
   (creation-time "2006-04-07 20:44:57")
   (license "Provided \"as is\", WITHOUT ANY WARRANTY (http://beast.gtk.org/LICENSE-AS-IS)")
   (author "Tim Janik")
@@ -123,9 +123,9 @@
     (source-input "synth-done" (link 1 "SimpleADSR-1") "done-out"))
   (container-child "BseInstrumentInput::InstrumentInput-1"
     (pos-x -4))
-  (container-child "DavOrgan::DavOrgan-1"
-    (reed #f)
+  (container-child "BseDavOrgan::DavOrgan-1"
     (flute #f)
+    (reed #f)
     (brass #f)
     (harm5 54.651165008544922)
     (harm4 61.860466003417969)
@@ -159,7 +159,7 @@
     (pos-x -2)
     (source-input "gate-in" (link 1 "InstrumentInput-1") "gate")))
 (container-child "BseCSynth::BQS Organ-1"
-  (modification-time "2006-10-21 19:32:55")
+  (modification-time "2006-12-11 20:46:18")
   (creation-time "2006-04-07 20:44:57")
   (license "Provided \"as is\", WITHOUT ANY WARRANTY (http://beast.gtk.org/LICENSE-AS-IS)")
   (author "Tim Janik")
@@ -172,9 +172,9 @@
     (source-input "synth-done" (link 1 "SimpleADSR-1") "done-out"))
   (container-child "BseInstrumentInput::InstrumentInput-1"
     (pos-x -4))
-  (container-child "DavOrgan::DavOrgan-1"
-    (reed #t)
+  (container-child "BseDavOrgan::DavOrgan-1"
     (flute #f)
+    (reed #t)
     (brass #t)
     (harm5 34.482759237289429)
     (harm4 88.505744934082031)
@@ -210,7 +210,7 @@
     (pos-x -2)
     (source-input "gate-in" (link 1 "InstrumentInput-1") "gate")))
 (container-child "BseCSynth::BQS Organ-2"
-  (modification-time "2006-10-21 19:32:55")
+  (modification-time "2006-12-11 20:46:18")
   (creation-time "2006-04-07 20:44:57")
   (license "Provided \"as is\", WITHOUT ANY WARRANTY (http://beast.gtk.org/LICENSE-AS-IS)")
   (author "Tim Janik")
@@ -223,9 +223,9 @@
     (source-input "synth-done" (link 1 "SimpleADSR-1") "done-out"))
   (container-child "BseInstrumentInput::InstrumentInput-1"
     (pos-x -4))
-  (container-child "DavOrgan::DavOrgan-1"
-    (reed #f)
+  (container-child "BseDavOrgan::DavOrgan-1"
     (flute #t)
+    (reed #f)
     (brass #f)
     (harm5 32.18390941619873)
     (harm4 73.563218116760254)
Index: bse/bsecompat.c
===================================================================
--- bse/bsecompat.c	(revision 4138)
+++ bse/bsecompat.c	(working copy)
@@ -38,6 +38,7 @@ bse_compat_rewrite_type_name (BseStorage
     { 0, 6, 2,  "ArtsStereoCompressor", "BseArtsCompressor"     },
     { 0, 6, 2,  "DavBassFilter",        "BseDavBassFilter"      },
     { 0, 6, 2,  "DavChorus",            "BseDavChorus"          },
+    { 0, 7, 0,  "DavOrgan",             "BseDavOrgan"           },
   };
   guint i;
   for (i = 0; i < G_N_ELEMENTS (type_changes); i++)
Index: bse/ChangeLog
===================================================================
--- bse/ChangeLog	(revision 4138)
+++ bse/ChangeLog	(working copy)
@@ -1,3 +1,9 @@
+Mon Dec 11 22:00:55 2006  Stefan Westerfeld  <stefan space twc de>
+
+	* bsecompat.c: Added DavOrgan -> BseDavOrgan compatibility rewrite
+	typename rule for files <= 0.7.0, since the DavOrgan module is now
+	implemented in C++, and thus properly namespaced.
+
 Sun Dec 10 14:15:18 2006  Stefan Wasterfeld  <stefan space twc de>
 
 	* tests/firhandle.cc: Added seek test.
Index: plugins/ChangeLog
===================================================================
--- plugins/ChangeLog	(revision 4138)
+++ plugins/ChangeLog	(working copy)
@@ -1,3 +1,13 @@
+Mon Dec 11 21:44:31 2006  Stefan Westerfeld  <stefan space twc de>
+
+	* Makefile.am:
+	* Makefile.plugins: Switch from the C implementation of DavOrgan to
+	the C++ implementation of DavOrgan.
+
+	* davorgan.cc: Ported C code from DavOrgan to C++.
+
+	* davorgan.idl: Wrote a proper IDL file for the DavOrgan module.
+
 Sun Dec 10 23:56:56 2006  Tim Janik  <timj gtk org>
 
 	* davxtalstrings.c (dav_xtal_strings_class_init):
Index: plugins/Makefile.plugins
===================================================================
--- plugins/Makefile.plugins	(revision 4138)
+++ plugins/Makefile.plugins	(working copy)
@@ -107,6 +107,11 @@ $(srcdir)/davchorus.cc: davchorus.genidl
 plugins_built_sources      += davchorus.genidl.hh
 davplugins_FPU_la_SOURCES += davchorus.cc
 
+## C++ Plugin davorgan
+$(srcdir)/davorgan.cc: davorgan.genidl.hh # davplugins
+plugins_built_sources      += davorgan.genidl.hh
+davplugins_FPU_la_SOURCES += davorgan.cc
+
 
 ## C Plugin bsesimpleadsr
 EXTRA_HEADERS      += bsesimpleadsr.h
@@ -213,21 +218,6 @@ bsesequencer_SSE_la_LIBADD    = $(bseseq
 bsesequencer_SSE_la_CFLAGS    = $(SSE_PLUGIN_CFLAGS)
 
 
-## C Plugin davorgan
-EXTRA_HEADERS      += davorgan.h
-$(srcdir)/davorgan.c: davorgan.h
-plugin_FPU_ltlibs += davorgan.FPU.la
-davorgan_FPU_la_SOURCES = davorgan.c
-davorgan_FPU_la_LDFLAGS = -module $(plugins_ldflags)
-davorgan_FPU_la_LIBADD  = $(plugins_libs)
-davorgan_FPU_la_CFLAGS    = $(FPU_PLUGIN_CFLAGS)
-plugin_SSE_ltlibs   += davorgan.SSE.la
-davorgan_SSE_la_SOURCES   = $(davorgan_FPU_la_SOURCES)
-davorgan_SSE_la_LDFLAGS   = $(davorgan_FPU_la_LDFLAGS)
-davorgan_SSE_la_LIBADD    = $(davorgan_FPU_la_LIBADD)
-davorgan_SSE_la_CFLAGS    = $(SSE_PLUGIN_CFLAGS)
-
-
 ## C Plugin davxtalstrings
 EXTRA_HEADERS      += davxtalstrings.h
 $(srcdir)/davxtalstrings.c: davxtalstrings.h
Index: plugins/Makefile.am
===================================================================
--- plugins/Makefile.am	(revision 4138)
+++ plugins/Makefile.am	(working copy)
@@ -27,6 +27,7 @@ idl_plugins = $(strip			\
 	+++davplugins 			\
 	davbassfilter.idl		\
 	davchorus.idl			\
+	davorgan.idl			\
 )
 EXTRA_HEADERS += $(filter-out +++%, $(idl_plugins))
 # setup generation of C++ plugins from idl files
@@ -48,7 +49,6 @@ cglob_plugins = $(strip		\
 	bsemixer.[hc]		\
 	bsemult.[hc]		\
 	bsesequencer.[hc]	\
-	davorgan.[hc]		\
 	davxtalstrings.[hc]	\
 	davsyndrum.[hc]		\
 	davcanyondelay.[hc]	\
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 4138)
+++ ChangeLog	(working copy)
@@ -1,3 +1,9 @@
+Mon Dec 11 21:56:51 2006  Stefan Westerfeld  <stefan space twc de>
+
+	* tests/audio/organsong.bse: Saved this test with a version of beast
+	with a C++ version of DavOrgan. This mainly means that the module is
+	called BseDavOrgan now.
+
 Mon Dec  4 12:38:13 2006  Stefan Westerfeld  <stefan space twc de>
 
 	* tools/bsewavetool.cc: Added lowpass command. Both commands: made

> > Index: ChangeLog
> > ===================================================================
> > --- ChangeLog	(revision 4015)
> > +++ ChangeLog	(working copy)
> > @@ -1,3 +1,10 @@
> > +Mon Oct 23 15:57:20 2006  Stefan Westerfeld  <stefan space twc de>
> > +
> > +	* tests/audio/organsong.bse: Downgraded test file version from 0.7.1
> > +	to 0.7.0 to activate type rewriting compatibility for the file,
> > +	because 0.7.1 will has a C++ version of DavOrgan (which is called
> > +	BseDavOrgan).
> > +
> 
> we don't support that unfortunately.

Although it worked. But I don't insist on that part of the diff (its no
longer in the new diff).

So:

   make all install report

passes if sfidl diffs are applied first. Ok to commit?

   Cu... Stefan
-- 
Stefan Westerfeld, Hamburg/Germany, http://space.twc.de/~stefan



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