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<<"-----------------"<