rpms/armstrong/F-10 armstrong-64bit.patch, NONE, 1.1 armstrong-bcb8dd70b78f.diff, NONE, 1.1 armstrong-define-symbols.patch, NONE, 1.1 armstrong.spec, 1.2, 1.3
Orcan Ogetbil
oget at fedoraproject.org
Sun Jun 14 20:27:31 UTC 2009
Author: oget
Update of /cvs/pkgs/rpms/armstrong/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv4861
Modified Files:
armstrong.spec
Added Files:
armstrong-64bit.patch armstrong-bcb8dd70b78f.diff
armstrong-define-symbols.patch
Log Message:
* Sat Jun 06 2009 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-7
- Fix plugin loading error on 64bit systems
- Build against system ladspa and dssi
- Build against new rtaudio (4.0.6)
- Backport multiple dssi instances fix patch
- Fix undefined symbols
armstrong-64bit.patch:
--- NEW FILE armstrong-64bit.patch ---
diff -rupN armstrong.old/src/plugins/dssidapter/search.c armstrong/src/plugins/dssidapter/search.c
--- armstrong.old/src/plugins/dssidapter/search.c 2009-01-09 16:17:45.000000000 -0500
+++ armstrong/src/plugins/dssidapter/search.c 2009-06-05 19:25:34.000000000 -0400
@@ -102,7 +102,7 @@ DSSIPluginSearch(DSSIPluginSearchCallbac
fprintf(stderr,
"Warning: You do not have a DSSI_PATH "
"environment variable set.\n");
- pcDSSIPath = "/usr/local/lib/dssi:/usr/lib/dssi";
+ pcDSSIPath = "/usr/local/lib/dssi:/usr/lib/dssi:/usr/local/lib64/dssi:/usr/lib64/dssi";
fprintf(stderr,"assuming '%s'\n",pcDSSIPath);
}
diff -rupN armstrong.old/src/plugins/ladspadapter/search.c armstrong/src/plugins/ladspadapter/search.c
--- armstrong.old/src/plugins/ladspadapter/search.c 2009-01-09 16:17:45.000000000 -0500
+++ armstrong/src/plugins/ladspadapter/search.c 2009-06-05 19:25:52.000000000 -0400
@@ -102,7 +102,7 @@ LADSPAPluginSearch(LADSPAPluginSearchCal
fprintf(stderr,
"Warning: You do not have a LADSPA_PATH "
"environment variable set.\n");
- pcLADSPAPath = "/usr/local/lib/ladspa:/usr/lib/ladspa";
+ pcLADSPAPath = "/usr/local/lib/ladspa:/usr/lib/ladspa:/usr/local/lib64/ladspa:/usr/lib64/ladspa";
fprintf(stderr,"assuming '%s'\n",pcLADSPAPath);
}
armstrong-bcb8dd70b78f.diff:
--- NEW FILE armstrong-bcb8dd70b78f.diff ---
# HG changeset patch -- Bitbucket.org
# Project Armstrong
# URL http://bitbucket.org/paniq/armstrong/overview/
# User mental at rydia.net
# Date 1240039816 14400
# Node ID bcb8dd70b78f42d968c0d7ca4259f9bb37b8e89c
# Parent 22d3f5482d250064f44790af032e9314386c1a31
Support multiple instances of DSSI plugins that require run_multiple_synths()
--- a/src/plugins/dssidapter/dssidapter.cpp
+++ b/src/plugins/dssidapter/dssidapter.cpp
@@ -26,6 +27,7 @@
#include "zzub/plugin.h"
#include <vector>
+#include <algorithm>
#include <string>
#include <assert.h>
#include <alsa/asoundlib.h>
@@ -49,7 +51,7 @@ extern "C"
}
#include "../ladspadapter/paramtools.h"
-const char *myName = "zzub DSSI adaptor";
+const char *myName = "zzub DSSI adapter";
typedef ladspa_param dssi_param;
@@ -75,6 +77,7 @@ struct dssi_info : zzub::info
};
+static std::vector<dssidapter *> active_instances;
std::vector<dssi_info *> infos;
#include "osc_functions.h"
@@ -182,6 +185,11 @@ dssidapter::~dssidapter()
if (uiTarget && ui_osc_quit_path) {
lo_send(uiTarget, ui_osc_quit_path, "");
}
+ std::vector<dssidapter *>::iterator found;
+ found = std::find(active_instances.begin(), active_instances.end(), this);
+ if (found != active_instances.end()) {
+ active_instances.erase(found);
+ }
if (handle)
{
if (desc->LADSPA_Plugin->deactivate)
@@ -219,6 +227,7 @@ dssidapter::dssidapter(const dssi_info *
data_values = 0;
myinfo = _dssi_info;
track_count = 1;
+ output_backlog = 0;
if (myinfo->global_parameters.size())
{
@@ -371,11 +380,14 @@ void dssidapter::init(archive *arc)
_host->set_event_handler(_metaplugin, this);
handle = desc->LADSPA_Plugin->instantiate(desc->LADSPA_Plugin, _master_info->samples_per_second);
if (!desc->run_synth && !desc->run_multiple_synths) {
- printf("%s: Warning: no run_synth() method and no run_multiple_synth() method\n", myName);
+ printf("%s: Warning: no run_synth() method and no run_multiple_synths() method\n", myName);
}
if (myinfo->m_audioouts.size() < 1) {
printf("%s: Warning: no audio outputs\n", myName);
}
+ if (myinfo->m_audioins.size() > 0 && !desc->run_synth && desc->run_multiple_synths) {
+ printf("%s: Warning: audio input not supported with run_multiple_synths()\n", myName);
+ }
std::vector<dssi_param>::const_iterator i;
int index = 0;
for (i = myinfo->m_metaparams.begin(); i != myinfo->m_metaparams.end(); ++i)
@@ -449,6 +461,8 @@ void dssidapter::init(archive *arc)
if (desc->LADSPA_Plugin->activate)
desc->LADSPA_Plugin->activate(handle);
+ active_instances.push_back(this);
+
eventcount = 0;
}
@@ -631,7 +645,9 @@ bool dssidapter::process_stereo(float **
if (verbose) printf("dssidapter: process_stereo() returning false\n");
return false;
}
- if (myinfo->m_audioins.size() == 1) {
+ if (!desc->run_synth && desc->run_multiple_synths) {
+ // skip inputs since we can't readily support inputs and run_multiple_synths()
+ } else if (myinfo->m_audioins.size() == 1) {
for (int i = 0; i < numsamples; i++) {
inputs[0][i] = (pin[0][i] + pin[1][i]) * 0.5f;
}
@@ -646,12 +662,42 @@ bool dssidapter::process_stereo(float **
if (desc->run_synth) {
desc->run_synth(handle, numsamples, events, eventcount);
} else if (desc->run_multiple_synths) {
- desc->run_multiple_synths(1, &handle, numsamples, &events, &eventcount);
+ if (output_backlog == 0) {
+ // no additional allocations necessary for <= 16 active instances
+ static std::vector<LADSPA_Handle> handles(16);
+ static std::vector<snd_seq_event_t *> event_vectors(16);
+ static std::vector<unsigned long> event_counts(16);
+
+ // n.b. clear does not deallocate memory
+ handles.clear();
+ event_vectors.clear();
+ event_counts.clear();
+
+ // ensure minimal allocation if allocation is required
+ handles.reserve(active_instances.size());
+ event_vectors.reserve(active_instances.size());
+ event_counts.reserve(active_instances.size());
+
+ std::vector<dssidapter *>::iterator iter;
+ for (iter = active_instances.begin(); iter != active_instances.end(); ++iter) {
+ dssidapter *instance = *iter;
+ handles.push_back(instance->handle);
+ event_vectors.push_back(instance->events);
+ event_counts.push_back(instance->eventcount);
+ instance->eventcount = 0;
+ instance->output_backlog = numsamples;
+ }
+
+ desc->run_multiple_synths(active_instances.size(), &handles[0], numsamples, &event_vectors[0], &event_counts[0]);
+ } else {
+ // what if output_backlog < numsamples ?
+ }
} else {
// No synth method -- what should we return?
}
+ eventcount = 0;
+ output_backlog = 0;
- eventcount = 0;
if (myinfo->m_audioouts.size() == 1) {
memcpy(pout[0], outputs[0], sizeof(float) * numsamples);
memcpy(pout[1], outputs[0], sizeof(float) * numsamples);
--- a/src/plugins/dssidapter/dssidapter.h
+++ b/src/plugins/dssidapter/dssidapter.h
@@ -100,6 +100,7 @@ struct dssidapter : plugin, event_handle
LADSPA_Data *data_values;
float inputs[16][256];
float outputs[16][256];
+ int output_backlog;
snd_seq_event_t *events;
long unsigned int eventcount;
zzub_plugin_t* _metaplugin;
armstrong-define-symbols.patch:
--- NEW FILE armstrong-define-symbols.patch ---
diff -rupN armstrong.old/src/plugins/Geonik/BuzzMachines/PrimiFun.cpp armstrong/src/plugins/Geonik/BuzzMachines/PrimiFun.cpp
--- armstrong.old/src/plugins/Geonik/BuzzMachines/PrimiFun.cpp 2009-01-09 16:17:45.000000000 -0500
+++ armstrong/src/plugins/Geonik/BuzzMachines/PrimiFun.cpp 2009-06-07 01:42:07.000000000 -0400
@@ -194,8 +194,9 @@ public:
};
-
-
+void geonik_primifun::About() {
+ About();
+}
CTrack *geonik_primifun::RequestTrack(int pt) {
double m = 1000.0,n;
diff -rupN armstrong.old/src/plugins/ladspadapter/SConscript armstrong/src/plugins/ladspadapter/SConscript
--- armstrong.old/src/plugins/ladspadapter/SConscript 2009-01-09 16:17:45.000000000 -0500
+++ armstrong/src/plugins/ladspadapter/SConscript 2009-06-07 01:09:23.000000000 -0400
@@ -21,6 +21,7 @@
Import('pluginenv', 'build_plugin')
if pluginenv['LADSPA'] == True:
+ pluginenv.Append(LINKFLAGS=['-ldl'])
build_plugin(pluginenv, 'ladspadapter', [
'ladspadapter.cpp',
'load.c',
diff -rupN armstrong.old/src/plugins/psy2zzub/SConscript armstrong/src/plugins/psy2zzub/SConscript
--- armstrong.old/src/plugins/psy2zzub/SConscript 2009-01-09 16:17:45.000000000 -0500
+++ armstrong/src/plugins/psy2zzub/SConscript 2009-06-07 01:18:41.000000000 -0400
@@ -19,7 +19,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Import('pluginenv', 'build_plugin')
-
+pluginenv.Append(LINKFLAGS=['-ldl'])
build_plugin(pluginenv, 'psy2zzub', [
'psy2zzub.cpp',
])
Index: armstrong.spec
===================================================================
RCS file: /cvs/pkgs/rpms/armstrong/F-10/armstrong.spec,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -p -r1.2 -r1.3
--- armstrong.spec 10 May 2009 23:59:31 -0000 1.2
+++ armstrong.spec 14 Jun 2009 20:27:30 -0000 1.3
@@ -2,7 +2,7 @@
Name: armstrong
Version: 0.2.6
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Powerful music sequencing library
Group: System Environment/Libraries
# src/plugins/Geonik is GPL+
@@ -52,13 +52,36 @@ Patch3: armstrong-size_t.patch
# Build shared libraries with proper sonames
# http://bitbucket.org/paniq/armstrong/issue/9/build-libraries-with-sonames
Patch4: armstrong-sonamefix.patch
+# Add 64bit plugin paths
+# http://bitbucket.org/paniq/armstrong/issue/11/64bit-plugin-paths
+Patch5: armstrong-64bit.patch
+# Support multiple instances of DSSI plugins that require run_multiple_synths()
+# http://bitbucket.org/paniq/armstrong/changeset/bcb8dd70b78f/
+Patch6: armstrong-bcb8dd70b78f.diff
+# Resolve undefined symbols
+# http://bitbucket.org/paniq/armstrong/issue/12/undefined-symbols
+Patch7: armstrong-define-symbols.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: alsa-lib-devel boost-devel doxygen epydoc fftw-devel flac-devel
-BuildRequires: jack-audio-connection-kit-devel libsamplerate-devel libsndfile-devel
-BuildRequires: minizip-devel portaudio-devel portmidi-devel python-setuptools-devel
-BuildRequires: rtaudio-static rubberband-devel scons zlib-devel
+BuildRequires: alsa-lib-devel
+BuildRequires: boost-devel
+BuildRequires: dssi-devel
+BuildRequires: doxygen epydoc
+BuildRequires: fftw-devel
+BuildRequires: flac-devel
+BuildRequires: jack-audio-connection-kit-devel
+BuildRequires: ladspa-devel
+BuildRequires: libsamplerate-devel
+BuildRequires: libsndfile-devel
+BuildRequires: minizip-devel
+BuildRequires: portaudio-devel
+BuildRequires: portmidi-devel
+BuildRequires: python-setuptools-devel
+BuildRequires: rtaudio-static
+BuildRequires: rubberband-devel
+BuildRequires: scons
+BuildRequires: zlib-devel
Obsoletes: libzzub <= 0.2.5
Provides: libzzub = %{version}-%{release}
@@ -101,12 +124,16 @@ Python scripts.
%patch2 -p1 -b .gcc44
%patch3 -p1 -b .size_t
%patch4 -p1 -b .soname
+%patch5 -p1 -b .64bit
+%patch6 -p1 -b .multidssi
+%patch7 -p1 -b .symbols
# Remove the binded libraries. We'll use the system-wide ones
pushd src
rm -fr libsndfile flac rubberband zlib bmp-ccm \
portmidi portaudio rtaudio minizip
popd
+rm -f include/{dssi,ladspa}.h
# Remove the precompiled binaries
for ext in aps bc dll exe lib ncb zip; do
@@ -263,6 +290,13 @@ rm -rf $RPM_BUILD_ROOT
%{python_sitelib}/*
%changelog
+* Sat Jun 06 2009 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-7
+- Fix plugin loading error on 64bit systems
+- Build against system ladspa and dssi
+- Build against new rtaudio (4.0.6)
+- Backport multiple dssi instances fix patch
+- Fix undefined symbols
+
* Sun May 10 2009 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-6
- Rebuild
More information about the scm-commits
mailing list