diff --git a/samplebrain/interface/samplebrain.ui b/samplebrain/interface/samplebrain.ui
index edda3a6..85389c8 100644
--- a/samplebrain/interface/samplebrain.ui
+++ b/samplebrain/interface/samplebrain.ui
@@ -7,11 +7,11 @@
0
0
1134
- 691
+ 707
- samplebrain 0.6
+ samplebrain 0.7
@@ -31,7 +31,7 @@
search
-
+
-
-
@@ -340,7 +340,7 @@
- how long it takes for the novelty to ware off
+ how long it takes for the novelty to wear off
100
@@ -375,9 +375,9 @@
-
-
+
-
-
+
Comic Sans MS
@@ -390,12 +390,12 @@
- synpases
+ search stretch
-
-
+
0
@@ -403,13 +403,16 @@
- how many connections to search (ordered in closeness)
+ repeat search (set novelty to 0 for dodgy jungle timessssstretch)
+
+
+ 1
- 1000
+ 10
- 20
+ 1
Qt::Horizontal
@@ -417,7 +420,7 @@
-
-
+
0
@@ -427,11 +430,14 @@
how many connections to search (ordered in closeness)
+
+ 1
+
- 1000
+ 10
- 20
+ 1
@@ -502,7 +508,7 @@
-
- false
+ true
search based on synapses and sonify search process
@@ -520,6 +526,138 @@
+ -
+
+
-
+
+
+
+ Comic Sans MS
+ 9
+ 75
+ true
+
+
+
+
+
+
+ num synpases
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ how many connections to search (ordered in closeness)
+
+
+ 1000
+
+
+ 20
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ how many connections to search (ordered in closeness)
+
+
+ 1000
+
+
+ 20
+
+
+
+
+
+ -
+
+
-
+
+
+
+ Comic Sans MS
+ 9
+ 75
+ true
+
+
+
+
+
+
+ synaptic slide error
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ block difference higher than this causes a new search, skipping the target
+
+
+ 10000
+
+
+ 100
+
+
+ 1000
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ how many connections to search (ordered in closeness)
+
+
+ 10000
+
+
+ 100
+
+
+ 1000
+
+
+
+
+
-
@@ -533,19 +671,6 @@
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
@@ -678,6 +803,19 @@
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
-
@@ -1423,14 +1561,46 @@
- pushButtonLoadTarget
- released()
+ radioButton_dodgyTarget
+ toggled(bool)
MainWindow
- load_target()
+ window_target_dodgy(bool)
- 277
- 103
+ 449
+ 261
+
+
+ 361
+ 301
+
+
+
+
+ radioButton_blackmanTarget
+ toggled(bool)
+ MainWindow
+ window_target_blackman(bool)
+
+
+ 449
+ 319
+
+
+ 361
+ 301
+
+
+
+
+ spinBoxFFT1End
+ valueChanged(int)
+ MainWindow
+ fft1_end_slot(int)
+
+
+ 154
+ 310
399
@@ -1438,6 +1608,86 @@
+
+ doubleSpinBoxRatio
+ valueChanged(double)
+ MainWindow
+ ratio_slot(double)
+
+
+ 109
+ 223
+
+
+ 399
+ 301
+
+
+
+
+ radioButton_hannTarget
+ toggled(bool)
+ MainWindow
+ window_target_hann(bool)
+
+
+ 619
+ 319
+
+
+ 361
+ 301
+
+
+
+
+ radioButton_gaussianTarget
+ toggled(bool)
+ MainWindow
+ window_target_gaussian(bool)
+
+
+ 619
+ 261
+
+
+ 361
+ 301
+
+
+
+
+ sliderSynapses
+ valueChanged(int)
+ spinBoxSynapses
+ setValue(int)
+
+
+ 237
+ 289
+
+
+ 341
+ 289
+
+
+
+
+ doubleSpinBoxTargetMix
+ valueChanged(double)
+ MainWindow
+ target_mix_slot(double)
+
+
+ 330
+ 446
+
+
+ 361
+ 306
+
+
+
pushButtonGenerateTarget
released()
@@ -1471,14 +1721,14 @@
- doubleSpinBoxRatio
- valueChanged(double)
+ pushButtonLoadTarget
+ released()
MainWindow
- ratio_slot(double)
+ load_target()
- 109
- 223
+ 277
+ 103
399
@@ -1502,22 +1752,6 @@
-
- spinBoxFFT1End
- valueChanged(int)
- MainWindow
- fft1_end_slot(int)
-
-
- 154
- 310
-
-
- 399
- 301
-
-
-
radioButton_hammingTarget
toggled(bool)
@@ -1534,6 +1768,38 @@
+
+ radioButton_flattopTarget
+ toggled(bool)
+ MainWindow
+ window_target_flattop(bool)
+
+
+ 449
+ 348
+
+
+ 361
+ 301
+
+
+
+
+ radioButton_bartlettTarget
+ toggled(bool)
+ MainWindow
+ window_target_bartlett(bool)
+
+
+ 449
+ 290
+
+
+ 361
+ 301
+
+
+
doubleSpinBoxBlockOverlapTarget
valueChanged(double)
@@ -1567,98 +1833,34 @@
- radioButton_flattopTarget
- toggled(bool)
- MainWindow
- window_target_flattop(bool)
+ spinBoxSynapses
+ valueChanged(int)
+ sliderSynapses
+ setValue(int)
- 449
- 348
+ 341
+ 289
- 361
- 301
+ 237
+ 289
- radioButton_blackmanTarget
- toggled(bool)
+ spinBoxSynapses
+ valueChanged(int)
MainWindow
- window_target_blackman(bool)
+ synapses(int)
- 449
- 319
+ 341
+ 289
- 361
- 301
-
-
-
-
- radioButton_bartlettTarget
- toggled(bool)
- MainWindow
- window_target_bartlett(bool)
-
-
- 449
- 290
-
-
- 361
- 301
-
-
-
-
- radioButton_dodgyTarget
- toggled(bool)
- MainWindow
- window_target_dodgy(bool)
-
-
- 449
- 261
-
-
- 361
- 301
-
-
-
-
- radioButton_hannTarget
- toggled(bool)
- MainWindow
- window_target_hann(bool)
-
-
- 619
- 319
-
-
- 361
- 301
-
-
-
-
- radioButton_gaussianTarget
- toggled(bool)
- MainWindow
- window_target_gaussian(bool)
-
-
- 619
- 261
-
-
- 361
- 301
+ 566
+ 345
@@ -1711,18 +1913,18 @@
- sliderNMix
- valueChanged(int)
+ radioButton_dodgy
+ toggled(bool)
MainWindow
- n_mix_slot(int)
+ window_dodgy(bool)
- 159
- 386
+ 615
+ 203
- 361
- 306
+ 566
+ 345
@@ -1742,6 +1944,22 @@
+
+ sliderNMix
+ valueChanged(int)
+ MainWindow
+ n_mix_slot(int)
+
+
+ 159
+ 386
+
+
+ 361
+ 306
+
+
+
doubleSpinBoxNMix
valueChanged(double)
@@ -1759,18 +1977,34 @@
- doubleSpinBoxTargetMix
- valueChanged(double)
+ pushButtonLoadBrain
+ released()
MainWindow
- target_mix_slot(double)
+ load_brain()
- 330
- 446
+ 615
+ 357
- 361
- 306
+ 566
+ 345
+
+
+
+
+ radioButtonSynaptic
+ toggled(bool)
+ MainWindow
+ algo_synaptic(bool)
+
+
+ 215
+ 348
+
+
+ 566
+ 345
@@ -1790,22 +2024,6 @@
-
- sliderBoredom
- valueChanged(int)
- MainWindow
- boredom_slot(int)
-
-
- 291
- 253
-
-
- 321
- 309
-
-
-
doubleSpinBoxNovelty
valueChanged(double)
@@ -1839,18 +2057,50 @@
- sliderSynapses
+ sliderBoredom
valueChanged(int)
- spinBoxSynapses
- setValue(int)
+ MainWindow
+ boredom_slot(int)
- 237
- 289
+ 291
+ 253
- 341
- 289
+ 321
+ 309
+
+
+
+
+ radioButton_bartlett
+ toggled(bool)
+ MainWindow
+ window_bartlett(bool)
+
+
+ 615
+ 232
+
+
+ 566
+ 345
+
+
+
+
+ radioButton_blackman
+ toggled(bool)
+ MainWindow
+ window_blackman(bool)
+
+
+ 615
+ 261
+
+
+ 566
+ 345
@@ -1870,86 +2120,6 @@
-
- spinBoxSynapses
- valueChanged(int)
- sliderSynapses
- setValue(int)
-
-
- 341
- 289
-
-
- 237
- 289
-
-
-
-
- spinBoxSynapses
- valueChanged(int)
- MainWindow
- synapses(int)
-
-
- 341
- 289
-
-
- 566
- 345
-
-
-
-
- radioButtonAlgoBasic
- toggled(bool)
- MainWindow
- algo_basic(bool)
-
-
- 51
- 348
-
-
- 566
- 345
-
-
-
-
- radioButtonAlgoRevBasic
- toggled(bool)
- MainWindow
- algo_rev_basic(bool)
-
-
- 129
- 348
-
-
- 566
- 345
-
-
-
-
- radioButtonSynaptic
- toggled(bool)
- MainWindow
- algo_synaptic(bool)
-
-
- 215
- 348
-
-
- 566
- 345
-
-
-
radioButtonSynapticSlide
toggled(bool)
@@ -1966,38 +2136,6 @@
-
- pushButtonLoadBrain
- released()
- MainWindow
- load_brain()
-
-
- 615
- 357
-
-
- 566
- 345
-
-
-
-
- pushButtonSaveBrain
- released()
- MainWindow
- save_brain()
-
-
- 728
- 357
-
-
- 566
- 345
-
-
-
spinBoxBlockSize
valueChanged(int)
@@ -2031,13 +2169,13 @@
- radioButton_dodgy
+ radioButton_gaussian
toggled(bool)
MainWindow
- window_dodgy(bool)
+ window_gaussian(bool)
- 615
+ 728
203
@@ -2046,38 +2184,6 @@
-
- radioButton_bartlett
- toggled(bool)
- MainWindow
- window_bartlett(bool)
-
-
- 615
- 232
-
-
- 566
- 345
-
-
-
-
- radioButton_blackman
- toggled(bool)
- MainWindow
- window_blackman(bool)
-
-
- 615
- 261
-
-
- 566
- 345
-
-
-
radioButton_flattop
toggled(bool)
@@ -2095,14 +2201,46 @@
- radioButton_gaussian
+ radioButtonAlgoBasic
toggled(bool)
MainWindow
- window_gaussian(bool)
+ algo_basic(bool)
+
+
+ 51
+ 348
+
+
+ 566
+ 345
+
+
+
+
+ radioButtonAlgoRevBasic
+ toggled(bool)
+ MainWindow
+ algo_rev_basic(bool)
+
+
+ 129
+ 348
+
+
+ 566
+ 345
+
+
+
+
+ radioButton_rectagle
+ toggled(bool)
+ MainWindow
+ window_target_rectangle(bool)
728
- 203
+ 290
566
@@ -2127,14 +2265,14 @@
- radioButton_hann
- toggled(bool)
+ pushButtonSaveBrain
+ released()
MainWindow
- window_hann(bool)
+ save_brain()
728
- 261
+ 357
566
@@ -2143,14 +2281,30 @@
- radioButton_rectagle
- toggled(bool)
+ pushButtonDeleteSound
+ released()
MainWindow
- window_target_rectangle(bool)
+ delete_sound()
- 728
- 290
+ 951
+ 550
+
+
+ 566
+ 345
+
+
+
+
+ pushButtonClearBrain
+ released()
+ MainWindow
+ clear_brain()
+
+
+ 1061
+ 550
566
@@ -2191,14 +2345,14 @@
- pushButtonDeleteSound
- released()
+ radioButton_hann
+ toggled(bool)
MainWindow
- delete_sound()
+ window_hann(bool)
- 951
- 550
+ 728
+ 261
566
@@ -2207,14 +2361,94 @@
- pushButtonClearBrain
- released()
- MainWindow
- clear_brain()
+ sliderSearchStretch
+ valueChanged(int)
+ spinBoxSearchStretch
+ setValue(int)
- 1061
- 550
+ 241
+ 282
+
+
+ 343
+ 282
+
+
+
+
+ spinBoxSearchStretch
+ valueChanged(int)
+ sliderSearchStretch
+ setValue(int)
+
+
+ 343
+ 282
+
+
+ 241
+ 282
+
+
+
+
+ sliderSearchStretch
+ valueChanged(int)
+ MainWindow
+ search_stretch(int)
+
+
+ 241
+ 282
+
+
+ 566
+ 345
+
+
+
+
+ sliderSlideError
+ valueChanged(int)
+ spinBoxSlideError
+ setValue(int)
+
+
+ 231
+ 410
+
+
+ 337
+ 410
+
+
+
+
+ spinBoxSlideError
+ valueChanged(int)
+ sliderSlideError
+ setValue(int)
+
+
+ 337
+ 410
+
+
+ 231
+ 410
+
+
+
+
+ sliderSlideError
+ valueChanged(int)
+ MainWindow
+ slide_error(int)
+
+
+ 231
+ 410
566
@@ -2283,10 +2517,12 @@
algo_synaptic_slide(bool)
load_brain()
save_brain()
+ slide_error(int)
+ search_stretch(int)
-
+
diff --git a/samplebrain/qt/MainWindow.h b/samplebrain/qt/MainWindow.h
index 9129177..ae9b3c9 100644
--- a/samplebrain/qt/MainWindow.h
+++ b/samplebrain/qt/MainWindow.h
@@ -103,6 +103,12 @@ private slots:
lo_send(m_audio_address,"/target_mix","f",s);
m_Ui.sliderTargetMix->setValue(s*100);
}
+ void search_stretch(int s) {
+ lo_send(m_audio_address,"/search-stretch","i",s);
+ }
+ void slide_error(int s) {
+ lo_send(m_audio_address,"/slide-error","i",s);
+ }
void volume_slot(int s) { lo_send(m_audio_address,"/volume","f",s/100.0f); }
diff --git a/samplebrain/qt/audio_thread.cpp b/samplebrain/qt/audio_thread.cpp
index 37a3994..c85e607 100644
--- a/samplebrain/qt/audio_thread.cpp
+++ b/samplebrain/qt/audio_thread.cpp
@@ -118,6 +118,12 @@ void audio_thread::process(sample &s, sample &s2) {
if (name=="/synapses") {
m_renderer->get_params()->m_num_synapses=cmd.get_int(0);
}
+ if (name=="/search-stretch") {
+ m_renderer->set_stretch(cmd.get_int(0));
+ }
+ if (name=="/slide-error") {
+ m_renderer->set_slide_error(cmd.get_int(0));
+ }
}
s.zero();
diff --git a/samplebrain/qt/generated/ui_samplebrain.h b/samplebrain/qt/generated/ui_samplebrain.h
index fe30b05..3f63a52 100644
--- a/samplebrain/qt/generated/ui_samplebrain.h
+++ b/samplebrain/qt/generated/ui_samplebrain.h
@@ -1,14 +1,14 @@
/********************************************************************************
-** Form generated from reading UI file 'samplebrainuQB562.ui'
+** Form generated from reading UI file 'samplebrainj32146.ui'
**
-** Created: Tue Aug 4 16:33:54 2015
+** Created: Thu Aug 6 13:25:50 2015
** by: Qt User Interface Compiler version 4.8.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
-#ifndef SAMPLEBRAINUQB562_H
-#define SAMPLEBRAINUQB562_H
+#ifndef SAMPLEBRAINJ32146_H
+#define SAMPLEBRAINJ32146_H
#include
#include
@@ -42,7 +42,7 @@ public:
QVBoxLayout *verticalLayout_4;
QTabWidget *tabWidget;
QWidget *controlTab;
- QHBoxLayout *horizontalLayout_19;
+ QHBoxLayout *horizontalLayout_5;
QVBoxLayout *verticalLayout_3;
QLabel *label_19;
QHBoxLayout *horizontalLayout_16;
@@ -67,18 +67,25 @@ public:
QLabel *label_25;
QSlider *sliderBoredom;
QDoubleSpinBox *doubleSpinBoxBoredom;
- QHBoxLayout *horizontalLayout_17;
- QLabel *label_26;
- QSlider *sliderSynapses;
- QSpinBox *spinBoxSynapses;
+ QHBoxLayout *horizontalLayout_19;
+ QLabel *label_28;
+ QSlider *sliderSearchStretch;
+ QSpinBox *spinBoxSearchStretch;
QLabel *label_27;
QHBoxLayout *horizontalLayout_18;
QRadioButton *radioButtonAlgoBasic;
QRadioButton *radioButtonAlgoRevBasic;
QRadioButton *radioButtonSynaptic;
QRadioButton *radioButtonSynapticSlide;
+ QHBoxLayout *horizontalLayout_17;
+ QLabel *label_26;
+ QSlider *sliderSynapses;
+ QSpinBox *spinBoxSynapses;
+ QHBoxLayout *horizontalLayout_20;
+ QLabel *label_29;
+ QSlider *sliderSlideError;
+ QSpinBox *spinBoxSlideError;
QSpacerItem *horizontalSpacer_2;
- QSpacerItem *verticalSpacer_3;
QLabel *label_23;
QHBoxLayout *horizontalLayout_8;
QLabel *label_21;
@@ -88,6 +95,7 @@ public:
QLabel *label_22;
QSlider *sliderTargetMix;
QDoubleSpinBox *doubleSpinBoxTargetMix;
+ QSpacerItem *verticalSpacer_3;
QVBoxLayout *verticalLayout_6;
QLabel *label_16;
QPushButton *pushButtonLoadTarget;
@@ -151,15 +159,15 @@ public:
QSpacerItem *horizontalSpacer;
QLabel *label_13;
QStatusBar *statusbar;
- QButtonGroup *buttonGroup;
QButtonGroup *buttonGroup_2;
QButtonGroup *buttonGroup_3;
+ QButtonGroup *buttonGroup;
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
- MainWindow->resize(1134, 691);
+ MainWindow->resize(1134, 707);
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
verticalLayout_4 = new QVBoxLayout(centralwidget);
@@ -173,8 +181,8 @@ public:
tabWidget->setFont(font);
controlTab = new QWidget();
controlTab->setObjectName(QString::fromUtf8("controlTab"));
- horizontalLayout_19 = new QHBoxLayout(controlTab);
- horizontalLayout_19->setObjectName(QString::fromUtf8("horizontalLayout_19"));
+ horizontalLayout_5 = new QHBoxLayout(controlTab);
+ horizontalLayout_5->setObjectName(QString::fromUtf8("horizontalLayout_5"));
verticalLayout_3 = new QVBoxLayout();
verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3"));
label_19 = new QLabel(controlTab);
@@ -364,35 +372,37 @@ public:
verticalLayout_3->addLayout(horizontalLayout_11);
- horizontalLayout_17 = new QHBoxLayout();
- horizontalLayout_17->setObjectName(QString::fromUtf8("horizontalLayout_17"));
- label_26 = new QLabel(controlTab);
- label_26->setObjectName(QString::fromUtf8("label_26"));
- label_26->setFont(font2);
+ horizontalLayout_19 = new QHBoxLayout();
+ horizontalLayout_19->setObjectName(QString::fromUtf8("horizontalLayout_19"));
+ label_28 = new QLabel(controlTab);
+ label_28->setObjectName(QString::fromUtf8("label_28"));
+ label_28->setFont(font2);
- horizontalLayout_17->addWidget(label_26);
+ horizontalLayout_19->addWidget(label_28);
- sliderSynapses = new QSlider(controlTab);
- sliderSynapses->setObjectName(QString::fromUtf8("sliderSynapses"));
- sizePolicy.setHeightForWidth(sliderSynapses->sizePolicy().hasHeightForWidth());
- sliderSynapses->setSizePolicy(sizePolicy);
- sliderSynapses->setMaximum(1000);
- sliderSynapses->setValue(20);
- sliderSynapses->setOrientation(Qt::Horizontal);
+ sliderSearchStretch = new QSlider(controlTab);
+ sliderSearchStretch->setObjectName(QString::fromUtf8("sliderSearchStretch"));
+ sizePolicy.setHeightForWidth(sliderSearchStretch->sizePolicy().hasHeightForWidth());
+ sliderSearchStretch->setSizePolicy(sizePolicy);
+ sliderSearchStretch->setMinimum(1);
+ sliderSearchStretch->setMaximum(10);
+ sliderSearchStretch->setValue(1);
+ sliderSearchStretch->setOrientation(Qt::Horizontal);
- horizontalLayout_17->addWidget(sliderSynapses);
+ horizontalLayout_19->addWidget(sliderSearchStretch);
- spinBoxSynapses = new QSpinBox(controlTab);
- spinBoxSynapses->setObjectName(QString::fromUtf8("spinBoxSynapses"));
- sizePolicy1.setHeightForWidth(spinBoxSynapses->sizePolicy().hasHeightForWidth());
- spinBoxSynapses->setSizePolicy(sizePolicy1);
- spinBoxSynapses->setMaximum(1000);
- spinBoxSynapses->setValue(20);
+ spinBoxSearchStretch = new QSpinBox(controlTab);
+ spinBoxSearchStretch->setObjectName(QString::fromUtf8("spinBoxSearchStretch"));
+ sizePolicy1.setHeightForWidth(spinBoxSearchStretch->sizePolicy().hasHeightForWidth());
+ spinBoxSearchStretch->setSizePolicy(sizePolicy1);
+ spinBoxSearchStretch->setMinimum(1);
+ spinBoxSearchStretch->setMaximum(10);
+ spinBoxSearchStretch->setValue(1);
- horizontalLayout_17->addWidget(spinBoxSynapses);
+ horizontalLayout_19->addWidget(spinBoxSearchStretch);
- verticalLayout_3->addLayout(horizontalLayout_17);
+ verticalLayout_3->addLayout(horizontalLayout_19);
label_27 = new QLabel(controlTab);
label_27->setObjectName(QString::fromUtf8("label_27"));
@@ -432,7 +442,7 @@ public:
radioButtonSynapticSlide = new QRadioButton(controlTab);
buttonGroup_3->addButton(radioButtonSynapticSlide);
radioButtonSynapticSlide->setObjectName(QString::fromUtf8("radioButtonSynapticSlide"));
- radioButtonSynapticSlide->setEnabled(false);
+ radioButtonSynapticSlide->setEnabled(true);
radioButtonSynapticSlide->setCheckable(true);
horizontalLayout_18->addWidget(radioButtonSynapticSlide);
@@ -440,14 +450,72 @@ public:
verticalLayout_3->addLayout(horizontalLayout_18);
+ horizontalLayout_17 = new QHBoxLayout();
+ horizontalLayout_17->setObjectName(QString::fromUtf8("horizontalLayout_17"));
+ label_26 = new QLabel(controlTab);
+ label_26->setObjectName(QString::fromUtf8("label_26"));
+ label_26->setFont(font2);
+
+ horizontalLayout_17->addWidget(label_26);
+
+ sliderSynapses = new QSlider(controlTab);
+ sliderSynapses->setObjectName(QString::fromUtf8("sliderSynapses"));
+ sizePolicy.setHeightForWidth(sliderSynapses->sizePolicy().hasHeightForWidth());
+ sliderSynapses->setSizePolicy(sizePolicy);
+ sliderSynapses->setMaximum(1000);
+ sliderSynapses->setValue(20);
+ sliderSynapses->setOrientation(Qt::Horizontal);
+
+ horizontalLayout_17->addWidget(sliderSynapses);
+
+ spinBoxSynapses = new QSpinBox(controlTab);
+ spinBoxSynapses->setObjectName(QString::fromUtf8("spinBoxSynapses"));
+ sizePolicy1.setHeightForWidth(spinBoxSynapses->sizePolicy().hasHeightForWidth());
+ spinBoxSynapses->setSizePolicy(sizePolicy1);
+ spinBoxSynapses->setMaximum(1000);
+ spinBoxSynapses->setValue(20);
+
+ horizontalLayout_17->addWidget(spinBoxSynapses);
+
+
+ verticalLayout_3->addLayout(horizontalLayout_17);
+
+ horizontalLayout_20 = new QHBoxLayout();
+ horizontalLayout_20->setObjectName(QString::fromUtf8("horizontalLayout_20"));
+ label_29 = new QLabel(controlTab);
+ label_29->setObjectName(QString::fromUtf8("label_29"));
+ label_29->setFont(font2);
+
+ horizontalLayout_20->addWidget(label_29);
+
+ sliderSlideError = new QSlider(controlTab);
+ sliderSlideError->setObjectName(QString::fromUtf8("sliderSlideError"));
+ sizePolicy.setHeightForWidth(sliderSlideError->sizePolicy().hasHeightForWidth());
+ sliderSlideError->setSizePolicy(sizePolicy);
+ sliderSlideError->setMaximum(10000);
+ sliderSlideError->setSingleStep(100);
+ sliderSlideError->setValue(1000);
+ sliderSlideError->setOrientation(Qt::Horizontal);
+
+ horizontalLayout_20->addWidget(sliderSlideError);
+
+ spinBoxSlideError = new QSpinBox(controlTab);
+ spinBoxSlideError->setObjectName(QString::fromUtf8("spinBoxSlideError"));
+ sizePolicy1.setHeightForWidth(spinBoxSlideError->sizePolicy().hasHeightForWidth());
+ spinBoxSlideError->setSizePolicy(sizePolicy1);
+ spinBoxSlideError->setMaximum(10000);
+ spinBoxSlideError->setSingleStep(100);
+ spinBoxSlideError->setValue(1000);
+
+ horizontalLayout_20->addWidget(spinBoxSlideError);
+
+
+ verticalLayout_3->addLayout(horizontalLayout_20);
+
horizontalSpacer_2 = new QSpacerItem(21, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
verticalLayout_3->addItem(horizontalSpacer_2);
- verticalSpacer_3 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
-
- verticalLayout_3->addItem(verticalSpacer_3);
-
label_23 = new QLabel(controlTab);
label_23->setObjectName(QString::fromUtf8("label_23"));
label_23->setFont(font1);
@@ -515,8 +583,12 @@ public:
verticalLayout_3->addLayout(horizontalLayout_9);
+ verticalSpacer_3 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
- horizontalLayout_19->addLayout(verticalLayout_3);
+ verticalLayout_3->addItem(verticalSpacer_3);
+
+
+ horizontalLayout_5->addLayout(verticalLayout_3);
verticalLayout_6 = new QVBoxLayout();
verticalLayout_6->setObjectName(QString::fromUtf8("verticalLayout_6"));
@@ -641,7 +713,7 @@ public:
verticalLayout_6->addItem(verticalSpacer);
- horizontalLayout_19->addLayout(verticalLayout_6);
+ horizontalLayout_5->addLayout(verticalLayout_6);
verticalLayout_2 = new QVBoxLayout();
verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
@@ -777,7 +849,7 @@ public:
verticalLayout_2->addItem(verticalSpacer_2);
- horizontalLayout_19->addLayout(verticalLayout_2);
+ horizontalLayout_5->addLayout(verticalLayout_2);
verticalLayout = new QVBoxLayout();
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
@@ -816,7 +888,7 @@ public:
verticalLayout->addLayout(horizontalLayout_2);
- horizontalLayout_19->addLayout(verticalLayout);
+ horizontalLayout_5->addLayout(verticalLayout);
tabWidget->addTab(controlTab, QString());
logTab = new QWidget();
@@ -906,56 +978,62 @@ public:
QObject::connect(dialVolume, SIGNAL(sliderMoved(int)), MainWindow, SLOT(volume_slot(int)));
QObject::connect(pushButtonStopRecord, SIGNAL(released()), MainWindow, SLOT(stop_record()));
QObject::connect(pushButtonRecord, SIGNAL(released()), MainWindow, SLOT(record()));
- QObject::connect(pushButtonLoadTarget, SIGNAL(released()), MainWindow, SLOT(load_target()));
- QObject::connect(pushButtonGenerateTarget, SIGNAL(released()), MainWindow, SLOT(generate_target_blocks()));
- QObject::connect(spinBoxBlockSizeTarget, SIGNAL(valueChanged(int)), MainWindow, SLOT(target_block_size(int)));
- QObject::connect(doubleSpinBoxRatio, SIGNAL(valueChanged(double)), MainWindow, SLOT(ratio_slot(double)));
- QObject::connect(spinBoxFFT1Start, SIGNAL(valueChanged(int)), MainWindow, SLOT(fft1_start_slot(int)));
- QObject::connect(spinBoxFFT1End, SIGNAL(valueChanged(int)), MainWindow, SLOT(fft1_end_slot(int)));
- QObject::connect(radioButton_hammingTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_hamming(bool)));
- QObject::connect(doubleSpinBoxBlockOverlapTarget, SIGNAL(valueChanged(double)), MainWindow, SLOT(target_block_overlap(double)));
- QObject::connect(radioButton_rectangleTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_rectangle(bool)));
- QObject::connect(radioButton_flattopTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_flattop(bool)));
- QObject::connect(radioButton_blackmanTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_blackman(bool)));
- QObject::connect(radioButton_bartlettTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_bartlett(bool)));
QObject::connect(radioButton_dodgyTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_dodgy(bool)));
+ QObject::connect(radioButton_blackmanTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_blackman(bool)));
+ QObject::connect(spinBoxFFT1End, SIGNAL(valueChanged(int)), MainWindow, SLOT(fft1_end_slot(int)));
+ QObject::connect(doubleSpinBoxRatio, SIGNAL(valueChanged(double)), MainWindow, SLOT(ratio_slot(double)));
QObject::connect(radioButton_hannTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_hann(bool)));
QObject::connect(radioButton_gaussianTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_gaussian(bool)));
+ QObject::connect(sliderSynapses, SIGNAL(valueChanged(int)), spinBoxSynapses, SLOT(setValue(int)));
+ QObject::connect(doubleSpinBoxTargetMix, SIGNAL(valueChanged(double)), MainWindow, SLOT(target_mix_slot(double)));
+ QObject::connect(pushButtonGenerateTarget, SIGNAL(released()), MainWindow, SLOT(generate_target_blocks()));
+ QObject::connect(spinBoxBlockSizeTarget, SIGNAL(valueChanged(int)), MainWindow, SLOT(target_block_size(int)));
+ QObject::connect(pushButtonLoadTarget, SIGNAL(released()), MainWindow, SLOT(load_target()));
+ QObject::connect(spinBoxFFT1Start, SIGNAL(valueChanged(int)), MainWindow, SLOT(fft1_start_slot(int)));
+ QObject::connect(radioButton_hammingTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_hamming(bool)));
+ QObject::connect(radioButton_flattopTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_flattop(bool)));
+ QObject::connect(radioButton_bartlettTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_bartlett(bool)));
+ QObject::connect(doubleSpinBoxBlockOverlapTarget, SIGNAL(valueChanged(double)), MainWindow, SLOT(target_block_overlap(double)));
+ QObject::connect(radioButton_rectangleTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_rectangle(bool)));
+ QObject::connect(spinBoxSynapses, SIGNAL(valueChanged(int)), sliderSynapses, SLOT(setValue(int)));
+ QObject::connect(spinBoxSynapses, SIGNAL(valueChanged(int)), MainWindow, SLOT(synapses(int)));
QObject::connect(sliderRatio, SIGNAL(valueChanged(int)), MainWindow, SLOT(ratio_slot(int)));
QObject::connect(sliderNRatio, SIGNAL(valueChanged(int)), MainWindow, SLOT(n_ratio_slot(int)));
QObject::connect(doubleSpinBoxNRatio, SIGNAL(valueChanged(double)), MainWindow, SLOT(n_ratio_slot(double)));
- QObject::connect(sliderNMix, SIGNAL(valueChanged(int)), MainWindow, SLOT(n_mix_slot(int)));
+ QObject::connect(radioButton_dodgy, SIGNAL(toggled(bool)), MainWindow, SLOT(window_dodgy(bool)));
QObject::connect(sliderTargetMix, SIGNAL(valueChanged(int)), MainWindow, SLOT(target_mix_slot(int)));
+ QObject::connect(sliderNMix, SIGNAL(valueChanged(int)), MainWindow, SLOT(n_mix_slot(int)));
QObject::connect(doubleSpinBoxNMix, SIGNAL(valueChanged(double)), MainWindow, SLOT(n_mix_slot(double)));
- QObject::connect(doubleSpinBoxTargetMix, SIGNAL(valueChanged(double)), MainWindow, SLOT(target_mix_slot(double)));
+ QObject::connect(pushButtonLoadBrain, SIGNAL(released()), MainWindow, SLOT(load_brain()));
+ QObject::connect(radioButtonSynaptic, SIGNAL(toggled(bool)), MainWindow, SLOT(algo_synaptic(bool)));
QObject::connect(doubleSpinBoxBoredom, SIGNAL(valueChanged(double)), MainWindow, SLOT(boredom_slot(double)));
- QObject::connect(sliderBoredom, SIGNAL(valueChanged(int)), MainWindow, SLOT(boredom_slot(int)));
QObject::connect(doubleSpinBoxNovelty, SIGNAL(valueChanged(double)), MainWindow, SLOT(novelty_slot(double)));
QObject::connect(sliderNovelty, SIGNAL(valueChanged(int)), MainWindow, SLOT(novelty_slot(int)));
- QObject::connect(sliderSynapses, SIGNAL(valueChanged(int)), spinBoxSynapses, SLOT(setValue(int)));
- QObject::connect(sliderSynapses, SIGNAL(valueChanged(int)), MainWindow, SLOT(synapses(int)));
- QObject::connect(spinBoxSynapses, SIGNAL(valueChanged(int)), sliderSynapses, SLOT(setValue(int)));
- QObject::connect(spinBoxSynapses, SIGNAL(valueChanged(int)), MainWindow, SLOT(synapses(int)));
- QObject::connect(radioButtonAlgoBasic, SIGNAL(toggled(bool)), MainWindow, SLOT(algo_basic(bool)));
- QObject::connect(radioButtonAlgoRevBasic, SIGNAL(toggled(bool)), MainWindow, SLOT(algo_rev_basic(bool)));
- QObject::connect(radioButtonSynaptic, SIGNAL(toggled(bool)), MainWindow, SLOT(algo_synaptic(bool)));
- QObject::connect(radioButtonSynapticSlide, SIGNAL(toggled(bool)), MainWindow, SLOT(algo_synaptic_slide(bool)));
- QObject::connect(pushButtonLoadBrain, SIGNAL(released()), MainWindow, SLOT(load_brain()));
- QObject::connect(pushButtonSaveBrain, SIGNAL(released()), MainWindow, SLOT(save_brain()));
- QObject::connect(spinBoxBlockSize, SIGNAL(valueChanged(int)), MainWindow, SLOT(block_size(int)));
- QObject::connect(doubleSpinBoxBlockOverlap, SIGNAL(valueChanged(double)), MainWindow, SLOT(block_overlap(double)));
- QObject::connect(radioButton_dodgy, SIGNAL(toggled(bool)), MainWindow, SLOT(window_dodgy(bool)));
+ QObject::connect(sliderBoredom, SIGNAL(valueChanged(int)), MainWindow, SLOT(boredom_slot(int)));
QObject::connect(radioButton_bartlett, SIGNAL(toggled(bool)), MainWindow, SLOT(window_bartlett(bool)));
QObject::connect(radioButton_blackman, SIGNAL(toggled(bool)), MainWindow, SLOT(window_blackman(bool)));
- QObject::connect(radioButton_flattop, SIGNAL(toggled(bool)), MainWindow, SLOT(window_flattop(bool)));
+ QObject::connect(sliderSynapses, SIGNAL(valueChanged(int)), MainWindow, SLOT(synapses(int)));
+ QObject::connect(radioButtonSynapticSlide, SIGNAL(toggled(bool)), MainWindow, SLOT(algo_synaptic_slide(bool)));
+ QObject::connect(spinBoxBlockSize, SIGNAL(valueChanged(int)), MainWindow, SLOT(block_size(int)));
+ QObject::connect(doubleSpinBoxBlockOverlap, SIGNAL(valueChanged(double)), MainWindow, SLOT(block_overlap(double)));
QObject::connect(radioButton_gaussian, SIGNAL(toggled(bool)), MainWindow, SLOT(window_gaussian(bool)));
- QObject::connect(radioButton_hamming, SIGNAL(toggled(bool)), MainWindow, SLOT(window_hamming(bool)));
- QObject::connect(radioButton_hann, SIGNAL(toggled(bool)), MainWindow, SLOT(window_hann(bool)));
+ QObject::connect(radioButton_flattop, SIGNAL(toggled(bool)), MainWindow, SLOT(window_flattop(bool)));
+ QObject::connect(radioButtonAlgoBasic, SIGNAL(toggled(bool)), MainWindow, SLOT(algo_basic(bool)));
+ QObject::connect(radioButtonAlgoRevBasic, SIGNAL(toggled(bool)), MainWindow, SLOT(algo_rev_basic(bool)));
QObject::connect(radioButton_rectagle, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_rectangle(bool)));
- QObject::connect(pushButtonGenerate, SIGNAL(released()), MainWindow, SLOT(generate()));
- QObject::connect(pushButtonLoadSound, SIGNAL(released()), MainWindow, SLOT(load_sound()));
+ QObject::connect(radioButton_hamming, SIGNAL(toggled(bool)), MainWindow, SLOT(window_hamming(bool)));
+ QObject::connect(pushButtonSaveBrain, SIGNAL(released()), MainWindow, SLOT(save_brain()));
QObject::connect(pushButtonDeleteSound, SIGNAL(released()), MainWindow, SLOT(delete_sound()));
QObject::connect(pushButtonClearBrain, SIGNAL(released()), MainWindow, SLOT(clear_brain()));
+ QObject::connect(pushButtonGenerate, SIGNAL(released()), MainWindow, SLOT(generate()));
+ QObject::connect(pushButtonLoadSound, SIGNAL(released()), MainWindow, SLOT(load_sound()));
+ QObject::connect(radioButton_hann, SIGNAL(toggled(bool)), MainWindow, SLOT(window_hann(bool)));
+ QObject::connect(sliderSearchStretch, SIGNAL(valueChanged(int)), spinBoxSearchStretch, SLOT(setValue(int)));
+ QObject::connect(spinBoxSearchStretch, SIGNAL(valueChanged(int)), sliderSearchStretch, SLOT(setValue(int)));
+ QObject::connect(sliderSearchStretch, SIGNAL(valueChanged(int)), MainWindow, SLOT(search_stretch(int)));
+ QObject::connect(sliderSlideError, SIGNAL(valueChanged(int)), spinBoxSlideError, SLOT(setValue(int)));
+ QObject::connect(spinBoxSlideError, SIGNAL(valueChanged(int)), sliderSlideError, SLOT(setValue(int)));
+ QObject::connect(sliderSlideError, SIGNAL(valueChanged(int)), MainWindow, SLOT(slide_error(int)));
tabWidget->setCurrentIndex(0);
@@ -965,7 +1043,7 @@ public:
void retranslateUi(QMainWindow *MainWindow)
{
- MainWindow->setWindowTitle(QApplication::translate("MainWindow", "samplebrain 0.6", 0, QApplication::UnicodeUTF8));
+ MainWindow->setWindowTitle(QApplication::translate("MainWindow", "samplebrain 0.7", 0, QApplication::UnicodeUTF8));
label_19->setText(QApplication::translate("MainWindow", "brain tweaks", 0, QApplication::UnicodeUTF8));
label_6->setText(QApplication::translate("MainWindow", "fft / mfcc", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
@@ -999,17 +1077,17 @@ public:
#endif // QT_NO_TOOLTIP
label_25->setText(QApplication::translate("MainWindow", "boredom", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
- sliderBoredom->setToolTip(QApplication::translate("MainWindow", "how long it takes for the novelty to ware off", 0, QApplication::UnicodeUTF8));
+ sliderBoredom->setToolTip(QApplication::translate("MainWindow", "how long it takes for the novelty to wear off", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
#ifndef QT_NO_TOOLTIP
- label_26->setToolTip(QString());
+ label_28->setToolTip(QString());
#endif // QT_NO_TOOLTIP
- label_26->setText(QApplication::translate("MainWindow", "synpases", 0, QApplication::UnicodeUTF8));
+ label_28->setText(QApplication::translate("MainWindow", "search stretch", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
- sliderSynapses->setToolTip(QApplication::translate("MainWindow", "how many connections to search (ordered in closeness)", 0, QApplication::UnicodeUTF8));
+ sliderSearchStretch->setToolTip(QApplication::translate("MainWindow", "repeat search (set novelty to 0 for dodgy jungle timessssstretch)", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
#ifndef QT_NO_TOOLTIP
- spinBoxSynapses->setToolTip(QApplication::translate("MainWindow", "how many connections to search (ordered in closeness)", 0, QApplication::UnicodeUTF8));
+ spinBoxSearchStretch->setToolTip(QApplication::translate("MainWindow", "how many connections to search (ordered in closeness)", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
label_27->setText(QApplication::translate("MainWindow", "algorithm", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
@@ -1028,6 +1106,26 @@ public:
radioButtonSynapticSlide->setToolTip(QApplication::translate("MainWindow", "search based on synapses and sonify search process", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
radioButtonSynapticSlide->setText(QApplication::translate("MainWindow", "synaptic slide", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+ label_26->setToolTip(QString());
+#endif // QT_NO_TOOLTIP
+ label_26->setText(QApplication::translate("MainWindow", "num synpases", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+ sliderSynapses->setToolTip(QApplication::translate("MainWindow", "how many connections to search (ordered in closeness)", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+#ifndef QT_NO_TOOLTIP
+ spinBoxSynapses->setToolTip(QApplication::translate("MainWindow", "how many connections to search (ordered in closeness)", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+#ifndef QT_NO_TOOLTIP
+ label_29->setToolTip(QString());
+#endif // QT_NO_TOOLTIP
+ label_29->setText(QApplication::translate("MainWindow", "synaptic slide error", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+ sliderSlideError->setToolTip(QApplication::translate("MainWindow", "block difference higher than this causes a new search, skipping the target", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+#ifndef QT_NO_TOOLTIP
+ spinBoxSlideError->setToolTip(QApplication::translate("MainWindow", "how many connections to search (ordered in closeness)", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
label_23->setText(QApplication::translate("MainWindow", "mix", 0, QApplication::UnicodeUTF8));
label_21->setText(QApplication::translate("MainWindow", "dynamic / normalised ", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
@@ -1087,4 +1185,4 @@ namespace Ui {
QT_END_NAMESPACE
-#endif // SAMPLEBRAINUQB562_H
+#endif // SAMPLEBRAINJ32146_H
diff --git a/samplebrain/src/brain.cpp b/samplebrain/src/brain.cpp
index ccd836d..a67bcc9 100644
--- a/samplebrain/src/brain.cpp
+++ b/samplebrain/src/brain.cpp
@@ -26,7 +26,7 @@ using namespace std;
using namespace spiralcore;
static const u32 NUM_FIXED_SYNAPSES = 1000;
-static const double usage_factor = 1000000;
+static const double usage_factor = 1000;
brain::brain() :
m_current_block_index(0),
diff --git a/samplebrain/src/main.cpp b/samplebrain/src/main.cpp
index 10b9684..30d673f 100644
--- a/samplebrain/src/main.cpp
+++ b/samplebrain/src/main.cpp
@@ -123,13 +123,16 @@ int main(int argc, char *argv[])
source.set_usage_falloff(0.9);
rr.get_params()->m_num_synapses=40;
rr.set_slide_error(3400.5);
- rr.set_search_algo(renderer::SYNAPTIC_SLIDE);
+ rr.set_search_algo(renderer::SYNAPTIC);
rr.set_target_mix(0.2);
+ rr.set_stretch(10);
a->start_recording("debug");
a->m_client.set_callback(run_audio, &rr);
//target.resynth("shosta-dream-0.5.wav",source,0.5);
+
+
while (true) sleep(1);
}
diff --git a/samplebrain/src/renderer.cpp b/samplebrain/src/renderer.cpp
index b04f2dc..42cf1b4 100644
--- a/samplebrain/src/renderer.cpp
+++ b/samplebrain/src/renderer.cpp
@@ -34,6 +34,7 @@ void renderer::init(brain &source, brain &target) {
m_slide_error=1;
m_target_index=0;
m_target_counter=0;
+ m_stretch=1;
m_last_tgt_shift=0;
}
@@ -58,7 +59,7 @@ void renderer::process(u32 nframes, float *buf) {
clean_up();
m_render_time+=nframes;
- m_target_time+=nframes;
+ m_target_time+=nframes/(float)m_stretch;
}
bool renderer::find_render_blocks(u32 nframes) {
@@ -70,7 +71,8 @@ bool renderer::find_render_blocks(u32 nframes) {
// stuff has changed - recompute and abort
if (tgt_shift!=m_last_tgt_shift ||
- tgt_end>=m_target.get_num_blocks() || m_source.get_num_blocks()==0) {
+ tgt_end>=m_target.get_num_blocks() ||
+ m_source.get_num_blocks()==0) {
reset();
m_last_tgt_shift = tgt_shift;
// next time...
@@ -78,13 +80,19 @@ bool renderer::find_render_blocks(u32 nframes) {
}
-// cerr<<"-----------------"<