[arch-commits] Commit in ams/trunk (13 files)

David Runge dvzrv at archlinux.org
Tue Apr 16 12:20:11 UTC 2019


    Date: Tuesday, April 16, 2019 @ 12:20:10
  Author: dvzrv
Revision: 451777

upgpkg: ams 2.1.2-4

Adding latest upstream patches to be compatible with C++11 and Qt5. Dropping .desktop file in favor of generating it from scratch. Adding {mcp,rev,vco}-plugins to optdepends (for examples).

Added:
  ams/trunk/0001-Use-iterator-instead-of-typeof.patch
  ams/trunk/0002-Fix-obsolete-white-spaces.patch
  ams/trunk/0003-Fix-compiler-warning.patch
  ams/trunk/0004-Fix-compiler-warnings.patch
  ams/trunk/0005-Add-git-config-file-for-files-to-be-ignored.patch
  ams/trunk/0006-Make-vocoder-module-compatible-to-C-11.patch
  ams/trunk/0007-Update-translation-files.patch
  ams/trunk/0008-Update-INSTALL-file.patch
  ams/trunk/0009-Select-Qt5-as-default-instead-of-Qt4.patch
  ams/trunk/0010-Remove-warnings-about-not-find-translation-files.patch
  ams/trunk/0011-Remove-obsolete-typecast.patch
Modified:
  ams/trunk/PKGBUILD
Deleted:
  ams/trunk/ams.desktop

-------------------------------------------------------------+
 0001-Use-iterator-instead-of-typeof.patch                   |   32 
 0002-Fix-obsolete-white-spaces.patch                        |   25 
 0003-Fix-compiler-warning.patch                             |   47 
 0004-Fix-compiler-warnings.patch                            |   60 +
 0005-Add-git-config-file-for-files-to-be-ignored.patch      |   51 
 0006-Make-vocoder-module-compatible-to-C-11.patch           |  523 +++++++++
 0007-Update-translation-files.patch                         |  379 +++++++
 0008-Update-INSTALL-file.patch                              |  535 ++++++++++
 0009-Select-Qt5-as-default-instead-of-Qt4.patch             |   31 
 0010-Remove-warnings-about-not-find-translation-files.patch |   35 
 0011-Remove-obsolete-typecast.patch                         |   25 
 PKGBUILD                                                    |   78 -
 ams.desktop                                                 |    9 
 13 files changed, 1796 insertions(+), 34 deletions(-)

