Re: DavOrgan C++ port - please review (merged changes from .c file)
- From: Stefan Westerfeld <stefan space twc de>
- To: Tim Janik <timj gtk org>
- Cc: Beast Liste <beast beast gtk org>
- Subject: Re: DavOrgan C++ port - please review (merged changes from .c file)
- Date: Mon, 18 Dec 2006 18:25:36 +0100
Hi!
On Mon, Dec 18, 2006 at 01:21:36AM +0100, Tim Janik wrote:
> On Mon, 18 Dec 2006, Stefan Westerfeld wrote:
> > I added musical tuning support as required by recent svn.
> >
> > plugins/davorgan.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");
>
> the property decls need indentation fixes.
> also, you lack the tooltips that were recently added;
> probably even other stuff.
> i don't want to have to compare your files line-by-line with the C
> sources in SVN, so please make sure you incroporate *all* recent changes
> before sending the new patch.
Ok, here is a new version, tooltips included (the only change that was
missing, because of parallel development), and stuff reindented in
davorgan.idl. I'll repost my last mail, with updated stuff, so you won't
need to switch mails for doing the review. The tooltips needed fixing:
(1) base freq: spelling
old tooltip: Organ frequency in Herz, i.e. the pitch of the base tone
new tooltip: Organ frequency in Hertz, i.e. the pitch of the base tone
(2) note: spelling, notes do not have the unit Hertz
old tooltip: Organ frequency as note, converted to Herz according to
the current musical tuning
new tooltip: Organ frequency as note, according to the current musical
tuning
On Mon, Dec 11, 2006 at 11:25:06PM +0100, Stefan Westerfeld wrote:
> On Wed, Nov 15, 2006 at 02:36:12AM +0100, Tim Janik wrote:
> > On Mon, 23 Oct 2006, Stefan Westerfeld wrote:
> > > 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.
I added musical tuning support as required by recent svn.
plugins/davorgan.idl:
========================================================================
/* DavOrgan - DAV Additive Organ Synthesizer -*-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"), _("Organ frequency in Hertz, i.e. the pitch of the base tone"),
BSE_KAMMER_FREQUENCY, STANDARD ":dial");
Int base_note = Note (_("Note"), _("Organ frequency as note, according to the current musical tuning"),
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];
}
};
/* FIXME: get rid of this as soon as the modules have their own current_musical_tuning() accessor */
struct Properties : public OrganProperties {
BseMusicalTuningType current_musical_tuning;
Properties (Organ *organ) :
OrganProperties (organ),
current_musical_tuning (organ->current_musical_tuning())
{
}
};
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 (Properties *properties)
{
m_cfreq = properties->base_freq;
m_transpose_factor = bse_transpose_factor (properties->current_musical_tuning, 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 (current_musical_tuning(), base_freq);
notify ("base_note");
break;
case PROP_BASE_NOTE:
base_freq = bse_note_to_freq (current_musical_tuning(), base_note);
notify ("base_freq");
break;
default: ;
}
return false;
}
/* implement creation and config methods for synthesis Module */
BSE_EFFECT_INTEGRATE_MODULE (Organ, Module, Properties);
};
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), bse changes added, sfi
changes need to be applied seperately:
================================================================================
Index: tests/audio/organsong.bse
===================================================================
--- tests/audio/organsong.bse (revision 4181)
+++ 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 4181)
+++ 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/bsecxxmodule.cc
===================================================================
--- bse/bsecxxmodule.cc (revision 4181)
+++ bse/bsecxxmodule.cc (working copy)
@@ -424,6 +424,13 @@ Effect::block_size() const
return bse_engine_block_size();
}
+BseMusicalTuningType
+Effect::current_musical_tuning() const
+{
+ BseSource *source = cast (const_cast <Effect*> (this));
+ return bse_item_current_musical_tuning (BSE_ITEM (source));
+}
+
void
Effect::class_init (CxxBaseClass *klass)
{
Index: bse/ChangeLog
===================================================================
--- bse/ChangeLog (revision 4181)
+++ bse/ChangeLog (working copy)
@@ -1,3 +1,13 @@
+Sun Dec 17 21:33:07 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.
+
+ * bsecxxmodule.hh:
+ * bsecxxmodule.cc: Introduced Effect::current_musical_tuning(), which
+ can be used to make C++ plugins tuning aware.
+
Sun Dec 17 20:58:40 2006 Tim Janik <timj gtk org>
* bsestandardosc.c (bse_standard_osc_update_modules): added missing
Index: bse/bsecxxmodule.hh
===================================================================
--- bse/bsecxxmodule.hh (revision 4181)
+++ bse/bsecxxmodule.hh (working copy)
@@ -159,6 +159,8 @@ protected:
guint context_handle,
BseTrans *trans);
unsigned int block_size () const;
+public: /* FIXME: make this protected as soon as the modules have their own current_musical_tuning() accessor */
+ BseMusicalTuningType current_musical_tuning () const;
};
/* implement Bse::Effect and Bse::SynthesisModule methods */
#define BSE_EFFECT_INTEGRATE_MODULE(ObjectType,ModuleType,ParamType) \
Index: plugins/ChangeLog
===================================================================
--- plugins/ChangeLog (revision 4181)
+++ plugins/ChangeLog (working copy)
@@ -1,3 +1,13 @@
+Sun Dec 17 21:34:25 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 17 02:18:46 2006 Tim Janik <timj gtk org>
* davxtalstrings.c:
Index: plugins/Makefile.plugins
===================================================================
--- plugins/Makefile.plugins (revision 4181)
+++ 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 4181)
+++ 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 4181)
+++ ChangeLog (working copy)
@@ -1,3 +1,9 @@
+Sun Dec 17 21:47:35 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.
+
Sat Dec 16 19:45:18 2006 Tim Janik <timj gtk org>
* updated version to 0.7.1-rc2, interface age 0, binary age 0.
> > > 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?
Of course I retested make all install report. It works.
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]