On 01/11/2014 08:40 AM, Paul Brossier wrote:
> hi!,
>
> here is a patch for ardour. i don't have write access to the repo.
>
> ardour3 and denemo will follow.

here is the ardour3 one, unfortunately i could not test it yet (hard
disk full).

but the patch is no different from the ardour one, appart from the
skipped SConstruct hunk.

cheers, Paul

> 
>
> best, paul
>
> On 01/10/2014 04:00 PM, Paul Brossier wrote:
>> Hi all,
>>
>> On 01/10/2014 02:21 PM, Niels Thykier wrote:
>>> Hi,
>>>
>>> Adding Paul Brossier to CC, since he maintains aubio and uploaded
>>> the version with the API bump.  Paul, please see/comment Adrian's
>>> mail below.
>>>
>>> From my point of view (i.e. with my release hat on), I am fine
>>> with either resolution the two of you come up with as long as the
>>> build failure here is resolved and aubio's transition is
>>> finished.
>>>
>>> ~Niels
>>>
>>> On 2014-01-09 15:28, Adrian Knoth wrote:
>>>> On 01/02/14 19:27, Niels Thykier wrote:
>>>>
>>>> Hi!
>>>>
>>>>> Package: ardour3 Version: 3.5.143~dfsg-1 Severity: serious
>>>>>
>>>>> Hi,
>>>>>
>>>>> Your package FTBFS during a rebuilt against libaubio4.  Here
>>>>> is the tail from amd64.
>>>> aubio 0.4 is not API-compatible with the previous 0.3 release.
>>>> aubio upstream currently lists both APIs as stable.
>>>>
>>>> Ardour upstream has tightened the dependency to aubio 0.3.2,
>>>> and it certainly needs time to incorporate the API changes. For
>>>> ardour2 (bug #733968), this might never happen unless
>>>> backported.
>>>>
>>>> There's not even a document on aubio's website how to migrate
>>>> from 0.3 to 0.4.
>> point, i'm not very good at writing documentation, sorry.
>>>>
>>>> Long story short: that's too much for packaging, this is
>>>> serious upstream work. Since Ardour upstream has decided to
>>>> stick with 0.3.2, I suggest we re-introduce libaubio-0.3.x in
>>>> Debian until the remaining users have all been transitioned to
>>>> aubio4 (read: as soon as the r-depends count of aubio3 drops to
>>>> zero).
>> I'll be happy to write the patches for ardour, ardour3, and
>> denemo.
>>
>> I should be done in a few hours.
>>
>>>>
>>>> To be clear: I'm talking about co-existence of both aubio
>>>> versions in Debian, at least temporary.
>> i'll be offline starting tomorrow for 12 days. i hope to have the
>> three patches ready before then.
>>
>> cheers, Paul
>


From 42a9c0bead9c3bfab06b06c74b49b3534e2ce61c Mon Sep 17 00:00:00 2001
From: Paul Brossier <p...@piem.org>
Date: Sat, 11 Jan 2014 09:36:56 -0400
Subject: [PATCH] debian/patches/aubio.patch: update to aubio 0.4.0 (Closes:
 #733969)

---
 debian/control             |   2 +-
 debian/patches/aubio.patch | 293 +++++++++++++++++++++++++++++++++++++++++++++
 debian/patches/series      |   1 +
 debian/rules               |   2 +-
 4 files changed, 296 insertions(+), 2 deletions(-)
 create mode 100644 debian/patches/aubio.patch

diff --git a/debian/control b/debian/control
index f420c41..a4fdaad 100644
--- a/debian/control
+++ b/debian/control
@@ -37,7 +37,7 @@ Build-Depends:
  libpangomm-1.4-dev (>= 2.28.4),
  ladspa-sdk (>= 1.1-2),
  libasound2-dev (>= 0.9.4),
- libaubio-dev (>= 0.3.2),
+ libaubio-dev (>= 0.4.0),
  libjack-dev,
  liblo-dev (>= 0.26~),
  libsamplerate0-dev (>= 0.1.8),
diff --git a/debian/patches/aubio.patch b/debian/patches/aubio.patch
new file mode 100644
index 0000000..5c6ddae
--- /dev/null
+++ b/debian/patches/aubio.patch
@@ -0,0 +1,293 @@
+Description: merge latest vamp-aubio-plugins version to use aubio 0.4.0
+ Update libs/vamp-plugins/Onset.{cpp,h} to new aubio.
+ Merge with the latest vamp-aubio-plugins revision 798ef8d.
+ See http://git.aubio.org/?p=vamp-aubio-plugins.git;a=summary.
+Author: Paul Brossier <p...@debian.org>
+Bug-Debian: http://bugs.debian.org/733969
+Last-Update: 2014-12-29
+
+--- a/libs/vamp-plugins/Onset.cpp
++++ b/libs/vamp-plugins/Onset.cpp
+@@ -22,29 +22,32 @@
+ using std::cerr;
+ using std::endl;
+ 
++const char *getAubioNameForOnsetType(OnsetType t)
++{
++    // In the same order as the enum elements in the header
++    static const char *const names[] = {
++        "energy", "specdiff", "hfc", "complex", "phase", "kl", "mkl", "specflux"
++    };
++    return names[(int)t];
++}
++
+ Onset::Onset(float inputSampleRate) :
+     Plugin(inputSampleRate),
+     m_ibuf(0),
+-    m_fftgrain(0),
+     m_onset(0),
+-    m_pv(0),
+-    m_peakpick(0),
+     m_onsetdet(0),
+-    m_onsettype(aubio_onset_complex),
++    m_onsettype(OnsetComplex),
+     m_threshold(0.3),
+-    m_silence(-90),
+-    m_channelCount(1)
++    m_silence(-70),
++    m_minioi(4)
+ {
+ }
+ 
+ Onset::~Onset()
+ {
+-    if (m_onsetdet) aubio_onsetdetection_free(m_onsetdet);
++    if (m_onsetdet) del_aubio_onset(m_onsetdet);
+     if (m_ibuf) del_fvec(m_ibuf);
+     if (m_onset) del_fvec(m_onset);
+-    if (m_fftgrain) del_cvec(m_fftgrain);
+-    if (m_pv) del_aubio_pvoc(m_pv);
+-    if (m_peakpick) del_aubio_peakpicker(m_peakpick);
+ }
+ 
+ string
+@@ -74,7 +77,7 @@
+ int
+ Onset::getPluginVersion() const
+ {
+-    return 1;
++    return 2;
+ }
+ 
+ string
+@@ -86,22 +89,18 @@
+ bool
+ Onset::initialise(size_t channels, size_t stepSize, size_t blockSize)
+ {
+-    m_channelCount = channels;
++    if (channels != 1) {
++        std::cerr << "Onset::initialise: channels must be 1" << std::endl;
++        return false;
++    }
++
+     m_stepSize = stepSize;
+     m_blockSize = blockSize;
+ 
+-    m_ibuf = new_fvec(stepSize, channels);
+-    m_onset = new_fvec(1, channels);
+-    m_fftgrain = new_cvec(blockSize, channels);
+-    m_pv = new_aubio_pvoc(blockSize, stepSize, channels);
+-    m_peakpick = new_aubio_peakpicker(m_threshold);
+-
+-    m_onsetdet = new_aubio_onsetdetection(m_onsettype, blockSize, channels);
+-    
+-    m_delay = Vamp::RealTime::frame2RealTime(4 * stepSize,
+-                                             lrintf(m_inputSampleRate));
++    m_ibuf = new_fvec(stepSize);
++    m_onset = new_fvec(1);
+ 
+-    m_lastOnset = Vamp::RealTime::zeroTime - m_delay - m_delay;
++    reset();
+ 
+     return true;
+ }
+@@ -109,6 +108,22 @@
+ void
+ Onset::reset()
+ {
++    if (m_onsetdet) del_aubio_onset(m_onsetdet);
++
++    m_onsetdet = new_aubio_onset
++        (const_cast<char *>(getAubioNameForOnsetType(m_onsettype)),
++         m_blockSize,
++         m_stepSize,
++         lrintf(m_inputSampleRate));
++    
++    aubio_onset_set_threshold(m_onsetdet, m_threshold);
++    aubio_onset_set_silence(m_onsetdet, m_silence);
++    aubio_onset_set_minioi(m_onsetdet, m_minioi);
++
++    m_delay = Vamp::RealTime::frame2RealTime(4 * m_stepSize,
++                                             lrintf(m_inputSampleRate));
++
++    m_lastOnset = Vamp::RealTime::zeroTime - m_delay - m_delay;
+ }
+ 
+ size_t
+@@ -132,8 +147,8 @@
+     desc.identifier = "onsettype";
+     desc.name = "Onset Detection Function Type";
+     desc.minValue = 0;
+-    desc.maxValue = 6;
+-    desc.defaultValue = (int)aubio_onset_complex;
++    desc.maxValue = 7;
++    desc.defaultValue = (int)OnsetComplex;
+     desc.isQuantized = true;
+     desc.quantizeStep = 1;
+     desc.valueNames.push_back("Energy Based");
+@@ -143,6 +158,7 @@
+     desc.valueNames.push_back("Phase Deviation");
+     desc.valueNames.push_back("Kullback-Liebler");
+     desc.valueNames.push_back("Modified Kullback-Liebler");
++    desc.valueNames.push_back("Spectral Flux");
+     list.push_back(desc);
+ 
+     desc = ParameterDescriptor();
+@@ -159,11 +175,22 @@
+     desc.name = "Silence Threshold";
+     desc.minValue = -120;
+     desc.maxValue = 0;
+-    desc.defaultValue = -90;
++    desc.defaultValue = -70;
+     desc.unit = "dB";
+     desc.isQuantized = false;
+     list.push_back(desc);
+ 
++    desc = ParameterDescriptor();
++    desc.identifier = "minioi";
++    desc.name = "Minimum Inter-Onset Interval";
++    desc.minValue = 0;
++    desc.maxValue = 40;
++    desc.defaultValue = 4;
++    desc.unit = "ms";
++    desc.isQuantized = true;
++    desc.quantizeStep = 1;
++    list.push_back(desc);
++
+     return list;
+ }
+ 
+@@ -176,6 +203,8 @@
+         return m_threshold;
+     } else if (param == "silencethreshold") {
+         return m_silence;
++    } else if (param == "minioi") {
++        return m_minioi;
+     } else {
+         return 0.0;
+     }
+@@ -186,18 +215,21 @@
+ {
+     if (param == "onsettype") {
+         switch (lrintf(value)) {
+-        case 0: m_onsettype = aubio_onset_energy; break;
+-        case 1: m_onsettype = aubio_onset_specdiff; break;
+-        case 2: m_onsettype = aubio_onset_hfc; break;
+-        case 3: m_onsettype = aubio_onset_complex; break;
+-        case 4: m_onsettype = aubio_onset_phase; break;
+-        case 5: m_onsettype = aubio_onset_kl; break;
+-        case 6: m_onsettype = aubio_onset_mkl; break;
++        case 0: m_onsettype = OnsetEnergy; break;
++        case 1: m_onsettype = OnsetSpecDiff; break;
++        case 2: m_onsettype = OnsetHFC; break;
++        case 3: m_onsettype = OnsetComplex; break;
++        case 4: m_onsettype = OnsetPhase; break;
++        case 5: m_onsettype = OnsetKL; break;
++        case 6: m_onsettype = OnsetMKL; break;
++        case 7: m_onsettype = OnsetSpecFlux; break;
+         }
+     } else if (param == "peakpickthreshold") {
+         m_threshold = value;
+     } else if (param == "silencethreshold") {
+         m_silence = value;
++    } else if (param == "minioi") {
++        m_minioi = value;
+     }
+ }
+ 
+@@ -216,17 +248,6 @@
+     d.sampleRate = 0;
+     list.push_back(d);
+ 
+-    d = OutputDescriptor();
+-    d.identifier = "detectionfunction";
+-    d.name = "Onset Detection Function";
+-    d.unit = "";
+-    d.hasFixedBinCount = true;
+-    d.binCount = m_channelCount;
+-    d.hasKnownExtents = false;
+-    d.isQuantized = false;
+-    d.sampleType = OutputDescriptor::OneSamplePerStep;
+-    list.push_back(d);
+-
+     return list;
+ }
+ 
+@@ -235,21 +256,12 @@
+                Vamp::RealTime timestamp)
+ {
+     for (size_t i = 0; i < m_stepSize; ++i) {
+-        for (size_t j = 0; j < m_channelCount; ++j) {
+-            fvec_write_sample(m_ibuf, inputBuffers[j][i], j, i);
+-        }
++        fvec_set_sample(m_ibuf, inputBuffers[0][i], i);
+     }
+ 
+-    aubio_pvoc_do(m_pv, m_ibuf, m_fftgrain);
+-    aubio_onsetdetection(m_onsetdet, m_fftgrain, m_onset);
++    aubio_onset_do(m_onsetdet, m_ibuf, m_onset);
+ 
+-    bool isonset = aubio_peakpick_pimrt(m_onset, m_peakpick);
+-
+-    if (isonset) {
+-        if (aubio_silence_detection(m_ibuf, m_silence)) {
+-            isonset = false;
+-        }
+-    }
++    bool isonset = m_onset->data[0];
+ 
+     FeatureSet returnFeatures;
+ 
+@@ -263,11 +275,6 @@
+             m_lastOnset = timestamp;
+         }
+     }
+-    Feature feature;
+-    for (size_t j = 0; j < m_channelCount; ++j) {
+-        feature.values.push_back(m_onset->data[j][0]);
+-    }
+-    returnFeatures[1].push_back(feature);
+ 
+     return returnFeatures;
+ }
+--- a/libs/vamp-plugins/Onset.h
++++ b/libs/vamp-plugins/Onset.h
+@@ -20,6 +20,17 @@
+ #include <vamp-sdk/Plugin.h>
+ #include <aubio/aubio.h>
+ 
++enum OnsetType {
++    OnsetEnergy,
++    OnsetSpecDiff,
++    OnsetHFC,
++    OnsetComplex,
++    OnsetPhase,
++    OnsetKL,
++    OnsetMKL,
++    OnsetSpecFlux // new in 0.4!
++};
++
+ class Onset : public Vamp::Plugin
+ {
+ public:
+@@ -54,17 +65,14 @@
+ 
+ protected:
+     fvec_t *m_ibuf;
+-    cvec_t *m_fftgrain;
+     fvec_t *m_onset;
+-    aubio_pvoc_t *m_pv;
+-    aubio_pickpeak_t *m_peakpick;
+-    aubio_onsetdetection_t *m_onsetdet;
+-    aubio_onsetdetection_type m_onsettype;
++    aubio_onset_t *m_onsetdet;
++    OnsetType m_onsettype;
+     float m_threshold;
+     float m_silence;
++    float m_minioi;
+     size_t m_stepSize;
+     size_t m_blockSize;
+-    size_t m_channelCount;
+     Vamp::RealTime m_delay;
+     Vamp::RealTime m_lastOnset;
+ };
diff --git a/debian/patches/series b/debian/patches/series
index d292fcf..259a5dc 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
 waf.patch
 wscript.patch
+aubio.patch
diff --git a/debian/rules b/debian/rules
index 39d4bc7..0195f0c 100755
--- a/debian/rules
+++ b/debian/rules
@@ -110,7 +110,7 @@ CDBS_BUILD_DEPENDS += , libcairomm-1.0-dev (>= 1.10.0),\
 					  libpangomm-1.4-dev (>= 2.28.4)
 CDBS_BUILD_DEPENDS += , ladspa-sdk (>= 1.1-2),\
 					  libasound2-dev (>= 0.9.4),\
-					  libaubio-dev (>= 0.3.2),\
+					  libaubio-dev (>= 0.4.0),\
 					  libjack-dev,\
 					  liblo-dev (>= 0.26~),\
 					  libsamplerate0-dev (>= 0.1.8),\
-- 
1.8.5.2

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
pkg-multimedia-maintainers mailing list
pkg-multimedia-maintainers@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-multimedia-maintainers

Reply via email to