Added: 0001-Use-iterator-instead-of-typeof.patch
===================================================================
--- 0001-Use-iterator-instead-of-typeof.patch	                        (rev 0)
+++ 0001-Use-iterator-instead-of-typeof.patch	2019-04-16 12:20:10 UTC (rev 451777)
@@ -0,0 +1,32 @@
+From b8cf05aeb294ddcd06d79c6e838de84cf32f581b Mon Sep 17 00:00:00 2001
+From: Guido Scholz <gscholz at users.sourceforge.net>
+Date: Tue, 6 Nov 2018 21:35:48 +0100
+Subject: [PATCH 01/11] Use iterator instead of typeof
+
+---
+ src/m_pcmout.cpp | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/m_pcmout.cpp b/src/m_pcmout.cpp
+index 47624b2..1efb4fe 100644
+--- a/src/m_pcmout.cpp
++++ b/src/m_pcmout.cpp
+@@ -54,9 +54,12 @@ void M_pcmout::mcAbleChanged(MidiControllableBase *mcAble)
+   else
+     QTextStream(&i3Name) << "K. " << ag;
+ 
+-  for (typeof(mcAble->mcws.constBegin()) mcw = mcAble->mcws.constBegin();
+-       mcw != mcAble->mcws.constEnd();  mcw++) {
+-    MidiComboBox *b = dynamic_cast<MidiComboBox *>(*mcw);
++  QList<MCed*>::const_iterator it;
++  for (it = mcAble->mcws.constBegin(); it != mcAble->mcws.constEnd(); ++it) {
++  //for (typeof(mcAble->mcws.constBegin()) mcw = mcAble->mcws.constBegin();
++  //     mcw != mcAble->mcws.constEnd();  mcw++) {
++    //MidiComboBox *b = dynamic_cast<MidiComboBox *>(*mcw);
++    MidiComboBox *b = dynamic_cast<MidiComboBox *>(*it);
+     if (b) {
+       b->comboBox->setItemText(2, i3Name);
+       b->comboBox->update();
+-- 
+2.21.0
+

Added: 0002-Fix-obsolete-white-spaces.patch
===================================================================
--- 0002-Fix-obsolete-white-spaces.patch	                        (rev 0)
+++ 0002-Fix-obsolete-white-spaces.patch	2019-04-16 12:20:10 UTC (rev 451777)
@@ -0,0 +1,25 @@
+From 4f4c8e873682f10eeddb0bc86e08f3b64b5dcb68 Mon Sep 17 00:00:00 2001
+From: Guido Scholz <gscholz at users.sourceforge.net>
+Date: Tue, 6 Nov 2018 21:38:35 +0100
+Subject: [PATCH 02/11] Fix obsolete white spaces
+
+---
+ src/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 15cc3af..94ccbc3 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -278,7 +278,7 @@ SUFFIXES = _moc.cpp
+ 
+ # rule for translation file updates
+ $(translations): $(ams_SOURCES)
+-	        $(LUPDATE) -verbose $(ams_SOURCES) -ts $@
++	$(LUPDATE) -verbose $(ams_SOURCES) -ts $@
+ 
+ # rule to generate binary translation files
+ .ts.qm: $(translations)
+-- 
+2.21.0
+

Added: 0003-Fix-compiler-warning.patch
===================================================================
--- 0003-Fix-compiler-warning.patch	                        (rev 0)
+++ 0003-Fix-compiler-warning.patch	2019-04-16 12:20:10 UTC (rev 451777)
@@ -0,0 +1,47 @@
+From e797faaa5a11ab47e512cbbff634b5e8cb778abf Mon Sep 17 00:00:00 2001
+From: Guido Scholz <gscholz at users.sourceforge.net>
+Date: Tue, 6 Nov 2018 21:41:10 +0100
+Subject: [PATCH 03/11] Fix compiler warning
+
+---
+ src/synthdata.cpp | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/synthdata.cpp b/src/synthdata.cpp
+index 6ecc16d..f4c17c7 100644
+--- a/src/synthdata.cpp
++++ b/src/synthdata.cpp
+@@ -729,7 +729,7 @@ void SynthData::call_modules(void)
+ 
+   for (i = 0; i < wavoutModuleList.count(); i++)
+     wavoutModuleList.at(i)->generateCycle();
+-  
++
+   for (i = 0; i < scopeModuleList.count(); i++)
+     scopeModuleList.at(i)->generateCycle();
+ 
+@@ -744,7 +744,7 @@ void SynthData::call_modules(void)
+   //FIXME: moduleList is member of modularsynth class
+   for (i = 0; i < moduleList.count(); i++)
+     moduleList.at(i)->cycleReady = false;
+-  
++
+   for (i = 0; i < poly; i++) {
+     noteCounter[i]++;
+     if (noteCounter[i] > 1000000000)
+@@ -897,10 +897,11 @@ void SynthData::handleMidiEventController(snd_seq_event_t *ev)
+         mcctx->setMidiValueRT(
+                 (ev->data.control.value << 7) + ev->data.control.value);
+ 
+-    if (ev->data.control.param == MIDI_CTL_ALL_NOTES_OFF)
++    if (ev->data.control.param == MIDI_CTL_ALL_NOTES_OFF){
+         for (int i = 0; i < poly; ++i)
+             if (noteCounter[i] < 1000000 && channel[i] == ev->data.note.channel)
+                 noteCounter[i] = 1000000;
++    }
+ 
+     else if (ev->data.control.param == MIDI_CTL_SUSTAIN) {
+         bool sustainFlag = ev->data.control.value > 63;
+-- 
+2.21.0
+

Added: 0004-Fix-compiler-warnings.patch
===================================================================
--- 0004-Fix-compiler-warnings.patch	                        (rev 0)
+++ 0004-Fix-compiler-warnings.patch	2019-04-16 12:20:10 UTC (rev 451777)
@@ -0,0 +1,60 @@
+From 1c97792e6ea620180f9220db5c2250ea349cfebd Mon Sep 17 00:00:00 2001
+From: Guido Scholz <gscholz at users.sourceforge.net>
+Date: Tue, 6 Nov 2018 21:43:30 +0100
+Subject: [PATCH 04/11] Fix compiler warnings
+
+---
+ src/ladspadialog.cpp | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/ladspadialog.cpp b/src/ladspadialog.cpp
+index 1695734..b2cb140 100644
+--- a/src/ladspadialog.cpp
++++ b/src/ladspadialog.cpp
+@@ -20,7 +20,7 @@ int LadspaModel::rowCount(const QModelIndex &parent) const
+   if (!parent.isValid())
+     return ::synthdata->ladspaLib.count();
+ 
+-  if (parent.internalId() == -1) {
++  if (parent.internalId() == (quintptr) -1) {
+     const LadspaLib &l = synthdata->ladspaLib.at(parent.row());
+     return l.desc.count();
+   }
+@@ -33,7 +33,7 @@ QVariant LadspaModel::data(const QModelIndex &index, int role) const
+   if (!index.isValid() || role != Qt::DisplayRole)
+     return QVariant();
+ 
+-  if (index.internalId() == -1) {
++  if (index.internalId() == (quintptr) -1) {
+     const LadspaLib &l = synthdata->ladspaLib.at(index.row());
+     return l.name;
+   }
+@@ -53,14 +53,14 @@ QModelIndex LadspaModel::index(int row, int column,
+ 			       const QModelIndex &parent) const
+ {
+   if (!parent.isValid())
+-    return createIndex(row, column, -1);
++    return createIndex(row, column, -1); //  FIXME: quintptr is unsigned!
+ 
+   return createIndex(row, column, parent.row());
+ }
+ 
+ QModelIndex LadspaModel::parent(const QModelIndex &child) const
+ {
+-  if (child.isValid() && child.internalId() != -1)
++  if (child.isValid() && child.internalId() != (quintptr) -1)
+     return index(child.internalId(), 0);
+ 
+   return QModelIndex();
+@@ -203,7 +203,7 @@ void LadspaDialog::pluginHighlighted(const QItemSelection &selected, const QItem
+   selectedLib = selectedDesc = -1;
+   if (selected.indexes().count() > 0) {
+     const QModelIndex mi = selected.indexes().at(0);
+-    if (mi.internalId() != -1) {
++    if (mi.internalId() != (quintptr) -1) {
+       selectedLib = mi.internalId();
+       selectedDesc = mi.row();
+     }
+-- 
+2.21.0
+

Added: 0005-Add-git-config-file-for-files-to-be-ignored.patch
===================================================================
--- 0005-Add-git-config-file-for-files-to-be-ignored.patch	                        (rev 0)
+++ 0005-Add-git-config-file-for-files-to-be-ignored.patch	2019-04-16 12:20:10 UTC (rev 451777)
@@ -0,0 +1,51 @@
+From 5a19a8bc8f0256c143b039d7e4cffbe7696cf1bc Mon Sep 17 00:00:00 2001
+From: Guido Scholz <gscholz at users.sourceforge.net>
+Date: Tue, 6 Nov 2018 21:54:55 +0100
+Subject: [PATCH 05/11] Add git config file for files to be ignored
+
+---
+ .gitignore | 32 ++++++++++++++++++++++++++++++++
+ 1 file changed, 32 insertions(+)
+ create mode 100644 .gitignore
+
+diff --git a/.gitignore b/.gitignore
+new file mode 100644
+index 0000000..604087a
+--- /dev/null
++++ b/.gitignore
+@@ -0,0 +1,32 @@
++*.o
++*.moc.cpp
++*_moc.cpp
++*.qm
++*.gz
++*.xz
++*.bz2
++*.html
++*.swp
++Makefile
++Makefile.in
++configure
++config.h
++config.h.in
++aclocal.m4
++config.guess
++config.sub
++config.log
++config.status
++compile
++depcomp
++install-sh
++missing
++mkinstalldirs
++stamp-h1
++INSTALL
++autom4te.cache/
++src/.deps/
++src/ams
++src/config.h.in~
++tags
++test-driver
+-- 
+2.21.0
+

Added: 0006-Make-vocoder-module-compatible-to-C-11.patch
===================================================================
--- 0006-Make-vocoder-module-compatible-to-C-11.patch	                        (rev 0)
+++ 0006-Make-vocoder-module-compatible-to-C-11.patch	2019-04-16 12:20:10 UTC (rev 451777)
@@ -0,0 +1,523 @@
+From 283ae0c5b89355d1dfaf6a564d25f81588c9e291 Mon Sep 17 00:00:00 2001
+From: Guido Scholz <gscholz at users.sourceforge.net>
+Date: Tue, 6 Nov 2018 21:55:38 +0100
+Subject: [PATCH 06/11] Make vocoder module compatible to C++11
+
+---
+ src/m_vocoder.cpp | 218 +++++++++++++++++++++++-----------------------
+ src/m_vocoder.h   |  31 +++----
+ 2 files changed, 124 insertions(+), 125 deletions(-)
+
+diff --git a/src/m_vocoder.cpp b/src/m_vocoder.cpp
+index 572cf65..371e2cf 100644
+--- a/src/m_vocoder.cpp
++++ b/src/m_vocoder.cpp
+@@ -18,10 +18,6 @@
+   along with ams.  If not, see <http://www.gnu.org/licenses/>.
+ */
+ 
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <unistd.h>
+-#include <math.h>
+ #include <qwidget.h>
+ #include <qstring.h>
+ #include <qslider.h>
+@@ -36,16 +32,13 @@
+ #include "synthdata.h"
+ #include "midicheckbox.h"
+ #include "midislider.h"
+-// For FFTW to be happy we must include complex.h before fftw3.h
+-#include <complex.h>
+-#include <fftw3.h>
+ #include "port.h"
+ #include "m_vocoder.h"
+ 
+ //   Window function - One way to make the FFT behave
+ //   and give more continuous results over edge steps.
+ 
+-float M_vocoder::windowcurve (int windowfunc, int len, int elem, float alpha)
++float M_vocoder::windowcurve (int windowfunc, unsigned int len, int elem, float alpha)
+ {
+   float out;
+   out = 1.0;
+@@ -98,6 +91,7 @@ float M_vocoder::windowcurve (int windowfunc, int len, int elem, float alpha)
+   return (out);
+ }
+ 
++
+ M_vocoder::M_vocoder(QWidget* parent, int id)
+   : Module(M_type_vocoder, id, 5, parent, tr("FFT Vocoder"))
+ {
+@@ -160,6 +154,7 @@ M_vocoder::M_vocoder(QWidget* parent, int id)
+     modbuf[l1] = (float *)malloc( fftsize * sizeof(float));
+     memset( modbuf[l1], 0, fftsize * sizeof(float));
+   }
++
+   carrbuf = (float **)malloc(synthdata->poly * sizeof(float *));
+   for (l1 = 0; l1 < synthdata->poly; l1++) {
+     carrbuf[l1] = (float *)malloc( fftsize * sizeof(float));
+@@ -175,38 +170,48 @@ M_vocoder::M_vocoder(QWidget* parent, int id)
+     window[l2] = windowcurve (whichwin, fftsize, l2, 0.25);
+ 
+   //  FFTW setup stuff
+-  carrinforward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
+-					    * fftsize);
+-  carrinbackward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
+-					     * fftsize);
+-  carroutforward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
+-					     * fftsize);
+-  carroutbackward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
+-					      * fftsize);
+-  modinforward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
+-					    * fftsize);
+-  modinbackward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
+-					     * fftsize);
+-  modoutforward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
+-					     * fftsize);
+-  modoutbackward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
+-					      * fftsize);
+-  fftw_set_timelimit (5.0);
+-  planmodforward = fftw_plan_dft_1d (fftsize, modinforward,
+-				  modoutforward, FFTW_FORWARD, FFTW_MEASURE);
+-  planmodbackward = fftw_plan_dft_1d (fftsize, modinbackward,
+- 				  modoutbackward, FFTW_BACKWARD, FFTW_MEASURE);
+-  plancarrforward = fftw_plan_dft_1d (fftsize, carrinforward,
+-				  carroutforward, FFTW_FORWARD, FFTW_MEASURE);
+-  plancarrbackward = fftw_plan_dft_1d (fftsize, carrinbackward,
+- 				  carroutbackward, FFTW_BACKWARD, FFTW_MEASURE);
++  carrinforward.reserve(fftsize);
++  carrinbackward.reserve(fftsize);
++  carroutforward.reserve(fftsize);
++  carroutbackward.reserve(fftsize);
++  modinforward.reserve(fftsize);
++  modinbackward.reserve(fftsize);
++  modoutforward.reserve(fftsize);
++  modoutbackward.reserve(fftsize);
++
++  fftw_set_timelimit(5.0);
++
++  planmodforward = fftw_plan_dft_1d(fftsize,
++          reinterpret_cast<fftw_complex*> (modinforward.data()),
++          reinterpret_cast<fftw_complex*> (modoutforward.data()),
++          FFTW_FORWARD, FFTW_MEASURE);
++
++  planmodbackward = fftw_plan_dft_1d(fftsize,
++          reinterpret_cast<fftw_complex*> (modinbackward.data()),
++          reinterpret_cast<fftw_complex*> (modoutbackward.data()),
++          FFTW_BACKWARD, FFTW_MEASURE);
++
++  plancarrforward = fftw_plan_dft_1d(fftsize,
++          reinterpret_cast<fftw_complex*> (carrinforward.data()),
++          reinterpret_cast<fftw_complex*> (carroutforward.data()),
++          FFTW_FORWARD, FFTW_MEASURE);
++
++  plancarrbackward = fftw_plan_dft_1d(fftsize,
++          reinterpret_cast<fftw_complex*> (carrinbackward.data()),
++          reinterpret_cast<fftw_complex*> (carroutbackward.data()),
++          FFTW_BACKWARD, FFTW_MEASURE);
+ }
+ 
++
+ M_vocoder::~M_vocoder() {
+ 
+-  int l1;
++  //    Clean up FFTW stuff.
++  fftw_destroy_plan (plancarrforward);
++  fftw_destroy_plan (plancarrbackward);
++  fftw_destroy_plan (planmodforward);
++  fftw_destroy_plan (planmodbackward);
+ 
+-  for (l1 = 0; l1 < synthdata->poly; l1++) {
++  for (int l1 = 0; l1 < synthdata->poly; l1++) {
+     free(modbuf[l1]);
+     free(carrbuf[l1]);
+   }
+@@ -215,29 +220,14 @@ M_vocoder::~M_vocoder() {
+   free (window);
+   free (modmap);
+   free (armodmap);
+-
+-  //#define FFTW_CLEANUP
+-#ifdef FFTW_CLEANUP
+-  //    Clean up FFTW stuff.
+-  fftw_destroy_plan (plancarrforward);
+-  fftw_destroy_plan (plancarrbackward);
+-  fftw_destroy_plan (planmodforward);
+-  fftw_destroy_plan (planmodbackward);
+-  fftw_free (carrinforward);
+-  fftw_free (carrinbackward);
+-  fftw_free (carroutforward);
+-  fftw_free (carroutbackward);
+-  fftw_free (modinforward);
+-  fftw_free (modinbackward);
+-  fftw_free (modoutforward);
+-  fftw_free (modoutbackward);
+-#endif
+ }
+ 
++
+ void M_vocoder::generateCycle() {
+ 
+   int l1;  //  l1 indexes along polyphony.
+   unsigned int l2;  // l2 indexes along the cycle
++  const std::complex<double> I(0.0, 1.0);
+ 
+   inModulator = port_M_modulator->getinputdata();
+   inPitchShift = port_M_pitchshift->getinputdata();
+@@ -272,7 +262,7 @@ void M_vocoder::generateCycle() {
+   //   Did the user change the FFT windowing function?
+   if (myFFTWindowFunc != whichwin) {
+     whichwin = myFFTWindowFunc;
+-    for (l2 = 0; l2 < (unsigned int) fftsize; l2++)
++    for (l2 = 0; l2 < fftsize; l2++)
+       window[l2] = windowcurve (whichwin, fftsize, l2, 0.25);
+   }
+ 
+@@ -294,7 +284,7 @@ void M_vocoder::generateCycle() {
+     }
+ 
+     //    window the input buffer to modinforward
+-    for (l2 = 0; l2 < (unsigned int)fftsize ; l2++) {
++    for (l2 = 0; l2 < fftsize ; l2++) {
+       modinforward[l2] = modbuf[l1][l2] * window[l2];
+     }
+ 
+@@ -310,17 +300,18 @@ void M_vocoder::generateCycle() {
+     fftw_execute (planmodforward);
+ 
+     //    copy the FFT of the modulator to modinbackward.
+-    for (l2 = 0; l2 < (unsigned int)fftsize; l2++)
+-      modinbackward[l2] = modoutforward[l2];
++    //for (l2 = 0; l2 < fftsize; l2++)
++    //  modinbackward[l2] = modoutforward[l2];
++    modinbackward = modoutforward;
+ 
+     //     Send the FFT of the modulator to the output for giggles
+     //     and get an approximation of the first harmonic too.
+     float firstharmonicval;
+     int firstharmonicindex;
+     firstharmonicval = 0.0;
+-    firstharmonicindex = 1.0;
++    firstharmonicindex = 1;
+     for (l2 = 1; l2 < (unsigned int) synthdata->cyclesize; l2++) {
+-      data[2][l1][l2] = logf(fabs (creal (modoutforward[l2])) + 1.0);
++      data[2][l1][l2] = logf(fabs(modoutforward[l2].real()) + 1.0);
+       if (data[2][l1][l2] > firstharmonicval) {
+ 	firstharmonicindex = l2;
+ 	firstharmonicval  = data[2][l1][l2] ;
+@@ -333,35 +324,38 @@ void M_vocoder::generateCycle() {
+ 
+     //   intermediate frequency-domain munging of modulator
+     //   Frequency (additive, Bode-style) shifting first
+-    for (l2 = 0; l2 < (unsigned int)fftsize; l2++)
+-      modinbackward[l2] = 0;
++    for (l2 = 0; l2 < fftsize; l2++)
++      modinbackward[l2] = 0.0;
++
+     int lclfrq;
+-    for (l2 = 0; l2 < (unsigned int)fftsize/2; l2++) {
++    for (l2 = 0; l2 < fftsize/2; l2++) {
+       //   positive frequencies (first half) of the FFT result
+       lclfrq = l2 + (int)freqshift + vcfreqshift * inFreqShift[l1][0];
+       lclfrq = lclfrq > 0 ? lclfrq : 0;
+-      lclfrq = lclfrq < ((fftsize/2)-1) ? lclfrq : (fftsize/2)-1;
++      lclfrq = lclfrq < (int)((fftsize/2)-1) ? lclfrq : (fftsize/2)-1;
+       modinbackward [lclfrq] = modoutforward [l2];
+       //   Negative frequencies (second half of the fft result)
+-      modinbackward [fftsize - lclfrq] = modoutforward [ fftsize - l2];
++      modinbackward [fftsize - lclfrq] = modoutforward [fftsize - l2];
+     }
+ 
+-    //    Pitchshifting (multiplicative, harmonic-retaining) shifting.
+-    //    Note that we reuse the modoutforward as working space
+-    for (l2 = 0; l2 < (unsigned int) fftsize; l2++) {
+-      modoutforward[l2] = modinbackward[l2];
+-    };
+-    for (l2 = 0; l2 < (unsigned int)fftsize; l2++)
+-      modinbackward[l2] = 0;
++    // Pitchshifting (multiplicative, harmonic-retaining) shifting.
++    // Note that we reuse the modoutforward as working space
++    //for (l2 = 0; l2 < fftsize; l2++) {
++    //  modoutforward[l2] = modinbackward[l2];
++    //};
++    modoutforward = modinbackward;
++
++    for (l2 = 0; l2 < fftsize; l2++)
++      modinbackward[l2] = 0.0;
+ 
+     float psmod, psfactor;
+     psmod = (pitchshift + vcpitch * inPitchShift[l1][0]);
+     psfactor = pow (2.0, psmod);
+-    for (l2 = 0; l2 < (unsigned int)fftsize/2; l2++) {
++    for (l2 = 0; l2 < fftsize/2; l2++) {
+       //   positive frequencies (first half) of the FFT result
+       lclfrq = l2 * psfactor;
+       lclfrq = lclfrq > 0 ? lclfrq : 0;
+-      lclfrq = lclfrq < ((fftsize/2)-1) ? lclfrq : (fftsize/2)-1;
++      lclfrq = lclfrq < (int)((fftsize/2)-1) ? lclfrq : (fftsize/2)-1;
+       //   Old way to pitch shift: just move the bucket.  But this puts
+       //   nulls wherever the energy is split between two buckets with
+       //   a 180 degree phase difference.
+@@ -375,12 +369,12 @@ void M_vocoder::generateCycle() {
+ 	  //   Better way: move freq. bin, multiply angle by octave motion.
+ 	  //
+ 	  modinbackward[lclfrq] +=
+-	    cabs (modoutforward [l2])
+-	    * cexp (I * ( carg (modoutforward [l2])
++	    std::abs(modoutforward[l2])
++	    * std::exp (I * ( std::arg (modoutforward [l2])
+ 			  + (l2 * phaseshift * psfactor)));
+ 	  modinbackward[fftsize - lclfrq] +=
+-	    cabs (modoutforward [ fftsize - l2])
+-	    * cexp (I * ( carg (modoutforward [ fftsize - l2])
++	    std::abs (modoutforward [ fftsize - l2])
++	    * std::exp (I * ( std::arg (modoutforward [ fftsize - l2])
+ 			  + (l2 * phaseshift * psfactor)));
+ 	};
+     }
+@@ -389,9 +383,9 @@ void M_vocoder::generateCycle() {
+     fftw_execute (planmodbackward);
+ 
+     //   renormalize the time-domain modulator output
+-    for (l2 = 0; l2 < (unsigned)fftsize; l2++) {
+-      modoutbackward [l2] = modoutbackward[l2] / float (fftsize) ;
+-      modoutbackward [l2] = modoutbackward[l2] / window[l2];
++    for (l2 = 0; l2 < fftsize; l2++) {
++      modoutbackward [l2] = modoutbackward[l2] / (double) fftsize;
++      modoutbackward [l2] = modoutbackward[l2] / (double) window[l2];
+     }
+ 
+     unsigned int i;
+@@ -400,13 +394,11 @@ void M_vocoder::generateCycle() {
+ 
+ 
+     //     Splicing the new output to the results
+-    if (dynsplice == 0.0)
+-      {
++    if (dynsplice == 0.0) {
+ 	//   output it as the altered modulator.
+ 	for (l2 = 0; l2 < synthdata->cyclesize; l2++) {
+-	  data[0][l1][l2] = creal ( modoutbackward [l2 +
+-						    fftsize/2 -
+-						    synthdata->cyclesize/2 ]);
++	  data[0][l1][l2] =
++              modoutbackward[l2 + fftsize/2 - synthdata->cyclesize/2].real();
+ 	}
+ 	clomatch_index = fftsize - synthdata->cyclesize;
+       }
+@@ -421,18 +413,21 @@ void M_vocoder::generateCycle() {
+ 	float tval, dtval;
+ 	int searchstart;
+ 	float spliceval, dspliceval;
+-	searchstart = fftsize/2 - synthdata->cyclesize;
+-	if (searchstart < 1) searchstart = 1;
+-	clomatch_index = searchstart;
++
++        searchstart = fftsize/2 - synthdata->cyclesize;
++        if (searchstart < 1)
++            searchstart = 1;
++
++        clomatch_index = searchstart;
+ 	spliceval = data[0][l1][synthdata->cyclesize - 1];
+ 	dspliceval = spliceval - data[0][l1][synthdata->cyclesize - 2];
+-	clov_sofar= fabs(creal(modoutbackward[clomatch_index])-spliceval );
++	clov_sofar= fabs(modoutbackward[clomatch_index].real()-spliceval);
+ 	for (l2 = searchstart;
+ 	     l2 < (searchstart + synthdata->cyclesize);
+ 	     l2++)
+ 	  {
+-	    tval = creal (modoutbackward[l2]);
+-	    dtval = tval - creal (modoutbackward [l2-1]);
++	    tval = modoutbackward[l2].real();
++	    dtval = tval - modoutbackward [l2-1].real();
+ 	    if (
+ 		((fabs (tval - spliceval )) < clov_sofar )
+ 		&& ((dtval * dspliceval ) >= 0)
+@@ -445,15 +440,15 @@ void M_vocoder::generateCycle() {
+ 	  };
+ 	//  fprintf (stderr, "%d %f %f ",
+ 	//      clomatch_index, clov_sofar, clodv_sofar);
+-	
++
+ 	//   What's our residual error, so that we can splice this
+ 	//   with minimal "click"?
+-	residual = + spliceval - creal( modoutbackward[clomatch_index]);
++	residual = + spliceval - modoutbackward[clomatch_index].real();
+ 
+ 	//  Move our wave, with the best match so far established, to
+ 	//   the output buffer area.
+ 	for (l2 = 0; l2 < synthdata->cyclesize; l2++) {
+-	  data[0][l1][l2] = creal ( modoutbackward [ clomatch_index + l2])
++	  data[0][l1][l2] = modoutbackward[clomatch_index + l2].real()
+ 	    + ((1.0 - (float(l2) / float(synthdata->cyclesize))) * residual);
+ 	};
+ 
+@@ -466,17 +461,18 @@ void M_vocoder::generateCycle() {
+     for (l2 = 0; l2 < fftsize - synthdata->cyclesize; l2++) {
+       carrbuf [l1][l2] = carrbuf [l1][l2 + synthdata->cyclesize];
+     }
++
+     for (l2 = 0; l2 < synthdata->cyclesize; l2++) {
+       carrbuf [l1][l2 + fftsize - synthdata->cyclesize] = inCarrier[l1][l2];
+     }
+ 
+-    for (l2 = 0; l2 <  unsigned (fftsize); l2++) {
++    for (l2 = 0; l2 < fftsize; l2++) {
+       carrinforward [l2] = carrbuf [l1][l2] * window[l2];
+     }
+ 
+     fftw_execute (plancarrforward);
+ 
+-    for (l2 = 0; l2 < (unsigned) fftsize; l2++) {
++    for (l2 = 0; l2 < fftsize; l2++) {
+       carrinbackward[l2] = carroutforward[l2];
+     };
+ 
+@@ -486,34 +482,37 @@ void M_vocoder::generateCycle() {
+     //   Group the modulator into channels, and multipy the channels
+     //   over the carrier.
+ 
+-    int localchannels;
+-    localchannels = channels + vcchannels * inChannels[l1][0];
+-    if (localchannels < 1) localchannels = 1;
+-    if (localchannels > fftsize - 1) localchannels = fftsize - 1;
+-    for (l2 = 0; l2 < (unsigned) fftsize; l2++) {
++    unsigned int localchannels = channels + vcchannels * inChannels[l1][0];
++    if (localchannels < 1)
++        localchannels = 1;
++
++    if (localchannels > fftsize - 1)
++        localchannels = fftsize - 1;
++
++    for (l2 = 0; l2 < fftsize; l2++) {
+       modmap[l2] = 0;
+       //       initial conditions...
+       if (l2 == 0)
+ 	for (i = 0; i < channels; i++)
+-	  modmap[l2] += cabs (modoutforward[l2 + i]);
++	  modmap[l2] += std::abs(modoutforward[l2 + i]);
+       else
+ 	modmap [l2] = modmap[l2 - 1];
+ 
+       //    add the heads, subtract the tails
+       i = l2 + channels;
+-      if (l2 < (unsigned)fftsize - 2)
+-	modmap[l2] += cabs( modoutforward [i] );
++      if (l2 < fftsize - 2)
++	modmap[l2] += std::abs(modoutforward[i]);
+       i = l2 - channels;
+       if (l2 >= channels)
+-	modmap[l2] -= cabs( modoutforward [i] );
++	modmap[l2] -= std::abs(modoutforward[i]);
+     }
+ 
+     //   Normalize the modmap
+-    for (l2 = 0; l2 < (unsigned) fftsize; l2++)
++    for (l2 = 0; l2 < fftsize; l2++)
+       modmap[l2] = modmap[l2] / localchannels;
+ 
+     //   Do attack/release
+-    for (l2 = 0; l2 < (unsigned) fftsize; l2++) {
++    for (l2 = 0; l2 < fftsize; l2++) {
+       if (modmap [l2] > armodmap[l2])
+ 	armodmap [l2] += (1 - attack) * (modmap[l2] - armodmap[l2]);
+       if (modmap [l2] < armodmap[l2])
+@@ -521,8 +520,8 @@ void M_vocoder::generateCycle() {
+     }
+ 
+     //   multiply the carrier by the modulation map.
+-    for (l2 = 0; l2 < (unsigned) fftsize; l2++) {
+-      carrinbackward[l2] = carroutforward[l2] * armodmap[l2];
++    for (l2 = 0; l2 < fftsize; l2++) {
++      carrinbackward[l2] = carroutforward[l2] * (double) armodmap[l2];
+     }
+ 
+     //   reverse transform to final output, and renormalize by 1/fftsize.
+@@ -532,8 +531,7 @@ void M_vocoder::generateCycle() {
+     for (l2 = 0; l2 < synthdata->cyclesize; l2++) {
+       offset = l2 + (fftsize/2) - (synthdata->cyclesize / 2);
+       data[1][l1][l2]=
+-	(creal(carroutbackward[offset]/window[offset])) / (fftsize * 100);
++	(carroutbackward[offset].real()/window[offset]) / (fftsize * 100);
+     };
+   };
+ }
+-
+diff --git a/src/m_vocoder.h b/src/m_vocoder.h
+index 38eac58..32c8521 100644
+--- a/src/m_vocoder.h
++++ b/src/m_vocoder.h
+@@ -1,4 +1,4 @@
+-/* 
++/*
+   Vocoder - derived from m_delay.cpp
+ 
+   Copyright (C) 2011 Bill Yerazunis <yerazunis at yahoo.com>
+@@ -22,7 +22,9 @@
+ #define M_VOCODER_H
+ 
+ #include "module.h"
+-#include <complex.h>
++
++#include <vector>
++#include <ccomplex>
+ #include <fftw3.h>
+ 
+ #define MODULE_VOCODER_WIDTH                 105
+@@ -30,7 +32,7 @@
+ 
+ class M_vocoder : public Module
+ {
+-    Q_OBJECT 
++    Q_OBJECT
+ 
+     float channels, vcchannels;
+     float attack, release;
+@@ -42,21 +44,20 @@ class M_vocoder : public Module
+ 
+     Port *port_M_modulator, *port_M_pitchshift, *port_M_freqshift,
+       *port_M_channels, *port_M_carrier;
++
+     Port *port_modfft_out, *port_firstharmonic_out,
+-      *port_altmodulator_out, 
+-      *port_vocoder_out;
++      *port_altmodulator_out, *port_vocoder_out;
+ 
+-    fftw_plan planmodforward, planmodbackward, 
++    fftw_plan planmodforward, planmodbackward,
+       plancarrforward, plancarrbackward;
+ 
+-    fftw_complex *carrinforward, *carroutforward, 
+-      *carrinbackward, *carroutbackward,
+-      *modinforward, *modoutforward, 
+-      *modinbackward, *modoutbackward;
++    std::vector<std::complex<double>> carrinforward, carroutforward,
++        carrinbackward, carroutbackward,
++        modinforward, modoutforward,
++        modinbackward, modoutbackward;
+ 
+-  public: 
+-    int fftsize;
+-    float **inModulator, **inPitchShift, **inFreqShift, 
++    unsigned int fftsize;
++    float **inModulator, **inPitchShift, **inFreqShift,
+       **inChannels, **inCarrier;
+     // the previous time-based samples, for overlapping
+     float **modbuf, **carrbuf;
+@@ -68,10 +69,10 @@ class M_vocoder : public Module
+     float *armodmap;
+ 
+   public:
+-    float windowcurve (int windowfunc, int len, int elem, float alpha );
++    float windowcurve (int windowfunc, unsigned int len, int elem, float alpha );
+     M_vocoder(QWidget* parent=0, int id = 0);
+     ~M_vocoder();
+     void generateCycle();
+ };
+-  
++
+ #endif
+-- 
+2.21.0
+

Added: 0007-Update-translation-files.patch
===================================================================
--- 0007-Update-translation-files.patch	                        (rev 0)
+++ 0007-Update-translation-files.patch	2019-04-16 12:20:10 UTC (rev 451777)
@@ -0,0 +1,379 @@
+From 601bb728dcd9915f5eae860041748b43103e37b4 Mon Sep 17 00:00:00 2001
+From: Guido Scholz <gscholz at users.sourceforge.net>
+Date: Tue, 6 Nov 2018 21:56:21 +0100
+Subject: [PATCH 07/11] Update translation files
+
+---
+ src/translations/ams_de.ts | 58 +++++++++++++++++++-------------------
+ src/translations/ams_fr.ts | 58 +++++++++++++++++++-------------------
+ 2 files changed, 58 insertions(+), 58 deletions(-)
+
+diff --git a/src/translations/ams_de.ts b/src/translations/ams_de.ts
+index 7031b78..a7643d4 100644
+--- a/src/translations/ams_de.ts
++++ b/src/translations/ams_de.ts
+@@ -1,6 +1,6 @@
+ <?xml version="1.0" encoding="utf-8"?>
+ <!DOCTYPE TS>
+-<TS version="2.0">
++<TS version="2.1">
+ <context>
+     <name>AboutDialog</name>
+     <message>
+@@ -3315,142 +3315,142 @@ and effect processor.</source>
+ <context>
+     <name>M_vocoder</name>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="102"/>
++        <location filename="../m_vocoder.cpp" line="96"/>
+         <source>FFT Vocoder</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="109"/>
++        <location filename="../m_vocoder.cpp" line="103"/>
+         <source>Modulator</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="110"/>
++        <location filename="../m_vocoder.cpp" line="104"/>
+         <source>Pitch Shift</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="111"/>
++        <location filename="../m_vocoder.cpp" line="105"/>
+         <source>Freq Shift</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="112"/>
++        <location filename="../m_vocoder.cpp" line="106"/>
+         <source>Channels</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="113"/>
++        <location filename="../m_vocoder.cpp" line="107"/>
+         <source>Carrier</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="115"/>
++        <location filename="../m_vocoder.cpp" line="109"/>
+         <source>Altered Mod</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="116"/>
++        <location filename="../m_vocoder.cpp" line="110"/>
+         <source>Vocoder Out</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="117"/>
++        <location filename="../m_vocoder.cpp" line="111"/>
+         <source>Modulator FFT</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="118"/>
++        <location filename="../m_vocoder.cpp" line="112"/>
+         <source>Mod 1st H</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="124"/>
++        <location filename="../m_vocoder.cpp" line="118"/>
+         <source>&Bins/Channel</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="128"/>
++        <location filename="../m_vocoder.cpp" line="122"/>
+         <source>&VC Bins/Channels</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="130"/>
++        <location filename="../m_vocoder.cpp" line="124"/>
+         <source>&Attack time</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="132"/>
++        <location filename="../m_vocoder.cpp" line="126"/>
+         <source>&Release time</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="140"/>
++        <location filename="../m_vocoder.cpp" line="134"/>
+         <source>VC Fre&q shift</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="148"/>
++        <location filename="../m_vocoder.cpp" line="142"/>
+         <source>Hamming (min 1st sidelobe)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="151"/>
++        <location filename="../m_vocoder.cpp" line="145"/>
+         <source>FFT &Window function</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="154"/>
++        <location filename="../m_vocoder.cpp" line="148"/>
+         <source>Dynamic &splicing</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="156"/>
++        <location filename="../m_vocoder.cpp" line="150"/>
+         <source>R-&Theta modulator</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="145"/>
++        <location filename="../m_vocoder.cpp" line="139"/>
+         <source>Rectangular</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="134"/>
++        <location filename="../m_vocoder.cpp" line="128"/>
+         <source>&Pitch shift (octaves)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="136"/>
++        <location filename="../m_vocoder.cpp" line="130"/>
+         <source>V&C Pitch shift</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="138"/>
++        <location filename="../m_vocoder.cpp" line="132"/>
+         <source>&Frequency (Bode) shift</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="142"/>
++        <location filename="../m_vocoder.cpp" line="136"/>
+         <source>P&hase shift</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="146"/>
++        <location filename="../m_vocoder.cpp" line="140"/>
+         <source>Trapezoidal</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="147"/>
++        <location filename="../m_vocoder.cpp" line="141"/>
+         <source>Hann (Cosine)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="149"/>
++        <location filename="../m_vocoder.cpp" line="143"/>
+         <source>Tukey (flattop cosine)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="150"/>
++        <location filename="../m_vocoder.cpp" line="144"/>
+         <source>Blackman-Nutall (minimum spill)</source>
+         <translation type="unfinished"></translation>
+     </message>
+diff --git a/src/translations/ams_fr.ts b/src/translations/ams_fr.ts
+index 73c6b2a..de47794 100644
+--- a/src/translations/ams_fr.ts
++++ b/src/translations/ams_fr.ts
+@@ -1,6 +1,6 @@
+ <?xml version="1.0" encoding="utf-8"?>
+ <!DOCTYPE TS>
+-<TS version="2.0" language="fr">
++<TS version="2.1" language="fr">
+ <context>
+     <name>AboutDialog</name>
+     <message>
+@@ -3323,142 +3323,142 @@ and effect processor.</source>
+ <context>
+     <name>M_vocoder</name>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="102"/>
++        <location filename="../m_vocoder.cpp" line="96"/>
+         <source>FFT Vocoder</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="109"/>
++        <location filename="../m_vocoder.cpp" line="103"/>
+         <source>Modulator</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="110"/>
++        <location filename="../m_vocoder.cpp" line="104"/>
+         <source>Pitch Shift</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="111"/>
++        <location filename="../m_vocoder.cpp" line="105"/>
+         <source>Freq Shift</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="112"/>
++        <location filename="../m_vocoder.cpp" line="106"/>
+         <source>Channels</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="113"/>
++        <location filename="../m_vocoder.cpp" line="107"/>
+         <source>Carrier</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="115"/>
++        <location filename="../m_vocoder.cpp" line="109"/>
+         <source>Altered Mod</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="116"/>
++        <location filename="../m_vocoder.cpp" line="110"/>
+         <source>Vocoder Out</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="117"/>
++        <location filename="../m_vocoder.cpp" line="111"/>
+         <source>Modulator FFT</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="118"/>
++        <location filename="../m_vocoder.cpp" line="112"/>
+         <source>Mod 1st H</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="124"/>
++        <location filename="../m_vocoder.cpp" line="118"/>
+         <source>&Bins/Channel</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="128"/>
++        <location filename="../m_vocoder.cpp" line="122"/>
+         <source>&VC Bins/Channels</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="130"/>
++        <location filename="../m_vocoder.cpp" line="124"/>
+         <source>&Attack time</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="132"/>
++        <location filename="../m_vocoder.cpp" line="126"/>
+         <source>&Release time</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="140"/>
++        <location filename="../m_vocoder.cpp" line="134"/>
+         <source>VC Fre&q shift</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="148"/>
++        <location filename="../m_vocoder.cpp" line="142"/>
+         <source>Hamming (min 1st sidelobe)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="151"/>
++        <location filename="../m_vocoder.cpp" line="145"/>
+         <source>FFT &Window function</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="154"/>
++        <location filename="../m_vocoder.cpp" line="148"/>
+         <source>Dynamic &splicing</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="156"/>
++        <location filename="../m_vocoder.cpp" line="150"/>
+         <source>R-&Theta modulator</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="145"/>
++        <location filename="../m_vocoder.cpp" line="139"/>
+         <source>Rectangular</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="134"/>
++        <location filename="../m_vocoder.cpp" line="128"/>
+         <source>&Pitch shift (octaves)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="136"/>
++        <location filename="../m_vocoder.cpp" line="130"/>
+         <source>V&C Pitch shift</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="138"/>
++        <location filename="../m_vocoder.cpp" line="132"/>
+         <source>&Frequency (Bode) shift</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="142"/>
++        <location filename="../m_vocoder.cpp" line="136"/>
+         <source>P&hase shift</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="146"/>
++        <location filename="../m_vocoder.cpp" line="140"/>
+         <source>Trapezoidal</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="147"/>
++        <location filename="../m_vocoder.cpp" line="141"/>
+         <source>Hann (Cosine)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="149"/>
++        <location filename="../m_vocoder.cpp" line="143"/>
+         <source>Tukey (flattop cosine)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../m_vocoder.cpp" line="150"/>
++        <location filename="../m_vocoder.cpp" line="144"/>
+         <source>Blackman-Nutall (minimum spill)</source>
+         <translation type="unfinished"></translation>
+     </message>
+-- 
+2.21.0
+

Added: 0008-Update-INSTALL-file.patch
===================================================================
--- 0008-Update-INSTALL-file.patch	                        (rev 0)
+++ 0008-Update-INSTALL-file.patch	2019-04-16 12:20:10 UTC (rev 451777)
@@ -0,0 +1,535 @@
+From eea2bf47dc1b2d64f381f0f1271003af8e4fd404 Mon Sep 17 00:00:00 2001
+From: Guido Scholz <gscholz at users.sourceforge.net>
+Date: Tue, 6 Nov 2018 21:57:13 +0100
+Subject: [PATCH 08/11] Update INSTALL file
+
+---
+ INSTALL | 317 ++++++++++++++++++++++++++++----------------------------
+ 1 file changed, 160 insertions(+), 157 deletions(-)
+
+diff --git a/INSTALL b/INSTALL
+index 7d1c323..8865734 100644
+--- a/INSTALL
++++ b/INSTALL
+@@ -1,8 +1,8 @@
+ Installation Instructions
+ *************************
+ 
+-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++   Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
++Foundation, Inc.
+ 
+    Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+@@ -12,97 +12,96 @@ without warranty of any kind.
+ Basic Installation
+ ==================
+ 
+-   Briefly, the shell commands `./configure; make; make install' should
+-configure, build, and install this package.  The following
+-more-detailed instructions are generic; see the `README' file for
++   Briefly, the shell command './configure && make && make install'
++should configure, build, and install this package.  The following
++more-detailed instructions are generic; see the 'README' file for
+ instructions specific to this package.  Some packages provide this
+-`INSTALL' file but do not implement all of the features documented
++'INSTALL' file but do not implement all of the features documented
+ below.  The lack of an optional feature in a given package is not
+ necessarily a bug.  More recommendations for GNU packages can be found
+ in *note Makefile Conventions: (standards)Makefile Conventions.
+ 
+-   The `configure' shell script attempts to guess correct values for
++   The 'configure' shell script attempts to guess correct values for
+ various system-dependent variables used during compilation.  It uses
+-those values to create a `Makefile' in each directory of the package.
+-It may also create one or more `.h' files containing system-dependent
+-definitions.  Finally, it creates a shell script `config.status' that
++those values to create a 'Makefile' in each directory of the package.
++It may also create one or more '.h' files containing system-dependent
++definitions.  Finally, it creates a shell script 'config.status' that
+ you can run in the future to recreate the current configuration, and a
+-file `config.log' containing compiler output (useful mainly for
+-debugging `configure').
++file 'config.log' containing compiler output (useful mainly for
++debugging 'configure').
+ 
+-   It can also use an optional file (typically called `config.cache'
+-and enabled with `--cache-file=config.cache' or simply `-C') that saves
+-the results of its tests to speed up reconfiguring.  Caching is
+-disabled by default to prevent problems with accidental use of stale
+-cache files.
++   It can also use an optional file (typically called 'config.cache' and
++enabled with '--cache-file=config.cache' or simply '-C') that saves the
++results of its tests to speed up reconfiguring.  Caching is disabled by
++default to prevent problems with accidental use of stale cache files.
+ 
+    If you need to do unusual things to compile the package, please try
+-to figure out how `configure' could check whether to do them, and mail
+-diffs or instructions to the address given in the `README' so they can
++to figure out how 'configure' could check whether to do them, and mail
++diffs or instructions to the address given in the 'README' so they can
+ be considered for the next release.  If you are using the cache, and at
+-some point `config.cache' contains results you don't want to keep, you
++some point 'config.cache' contains results you don't want to keep, you
+ may remove or edit it.
+ 
+-   The file `configure.ac' (or `configure.in') is used to create
+-`configure' by a program called `autoconf'.  You need `configure.ac' if
+-you want to change it or regenerate `configure' using a newer version
+-of `autoconf'.
++   The file 'configure.ac' (or 'configure.in') is used to create
++'configure' by a program called 'autoconf'.  You need 'configure.ac' if
++you want to change it or regenerate 'configure' using a newer version of
++'autoconf'.
+ 
+    The simplest way to compile this package is:
+ 
+-  1. `cd' to the directory containing the package's source code and type
+-     `./configure' to configure the package for your system.
++  1. 'cd' to the directory containing the package's source code and type
++     './configure' to configure the package for your system.
+ 
+-     Running `configure' might take a while.  While running, it prints
++     Running 'configure' might take a while.  While running, it prints
+      some messages telling which features it is checking for.
+ 
+-  2. Type `make' to compile the package.
++  2. Type 'make' to compile the package.
+ 
+-  3. Optionally, type `make check' to run any self-tests that come with
++  3. Optionally, type 'make check' to run any self-tests that come with
+      the package, generally using the just-built uninstalled binaries.
+ 
+-  4. Type `make install' to install the programs and any data files and
++  4. Type 'make install' to install the programs and any data files and
+      documentation.  When installing into a prefix owned by root, it is
+      recommended that the package be configured and built as a regular
+-     user, and only the `make install' phase executed with root
++     user, and only the 'make install' phase executed with root
+      privileges.
+ 
+-  5. Optionally, type `make installcheck' to repeat any self-tests, but
++  5. Optionally, type 'make installcheck' to repeat any self-tests, but
+      this time using the binaries in their final installed location.
+      This target does not install anything.  Running this target as a
+-     regular user, particularly if the prior `make install' required
++     regular user, particularly if the prior 'make install' required
+      root privileges, verifies that the installation completed
+      correctly.
+ 
+   6. You can remove the program binaries and object files from the
+-     source code directory by typing `make clean'.  To also remove the
+-     files that `configure' created (so you can compile the package for
+-     a different kind of computer), type `make distclean'.  There is
+-     also a `make maintainer-clean' target, but that is intended mainly
++     source code directory by typing 'make clean'.  To also remove the
++     files that 'configure' created (so you can compile the package for
++     a different kind of computer), type 'make distclean'.  There is
++     also a 'make maintainer-clean' target, but that is intended mainly
+      for the package's developers.  If you use it, you may have to get
+      all sorts of other programs in order to regenerate files that came
+      with the distribution.
+ 
+-  7. Often, you can also type `make uninstall' to remove the installed
++  7. Often, you can also type 'make uninstall' to remove the installed
+      files again.  In practice, not all packages have tested that
+      uninstallation works correctly, even though it is required by the
+      GNU Coding Standards.
+ 
+-  8. Some packages, particularly those that use Automake, provide `make
++  8. Some packages, particularly those that use Automake, provide 'make
+      distcheck', which can by used by developers to test that all other
+-     targets like `make install' and `make uninstall' work correctly.
++     targets like 'make install' and 'make uninstall' work correctly.
+      This target is generally not run by end users.
+ 
+ Compilers and Options
+ =====================
+ 
+    Some systems require unusual options for compilation or linking that
+-the `configure' script does not know about.  Run `./configure --help'
++the 'configure' script does not know about.  Run './configure --help'
+ for details on some of the pertinent environment variables.
+ 
+-   You can give `configure' initial values for configuration parameters
+-by setting variables in the command line or in the environment.  Here
+-is an example:
++   You can give 'configure' initial values for configuration parameters
++by setting variables in the command line or in the environment.  Here is
++an example:
+ 
+      ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+ 
+@@ -113,21 +112,21 @@ Compiling For Multiple Architectures
+ 
+    You can compile the package for more than one kind of computer at the
+ same time, by placing the object files for each architecture in their
+-own directory.  To do this, you can use GNU `make'.  `cd' to the
++own directory.  To do this, you can use GNU 'make'.  'cd' to the
+ directory where you want the object files and executables to go and run
+-the `configure' script.  `configure' automatically checks for the
+-source code in the directory that `configure' is in and in `..'.  This
+-is known as a "VPATH" build.
++the 'configure' script.  'configure' automatically checks for the source
++code in the directory that 'configure' is in and in '..'.  This is known
++as a "VPATH" build.
+ 
+-   With a non-GNU `make', it is safer to compile the package for one
++   With a non-GNU 'make', it is safer to compile the package for one
+ architecture at a time in the source code directory.  After you have
+-installed the package for one architecture, use `make distclean' before
++installed the package for one architecture, use 'make distclean' before
+ reconfiguring for another architecture.
+ 
+    On MacOS X 10.5 and later systems, you can create libraries and
+ executables that work on multiple system types--known as "fat" or
+-"universal" binaries--by specifying multiple `-arch' options to the
+-compiler but only a single `-arch' option to the preprocessor.  Like
++"universal" binaries--by specifying multiple '-arch' options to the
++compiler but only a single '-arch' option to the preprocessor.  Like
+ this:
+ 
+      ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+@@ -136,100 +135,104 @@ this:
+ 
+    This is not guaranteed to produce working output in all cases, you
+ may have to build one architecture at a time and combine the results
+-using the `lipo' tool if you have problems.
++using the 'lipo' tool if you have problems.
+ 
+ Installation Names
+ ==================
+ 
+-   By default, `make install' installs the package's commands under
+-`/usr/local/bin', include files under `/usr/local/include', etc.  You
+-can specify an installation prefix other than `/usr/local' by giving
+-`configure' the option `--prefix=PREFIX', where PREFIX must be an
++   By default, 'make install' installs the package's commands under
++'/usr/local/bin', include files under '/usr/local/include', etc.  You
++can specify an installation prefix other than '/usr/local' by giving
++'configure' the option '--prefix=PREFIX', where PREFIX must be an
+ absolute file name.
+ 
+    You can specify separate installation prefixes for
+ architecture-specific files and architecture-independent files.  If you
+-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
++pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
+ PREFIX as the prefix for installing programs and libraries.
+ Documentation and other data files still use the regular prefix.
+ 
+    In addition, if you use an unusual directory layout you can give
+-options like `--bindir=DIR' to specify different values for particular
+-kinds of files.  Run `configure --help' for a list of the directories
+-you can set and what kinds of files go in them.  In general, the
+-default for these options is expressed in terms of `${prefix}', so that
+-specifying just `--prefix' will affect all of the other directory
++options like '--bindir=DIR' to specify different values for particular
++kinds of files.  Run 'configure --help' for a list of the directories
++you can set and what kinds of files go in them.  In general, the default
++for these options is expressed in terms of '${prefix}', so that
++specifying just '--prefix' will affect all of the other directory
+ specifications that were not explicitly provided.
+ 
+    The most portable way to affect installation locations is to pass the
+-correct locations to `configure'; however, many packages provide one or
++correct locations to 'configure'; however, many packages provide one or
+ both of the following shortcuts of passing variable assignments to the
+-`make install' command line to change installation locations without
++'make install' command line to change installation locations without
+ having to reconfigure or recompile.
+ 
+    The first method involves providing an override variable for each
+-affected directory.  For example, `make install
++affected directory.  For example, 'make install
+ prefix=/alternate/directory' will choose an alternate location for all
+ directory configuration variables that were expressed in terms of
+-`${prefix}'.  Any directories that were specified during `configure',
+-but not in terms of `${prefix}', must each be overridden at install
+-time for the entire installation to be relocated.  The approach of
+-makefile variable overrides for each directory variable is required by
+-the GNU Coding Standards, and ideally causes no recompilation.
+-However, some platforms have known limitations with the semantics of
+-shared libraries that end up requiring recompilation when using this
+-method, particularly noticeable in packages that use GNU Libtool.
++'${prefix}'.  Any directories that were specified during 'configure',
++but not in terms of '${prefix}', must each be overridden at install time
++for the entire installation to be relocated.  The approach of makefile
++variable overrides for each directory variable is required by the GNU
++Coding Standards, and ideally causes no recompilation.  However, some
++platforms have known limitations with the semantics of shared libraries
++that end up requiring recompilation when using this method, particularly
++noticeable in packages that use GNU Libtool.
+ 
+-   The second method involves providing the `DESTDIR' variable.  For
+-example, `make install DESTDIR=/alternate/directory' will prepend
+-`/alternate/directory' before all installation names.  The approach of
+-`DESTDIR' overrides is not required by the GNU Coding Standards, and
++   The second method involves providing the 'DESTDIR' variable.  For
++example, 'make install DESTDIR=/alternate/directory' will prepend
++'/alternate/directory' before all installation names.  The approach of
++'DESTDIR' overrides is not required by the GNU Coding Standards, and
+ does not work on platforms that have drive letters.  On the other hand,
+ it does better at avoiding recompilation issues, and works well even
+-when some directory options were not specified in terms of `${prefix}'
+-at `configure' time.
++when some directory options were not specified in terms of '${prefix}'
++at 'configure' time.
+ 
+ Optional Features
+ =================
+ 
+    If the package supports it, you can cause programs to be installed
+-with an extra prefix or suffix on their names by giving `configure' the
+-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
++with an extra prefix or suffix on their names by giving 'configure' the
++option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
+ 
+-   Some packages pay attention to `--enable-FEATURE' options to
+-`configure', where FEATURE indicates an optional part of the package.
+-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+-is something like `gnu-as' or `x' (for the X Window System).  The
+-`README' should mention any `--enable-' and `--with-' options that the
++   Some packages pay attention to '--enable-FEATURE' options to
++'configure', where FEATURE indicates an optional part of the package.
++They may also pay attention to '--with-PACKAGE' options, where PACKAGE
++is something like 'gnu-as' or 'x' (for the X Window System).  The
++'README' should mention any '--enable-' and '--with-' options that the
+ package recognizes.
+ 
+-   For packages that use the X Window System, `configure' can usually
++   For packages that use the X Window System, 'configure' can usually
+ find the X include and library files automatically, but if it doesn't,
+-you can use the `configure' options `--x-includes=DIR' and
+-`--x-libraries=DIR' to specify their locations.
++you can use the 'configure' options '--x-includes=DIR' and
++'--x-libraries=DIR' to specify their locations.
+ 
+    Some packages offer the ability to configure how verbose the
+-execution of `make' will be.  For these packages, running `./configure
++execution of 'make' will be.  For these packages, running './configure
+ --enable-silent-rules' sets the default to minimal output, which can be
+-overridden with `make V=1'; while running `./configure
++overridden with 'make V=1'; while running './configure
+ --disable-silent-rules' sets the default to verbose, which can be
+-overridden with `make V=0'.
++overridden with 'make V=0'.
+ 
+ Particular systems
+ ==================
+ 
+-   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+-CC is not installed, it is recommended to use the following options in
++   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU CC
++is not installed, it is recommended to use the following options in
+ order to use an ANSI C compiler:
+ 
+      ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+ 
+ and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+ 
++   HP-UX 'make' updates targets which have the same time stamps as their
++prerequisites, which makes it generally unusable when shipped generated
++files such as 'configure' are involved.  Use GNU 'make' instead.
++
+    On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+-parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+-a workaround.  If GNU CC is not installed, it is therefore recommended
+-to try
++parse its '<wchar.h>' header file.  The option '-nodtk' can be used as a
++workaround.  If GNU CC is not installed, it is therefore recommended to
++try
+ 
+      ./configure CC="cc"
+ 
+@@ -237,26 +240,26 @@ and if that doesn't work, try
+ 
+      ./configure CC="cc -nodtk"
+ 
+-   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
++   On Solaris, don't put '/usr/ucb' early in your 'PATH'.  This
+ directory contains several dysfunctional programs; working variants of
+-these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+-in your `PATH', put it _after_ `/usr/bin'.
++these programs are available in '/usr/bin'.  So, if you need '/usr/ucb'
++in your 'PATH', put it _after_ '/usr/bin'.
+ 
+-   On Haiku, software installed for all users goes in `/boot/common',
+-not `/usr/local'.  It is recommended to use the following options:
++   On Haiku, software installed for all users goes in '/boot/common',
++not '/usr/local'.  It is recommended to use the following options:
+ 
+      ./configure --prefix=/boot/common
+ 
+ Specifying the System Type
+ ==========================
+ 
+-   There may be some features `configure' cannot figure out
++   There may be some features 'configure' cannot figure out
+ automatically, but needs to determine by the type of machine the package
+ will run on.  Usually, assuming the package is built to be run on the
+-_same_ architectures, `configure' can figure that out, but if it prints
++_same_ architectures, 'configure' can figure that out, but if it prints
+ a message saying it cannot guess the machine type, give it the
+-`--build=TYPE' option.  TYPE can either be a short name for the system
+-type, such as `sun4', or a canonical name which has the form:
++'--build=TYPE' option.  TYPE can either be a short name for the system
++type, such as 'sun4', or a canonical name which has the form:
+ 
+      CPU-COMPANY-SYSTEM
+ 
+@@ -265,101 +268,101 @@ where SYSTEM can have one of these forms:
+      OS
+      KERNEL-OS
+ 
+-   See the file `config.sub' for the possible values of each field.  If
+-`config.sub' isn't included in this package, then this package doesn't
++   See the file 'config.sub' for the possible values of each field.  If
++'config.sub' isn't included in this package, then this package doesn't
+ need to know the machine type.
+ 
+    If you are _building_ compiler tools for cross-compiling, you should
+-use the option `--target=TYPE' to select the type of system they will
++use the option '--target=TYPE' to select the type of system they will
+ produce code for.
+ 
+    If you want to _use_ a cross compiler, that generates code for a
+ platform different from the build platform, you should specify the
+ "host" platform (i.e., that on which the generated programs will
+-eventually be run) with `--host=TYPE'.
++eventually be run) with '--host=TYPE'.
+ 
+ Sharing Defaults
+ ================
+ 
+-   If you want to set default values for `configure' scripts to share,
+-you can create a site shell script called `config.site' that gives
+-default values for variables like `CC', `cache_file', and `prefix'.
+-`configure' looks for `PREFIX/share/config.site' if it exists, then
+-`PREFIX/etc/config.site' if it exists.  Or, you can set the
+-`CONFIG_SITE' environment variable to the location of the site script.
+-A warning: not all `configure' scripts look for a site script.
++   If you want to set default values for 'configure' scripts to share,
++you can create a site shell script called 'config.site' that gives
++default values for variables like 'CC', 'cache_file', and 'prefix'.
++'configure' looks for 'PREFIX/share/config.site' if it exists, then
++'PREFIX/etc/config.site' if it exists.  Or, you can set the
++'CONFIG_SITE' environment variable to the location of the site script.
++A warning: not all 'configure' scripts look for a site script.
+ 
+ Defining Variables
+ ==================
+ 
+    Variables not defined in a site shell script can be set in the
+-environment passed to `configure'.  However, some packages may run
++environment passed to 'configure'.  However, some packages may run
+ configure again during the build, and the customized values of these
+ variables may be lost.  In order to avoid this problem, you should set
+-them in the `configure' command line, using `VAR=value'.  For example:
++them in the 'configure' command line, using 'VAR=value'.  For example:
+ 
+      ./configure CC=/usr/local2/bin/gcc
+ 
+-causes the specified `gcc' to be used as the C compiler (unless it is
++causes the specified 'gcc' to be used as the C compiler (unless it is
+ overridden in the site shell script).
+ 
+-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+-an Autoconf bug.  Until the bug is fixed you can use this workaround:
++Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
++Autoconf limitation.  Until the limitation is lifted, you can use this
++workaround:
+ 
+-     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
++     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+ 
+-`configure' Invocation
++'configure' Invocation
+ ======================
+ 
+-   `configure' recognizes the following options to control how it
++   'configure' recognizes the following options to control how it
+ operates.
+ 
+-`--help'
+-`-h'
+-     Print a summary of all of the options to `configure', and exit.
++'--help'
++'-h'
++     Print a summary of all of the options to 'configure', and exit.
+ 
+-`--help=short'
+-`--help=recursive'
++'--help=short'
++'--help=recursive'
+      Print a summary of the options unique to this package's
+-     `configure', and exit.  The `short' variant lists options used
+-     only in the top level, while the `recursive' variant lists options
+-     also present in any nested packages.
++     'configure', and exit.  The 'short' variant lists options used only
++     in the top level, while the 'recursive' variant lists options also
++     present in any nested packages.
+ 
+-`--version'
+-`-V'
+-     Print the version of Autoconf used to generate the `configure'
++'--version'
++'-V'
++     Print the version of Autoconf used to generate the 'configure'
+      script, and exit.
+ 
+-`--cache-file=FILE'
++'--cache-file=FILE'
+      Enable the cache: use and save the results of the tests in FILE,
+-     traditionally `config.cache'.  FILE defaults to `/dev/null' to
++     traditionally 'config.cache'.  FILE defaults to '/dev/null' to
+      disable caching.
+ 
+-`--config-cache'
+-`-C'
+-     Alias for `--cache-file=config.cache'.
++'--config-cache'
++'-C'
++     Alias for '--cache-file=config.cache'.
+ 
+-`--quiet'
+-`--silent'
+-`-q'
++'--quiet'
++'--silent'
++'-q'
+      Do not print messages saying which checks are being made.  To
+-     suppress all normal output, redirect it to `/dev/null' (any error
++     suppress all normal output, redirect it to '/dev/null' (any error
+      messages will still be shown).
+ 
+-`--srcdir=DIR'
++'--srcdir=DIR'
+      Look for the package's source code in directory DIR.  Usually
+-     `configure' can determine that directory automatically.
++     'configure' can determine that directory automatically.
+ 
+-`--prefix=DIR'
+-     Use DIR as the installation prefix.  *note Installation Names::
+-     for more details, including other options available for fine-tuning
+-     the installation locations.
++'--prefix=DIR'
++     Use DIR as the installation prefix.  *note Installation Names:: for
++     more details, including other options available for fine-tuning the
++     installation locations.
+ 
+-`--no-create'
+-`-n'
++'--no-create'
++'-n'
+      Run the configure checks, but stop before creating any output
+      files.
+ 
+-`configure' also accepts some other, not widely useful, options.  Run
+-`configure --help' for more details.
+-
++'configure' also accepts some other, not widely useful, options.  Run
++'configure --help' for more details.
+-- 
+2.21.0
+

Added: 0009-Select-Qt5-as-default-instead-of-Qt4.patch
===================================================================
--- 0009-Select-Qt5-as-default-instead-of-Qt4.patch	                        (rev 0)
+++ 0009-Select-Qt5-as-default-instead-of-Qt4.patch	2019-04-16 12:20:10 UTC (rev 451777)
@@ -0,0 +1,31 @@
+From e766434fe01f4e0d9a43b18c65908adf43f8a80e Mon Sep 17 00:00:00 2001
+From: Guido Scholz <gscholz at users.sourceforge.net>
+Date: Wed, 7 Nov 2018 20:33:14 +0100
+Subject: [PATCH 09/11] Select Qt5 as default instead of Qt4
+
+---
+ configure.ac | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index b84b352..784ca67 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -110,10 +110,10 @@ LDFLAGS="$saved_libs"
+ AC_LANG_POP(C++)
+ fi
+ 
+-dnl option to enable Qt5 instead of default Qt4 library 
+-AC_ARG_ENABLE(qt5, AC_HELP_STRING([--enable-qt5],
+-                          [enable Qt5 instead of Qt4 library]),,
+-                          enable_qt4=yes)
++dnl option to enable Qt4 instead of default Qt5 library 
++AC_ARG_ENABLE(qt4, AC_HELP_STRING([--enable-qt4],
++                          [enable Qt4 instead of Qt5 library]),,
++                          enable_qt5=yes)
+ AS_IF([test x$enable_qt4 = xyes],
+ dnl Check for Qt4 library files
+ [
+-- 
+2.21.0
+

Added: 0010-Remove-warnings-about-not-find-translation-files.patch
===================================================================
--- 0010-Remove-warnings-about-not-find-translation-files.patch	                        (rev 0)
+++ 0010-Remove-warnings-about-not-find-translation-files.patch	2019-04-16 12:20:10 UTC (rev 451777)
@@ -0,0 +1,35 @@
+From 930df975df6e955f1791bbb40dab5da32eca729f Mon Sep 17 00:00:00 2001
+From: Guido Scholz <gscholz at users.sourceforge.net>
+Date: Wed, 7 Nov 2018 21:31:50 +0100
+Subject: [PATCH 10/11] Remove warnings about not find translation files
+
+---
+ src/main.cpp | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/src/main.cpp b/src/main.cpp
+index d485efc..7b322b8 100644
+--- a/src/main.cpp
++++ b/src/main.cpp
+@@ -117,18 +117,12 @@ int main(int argc, char *argv[])
+   if (qtTr.load(QString("qt_") + loc.name(),
+               QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
+       app.installTranslator(&qtTr);
+-  else
+-      qWarning("No Qt translation for locale '%s' found.",
+-              loc.name().toLatin1().constData());
+ 
+   // translator for ams strings
+   QTranslator amsTr;
+ 
+   if (amsTr.load(QString("ams_") + loc.name(), TRANSLATIONSDIR))
+       app.installTranslator(&amsTr);
+-  else
+-      qWarning("No " AMS_LONGNAME " translation for locale '%s' found.",
+-              loc.name().toLatin1().constData());
+ 
+   int getopt_return;
+   int option_index;
+-- 
+2.21.0
+

Added: 0011-Remove-obsolete-typecast.patch
===================================================================
--- 0011-Remove-obsolete-typecast.patch	                        (rev 0)
+++ 0011-Remove-obsolete-typecast.patch	2019-04-16 12:20:10 UTC (rev 451777)
@@ -0,0 +1,25 @@
+From 3b414306b0e4f8531cbf0bb8cd6d763fa21ed88b Mon Sep 17 00:00:00 2001
+From: Guido Scholz <gscholz at users.sourceforge.net>
+Date: Wed, 7 Nov 2018 22:35:31 +0100
+Subject: [PATCH 11/11] Remove obsolete typecast
+
+---
+ src/m_vocoder.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/m_vocoder.cpp b/src/m_vocoder.cpp
+index 371e2cf..9d2ec8b 100644
+--- a/src/m_vocoder.cpp
++++ b/src/m_vocoder.cpp
+@@ -166,7 +166,7 @@ M_vocoder::M_vocoder(QWidget* parent, int id)
+ 
+   whichwin = 0;
+   window = (float *) malloc (sizeof (float) * fftsize);
+-  for (l2 = 0; l2 < (unsigned int) fftsize; l2++)
++  for (l2 = 0; l2 < fftsize; l2++)
+     window[l2] = windowcurve (whichwin, fftsize, l2, 0.25);
+ 
+   //  FFTW setup stuff
+-- 
+2.21.0
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2019-04-16 12:12:35 UTC (rev 451776)
+++ PKGBUILD	2019-04-16 12:20:10 UTC (rev 451777)
@@ -3,38 +3,68 @@
 
 pkgname=ams
 pkgver=2.1.2
-pkgrel=3
+pkgrel=4
 pkgdesc="A real-time modular synthesizer and effect processor"
 arch=('x86_64')
 url="http://alsamodular.sourceforge.net/"
 license=('GPL2')
 groups=('pro-audio')
-depends=('qt4' 'fftw' 'jack' 'liblo' 'zita-alsa-pcmi')
-makedepends=('ladspa')
+depends=('fftw' 'hicolor-icon-theme' 'jack' 'liblo' 'qt5-base' 'zita-alsa-pcmi')
+makedepends=('gendesk' 'ladspa' 'qt5-tools')
+optdepends=('mcp-plugins: for demos, instruments and tutorials'
+            'rev-plugins: for demos, instruments and tutorials'
+            'vco-plugins: for demos, instruments and tutorials')
 source=("https://downloads.sourceforge.net/project/alsamodular/alsamodular/$pkgver/$pkgname-$pkgver.tar.bz2"
-        "$pkgname.desktop"
-        "$pkgname.png")
+        "${pkgname}.png"
+        '0001-Use-iterator-instead-of-typeof.patch'
+        '0002-Fix-obsolete-white-spaces.patch'
+        '0003-Fix-compiler-warning.patch'
+        '0004-Fix-compiler-warnings.patch'
+        '0005-Add-git-config-file-for-files-to-be-ignored.patch'
+        '0006-Make-vocoder-module-compatible-to-C-11.patch'
+        '0007-Update-translation-files.patch'
+        '0008-Update-INSTALL-file.patch'
+        '0009-Select-Qt5-as-default-instead-of-Qt4.patch'
+        '0010-Remove-warnings-about-not-find-translation-files.patch'
+        '0011-Remove-obsolete-typecast.patch')
 sha512sums=('3a98ccb54505818b4add1b070e2230ba00d80732fdcc54caecba55ad83f352381ed165ab58ca01fc98550bd0691242fd2f733862ee77fd217141ecec52250e4e'
-            'e18395622d20b7733609c5aa1b5cde25fbc0b75175d8a68449edb97f381461ee32f955f5ac888c31d89ac87e77401be0df9e83f260dae6118815cc2bab0b44d9'
-            '991a68d1baa0523d9abddd03cea0532b8f9d5b5e81df62fe4b5501fdfc474ada8c811e8821fadcb82246f1b3d4707e2f4532dd226fd46495fc198f72780caa4e')
+            '991a68d1baa0523d9abddd03cea0532b8f9d5b5e81df62fe4b5501fdfc474ada8c811e8821fadcb82246f1b3d4707e2f4532dd226fd46495fc198f72780caa4e'
+            '40e3627c3e2d2409c731a81a80d23bc12329b15a49f7dbfe4fb8b5ca6a6fb74ffef0ff929b65b1fb4dad23559ac32fc58127ff8e194222e9cfd027f62f115e31'
+            '59640c2e8d5cc4cbebcfa965603f5470909a94eb896e8668d1eb90ad0476ed52ae2417f451b4ef0409cf5fb2cec2ca48686b7a38e48dd665336177649fe8877e'
+            '6eff8ffcb58d7a2271f1ab2b6c30dd00becac6bc9f3a5d8b313db0bba887ad546eacd06711180c4cc61d300b0ca3737ed153f9529a841abed3c1a268056e9be0'
+            'fe6eb9f460f1d640f913475240100005a838252edbcb9a2000adf418e09dc627d0e10166bde6c7cbb0072b275644cdb4d7f7a645877249820c1bd17528525c46'
+            '61e964244e6baf020e54926c1f5d6a4b6a34c54ff725a19f01fe12558942420e073ea7d5e0f3f75036141178079a676a9280a41e84f4b66b97d4a0b0c1eb761f'
+            'ce85bfd4f50dcc9c910c5aa7040c8e50c642f41a04eacd45f0b483cd6764ec19bc8e54317663b2fc70247aba1946d10e84014ad19f46787da8d79ab8077dc707'
+            'cc4f8dab6c6936d9182cfc438322016988d343ca4c5ea2bd319425dd6b1f6451fc24a1be353067be7e78ebe0944b2f1fe5e5bfeb996929e6ca72ed64e8e55755'
+            'c96e771902fb7c722cd9be59245016aa083845df7d62d8d67919662ae20caf0ab7ebe2631339b1518029f146259aebfbb12b0e024911b72e94a5dd45521734dc'
+            'b33d26241770fb95983ba287f0c9dee7ea3c4544efdb47f857ed83df17df8323b2c8266e5730ca1b094dcd562ca6110e8a4c7bdddb1471ed267514a0eb47d9ff'
+            '969a9a5ac237c2dcb5471bb016f887c7a9daf10d064484186c4a673c64c574a6b73a441a131e188d2bb12e920c7b6c89e5ffa3c607c7ff8df8811b632df45168'
+            'dd97b464532c6ed1bc5b0b27edc9aa5514515609f05ee379b36cb4663b23cd04465b4d3f8e2c3eb0fd6e7bf546d6281308e44a81c981ff17b7cf234fabc1a748')
 
 prepare() {
   cd "${pkgname}-${pkgver}"
 
-#  # strip unwanted optimization flags
-#  sed -i '/AMS_OPT_CXXFLAGS=/d' configure
-#
-  # fix libs concat
-  sed -e 's/LIBS+=\$LIBSsave/LIBS="$LIBS $LIBSsave"/' \
-      -e 's/CFLAGS+=\$CFLAGSsave/CFLAGS="$CFLAGS $CFLAGSsave"/' \
-      -i configure
-
-  export CXXFLAGS+=" -std=gnu++98"
-  ./configure --prefix=/usr
+  # patches to be able to build with C++11 and Qt5:
+  # https://sourceforge.net/p/alsamodular/mailman/message/36634325/
+  for id in {0{1..9},10,11}; do
+    patch -Np1 -i "../00${id}"*.patch
+  done
+  # fix typeof for c++11
+  sed -e 's/typeof/__typeof__/g' -i src/*.cpp
+  gendesk -n \
+          --pkgname "${pkgname}" \
+          --name "${pkgname}" \
+          --pkgdesc "A real-time modular synthesizer and effect processor" \
+          --genericname "Synthesizer" \
+          --categories "AudioVideo;Audio"
+  autoreconf -vfi
 }
 
 build() {
   cd "${pkgname}-${pkgver}"
+  CXXFLAGS+=" -std=c++11" \
+  ./configure --prefix=/usr \
+              --enable-qt5
   make
 }
 
@@ -41,14 +71,12 @@
 package() {
   cd "${pkgname}-${pkgver}"
   make DESTDIR="$pkgdir/" install
-
-  # desktop file and icon
-  install -vDm 644 "${srcdir}/${pkgname}.desktop" \
-    "${pkgdir}/usr/share/applications/${pkgname}.desktop"
-  install -vDm 644 "${srcdir}/${pkgname}.png" \
-    "${pkgdir}/usr/share/pixmaps/${pkgname}.png"
-
+  # XDG desktop file and icon
+  install -vDm 644 "${pkgname}.desktop" \
+    -t "${pkgdir}/usr/share/applications/"
+  install -vDm 644 ../"${pkgname}.png" \
+    -t "${pkgdir}/usr/share/icons/hicolor/64x64/apps/"
   # docs
-  install -vDm644 {AUTHORS,ChangeLog,NEWS,README} \
+  install -vDm 644 {AUTHORS,ChangeLog,NEWS,README} \
     -t "${pkgdir}/usr/share/doc/${pkgname}/"
 }

Deleted: ams.desktop
===================================================================
--- ams.desktop	2019-04-16 12:12:35 UTC (rev 451776)
+++ ams.desktop	2019-04-16 12:20:10 UTC (rev 451777)
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Alsa Modular Synth
-Comment=Realtime modular synthesizer and effect processor
-Exec=ams
-Icon=ams
-Terminal=false
-Categories=Application;AudioVideo;AudioVideo;Qt;X-Jack;X-Sound;
-StartupNotify=true
\ No newline at end of file



More information about the arch-commits mailing list