rpms/armstrong/devel armstrong-64bit.patch, NONE, 1.1 armstrong-bcb8dd70b78f.diff, NONE, 1.1 armstrong-define-symbols.patch, NONE, 1.1 armstrong.spec, 1.4, 1.5

Orcan Ogetbil oget at fedoraproject.org
Sun Jun 14 19:25:50 UTC 2009


Author: oget

Update of /cvs/pkgs/rpms/armstrong/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv20288

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/devel/armstrong.spec,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -p -r1.4 -r1.5
--- armstrong.spec	10 May 2009 23:54:27 -0000	1.4
+++ armstrong.spec	14 Jun 2009 19:25:49 -0000	1.5
@@ -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 fedora-extras-commits mailing list