diff --git a/samplebrain/interface/samplebrain.ui b/samplebrain/interface/samplebrain.ui
index 52ca655..23734f0 100644
--- a/samplebrain/interface/samplebrain.ui
+++ b/samplebrain/interface/samplebrain.ui
@@ -49,197 +49,184 @@
+ -
+
+
+
+ Comic Sans MS
+ 14
+ 75
+ true
+
+
+
+ fft <-> mfcc ratio
+
+
+
-
-
-
-
-
- Comic Sans MS
- 14
- 75
- true
-
+
+
+
+ 0
+ 0
+
-
- fft <-> mfcc ratio
+
+ 50
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 50
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- 1.000000000000000
-
-
- 0.010000000000000
-
-
- 0.500000000000000
-
-
-
- -
-
-
-
-
-
-
- Comic Sans MS
- 14
- 75
- true
-
-
-
- fft subsection 1
-
-
-
- -
-
-
-
-
-
-
- Comic Sans MS
- 75
- true
-
-
-
- Start
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
-
- Comic Sans MS
- 75
- true
-
-
-
- End
-
-
-
- -
-
-
- 99
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
- Comic Sans MS
- 14
- 75
- true
-
-
-
- fft subsection 2
-
-
-
- -
-
-
-
-
-
-
- Comic Sans MS
- 75
- true
-
-
-
- Start
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
-
- Comic Sans MS
- 75
- true
-
-
-
- End
-
-
-
- -
-
-
- 99
-
-
-
-
-
- -
-
- Qt::Vertical
+ Qt::Horizontal
-
-
- 20
- 40
-
+
+
+ -
+
+
+
+ 0
+ 0
+
-
+
+ 1.000000000000000
+
+
+ 0.010000000000000
+
+
+ 0.500000000000000
+
+
+ -
+
+
+
+ Comic Sans MS
+ 14
+ 75
+ true
+
+
+
+ freq & dynamics <-> freq ratio
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ 50
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 1.000000000000000
+
+
+ 0.010000000000000
+
+
+ 0.500000000000000
+
+
+
+
+
+ -
+
+
+
+ Comic Sans MS
+ 14
+ 75
+ true
+
+
+
+ fft subsection
+
+
+
+ -
+
+
-
+
+
+
+ Comic Sans MS
+ 75
+ true
+
+
+
+ Start
+
+
+
+ -
+
+
+ -
+
+
+
+ Comic Sans MS
+ 75
+ true
+
+
+
+ End
+
+
+
+ -
+
+
+ 99
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
-
@@ -259,20 +246,6 @@
- -
-
-
-
- Comic Sans MS
- 75
- true
-
-
-
- no sound yet...
-
-
-
-
@@ -908,6 +881,118 @@
+
+ dialVolume
+ sliderMoved(int)
+ MainWindow
+ volume_slot(int)
+
+
+ 189
+ 480
+
+
+ 361
+ 301
+
+
+
+
+ pushButtonStopRecord
+ released()
+ MainWindow
+ stop_record()
+
+
+ 328
+ 543
+
+
+ 361
+ 306
+
+
+
+
+ pushButtonRecord
+ released()
+ MainWindow
+ record()
+
+
+ 236
+ 543
+
+
+ 361
+ 306
+
+
+
+
+ spinBoxBlockSize
+ valueChanged(int)
+ MainWindow
+ block_size(int)
+
+
+ 188
+ 105
+
+
+ 399
+ 301
+
+
+
+
+ pushButtonLoadTarget
+ released()
+ MainWindow
+ load_target()
+
+
+ 277
+ 103
+
+
+ 399
+ 301
+
+
+
+
+ pushButtonGenerateTarget
+ released()
+ MainWindow
+ generate_target_blocks()
+
+
+ 277
+ 202
+
+
+ 399
+ 301
+
+
+
+
+ spinBoxBlockSizeTarget
+ valueChanged(int)
+ MainWindow
+ target_block_size(int)
+
+
+ 313
+ 136
+
+
+ 399
+ 301
+
+
+
doubleSpinBoxRatio
valueChanged(double)
@@ -956,102 +1041,6 @@
-
- spinBoxFFT2Start
- valueChanged(int)
- MainWindow
- fft2_start_slot(int)
-
-
- 154
- 366
-
-
- 399
- 301
-
-
-
-
- spinBoxFFT2End
- valueChanged(int)
- MainWindow
- fft2_end_slot(int)
-
-
- 154
- 399
-
-
- 399
- 301
-
-
-
-
- pushButtonLoadTarget
- released()
- MainWindow
- load_target()
-
-
- 277
- 103
-
-
- 399
- 301
-
-
-
-
- spinBoxBlockSizeTarget
- valueChanged(int)
- MainWindow
- target_block_size(int)
-
-
- 313
- 136
-
-
- 399
- 301
-
-
-
-
- pushButtonGenerateTarget
- released()
- MainWindow
- generate_target_blocks()
-
-
- 277
- 202
-
-
- 399
- 301
-
-
-
-
- spinBoxBlockSize
- valueChanged(int)
- MainWindow
- block_size(int)
-
-
- 188
- 105
-
-
- 399
- 301
-
-
-
pushButtonGenerate
released()
@@ -1084,22 +1073,6 @@
-
- dialVolume
- sliderMoved(int)
- MainWindow
- volume_slot(int)
-
-
- 189
- 480
-
-
- 361
- 301
-
-
-
doubleSpinBoxBlockOverlap
valueChanged(double)
@@ -1116,6 +1089,38 @@
+
+ radioButton_hammingTarget
+ toggled(bool)
+ MainWindow
+ window_target_hamming(bool)
+
+
+ 619
+ 290
+
+
+ 361
+ 301
+
+
+
+
+ pushButtonDeleteSound
+ released()
+ MainWindow
+ delete_sound()
+
+
+ 476
+ 544
+
+
+ 361
+ 301
+
+
+
doubleSpinBoxBlockOverlapTarget
valueChanged(double)
@@ -1133,14 +1138,14 @@
- pushButtonClearBrain
- released()
+ radioButton_dodgy
+ toggled(bool)
MainWindow
- clear_brain()
+ window_dodgy(bool)
- 590
- 544
+ 75
+ 203
361
@@ -1149,13 +1154,77 @@
- pushButtonDeleteSound
- released()
+ radioButton_blackman
+ toggled(bool)
MainWindow
- delete_sound()
+ window_blackman(bool)
- 476
+ 75
+ 261
+
+
+ 361
+ 301
+
+
+
+
+ radioButton_hann
+ toggled(bool)
+ MainWindow
+ window_hann(bool)
+
+
+ 188
+ 261
+
+
+ 361
+ 301
+
+
+
+
+ radioButton_hamming
+ toggled(bool)
+ MainWindow
+ window_hamming(bool)
+
+
+ 188
+ 232
+
+
+ 361
+ 301
+
+
+
+
+ radioButton_gaussian
+ toggled(bool)
+ MainWindow
+ window_gaussian(bool)
+
+
+ 188
+ 203
+
+
+ 361
+ 301
+
+
+
+
+ pushButtonClearBrain
+ released()
+ MainWindow
+ clear_brain()
+
+
+ 590
544
@@ -1180,38 +1249,6 @@
-
- radioButton_blackman
- toggled(bool)
- MainWindow
- window_blackman(bool)
-
-
- 75
- 261
-
-
- 361
- 301
-
-
-
-
- radioButton_dodgy
- toggled(bool)
- MainWindow
- window_dodgy(bool)
-
-
- 75
- 203
-
-
- 361
- 301
-
-
-
radioButton_flattop
toggled(bool)
@@ -1228,54 +1265,6 @@
-
- radioButton_gaussian
- toggled(bool)
- MainWindow
- window_gaussian(bool)
-
-
- 188
- 203
-
-
- 361
- 301
-
-
-
-
- radioButton_hamming
- toggled(bool)
- MainWindow
- window_hamming(bool)
-
-
- 188
- 232
-
-
- 361
- 301
-
-
-
-
- radioButton_hann
- toggled(bool)
- MainWindow
- window_hann(bool)
-
-
- 188
- 261
-
-
- 361
- 301
-
-
-
radioButton_rectagle
toggled(bool)
@@ -1293,46 +1282,14 @@
- radioButton_bartlettTarget
+ radioButton_rectangleTarget
toggled(bool)
MainWindow
- window_target_bartlett(bool)
+ window_target_rectangle(bool)
- 449
- 290
-
-
- 361
- 301
-
-
-
-
- radioButton_blackmanTarget
- toggled(bool)
- MainWindow
- window_target_blackman(bool)
-
-
- 449
- 319
-
-
- 361
- 301
-
-
-
-
- radioButton_dodgyTarget
- toggled(bool)
- MainWindow
- window_target_dodgy(bool)
-
-
- 449
- 261
+ 619
+ 348
361
@@ -1357,14 +1314,14 @@
- radioButton_gaussianTarget
+ radioButton_blackmanTarget
toggled(bool)
MainWindow
- window_target_gaussian(bool)
+ window_target_blackman(bool)
- 619
- 261
+ 449
+ 319
361
@@ -1373,13 +1330,13 @@
- radioButton_hammingTarget
+ radioButton_bartlettTarget
toggled(bool)
MainWindow
- window_target_hamming(bool)
+ window_target_bartlett(bool)
- 619
+ 449
290
@@ -1388,6 +1345,22 @@
+
+ radioButton_dodgyTarget
+ toggled(bool)
+ MainWindow
+ window_target_dodgy(bool)
+
+
+ 449
+ 261
+
+
+ 361
+ 301
+
+
+
radioButton_hannTarget
toggled(bool)
@@ -1405,14 +1378,14 @@
- radioButton_rectangleTarget
+ radioButton_gaussianTarget
toggled(bool)
MainWindow
- window_target_rectangle(bool)
+ window_target_gaussian(bool)
619
- 348
+ 261
361
@@ -1437,14 +1410,14 @@
- pushButtonStopRecord
- released()
+ sliderNRatio
+ valueChanged(int)
MainWindow
- stop_record()
+ n_ratio_slot(int)
- 328
- 543
+ 159
+ 211
361
@@ -1453,14 +1426,14 @@
- pushButtonRecord
- released()
+ doubleSpinBoxNRatio
+ valueChanged(double)
MainWindow
- record()
+ n_ratio_slot(double)
- 236
- 543
+ 330
+ 211
361
@@ -1511,5 +1484,7 @@
window_target_rectangle(bool)
record()
stop_record()
+ n_ratio_slot(int)
+ n_ratio_slot(double)
diff --git a/samplebrain/qt/MainWindow.h b/samplebrain/qt/MainWindow.h
index bc59aab..a5c48d3 100644
--- a/samplebrain/qt/MainWindow.h
+++ b/samplebrain/qt/MainWindow.h
@@ -42,6 +42,8 @@ private slots:
void stop_slot() { lo_send(m_audio_address,"/pause",""); }
void ratio_slot(int s) { lo_send(m_audio_address,"/ratio","f",s/100.0f); }
void ratio_slot(double s) { lo_send(m_audio_address,"/ratio","f",s); }
+ void n_ratio_slot(int s) { lo_send(m_audio_address,"/n_ratio","f",s/100.0f); }
+ void n_ratio_slot(double s) { lo_send(m_audio_address,"/n_ratio","f",s); }
void fft1_start_slot(int s) { lo_send(m_audio_address,"/fft1_start","i",s); }
void fft1_end_slot(int s) { lo_send(m_audio_address,"/fft1_end","i",s); }
void fft2_start_slot(int s){} // { m_renderer->get_params()->m_fft2_start=s; }
diff --git a/samplebrain/qt/audio_thread.cpp b/samplebrain/qt/audio_thread.cpp
index 75edb97..b3ade9e 100644
--- a/samplebrain/qt/audio_thread.cpp
+++ b/samplebrain/qt/audio_thread.cpp
@@ -67,6 +67,9 @@ void audio_thread::process(sample &s, sample &s2) {
if (name=="/ratio") {
m_renderer->get_params()->m_ratio = cmd.get_float(0);
}
+ if (name=="/n_ratio") {
+ m_renderer->get_params()->m_n_ratio = cmd.get_float(0);
+ }
if (name=="/fft1_start") {
m_renderer->get_params()->m_fft1_start = cmd.get_int(0);
}
diff --git a/samplebrain/qt/generated/ui_samplebrain.h b/samplebrain/qt/generated/ui_samplebrain.h
index 3344aba..a31be08 100644
--- a/samplebrain/qt/generated/ui_samplebrain.h
+++ b/samplebrain/qt/generated/ui_samplebrain.h
@@ -1,7 +1,7 @@
/********************************************************************************
** Form generated from reading UI file 'samplebrainB32443.ui'
**
-** Created: Tue Jul 21 14:56:57 2015
+** Created: Tue Jul 21 15:50:16 2015
** by: Qt User Interface Compiler version 4.8.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
@@ -45,30 +45,23 @@ public:
QHBoxLayout *horizontalLayout_8;
QVBoxLayout *verticalLayout_3;
QLabel *label_19;
- QHBoxLayout *horizontalLayout_16;
QLabel *label_6;
+ QHBoxLayout *horizontalLayout_16;
QSlider *sliderRatio;
QDoubleSpinBox *doubleSpinBoxRatio;
- QVBoxLayout *verticalLayout_4;
+ QLabel *label_20;
+ QHBoxLayout *horizontalLayout;
+ QSlider *sliderNRatio;
+ QDoubleSpinBox *doubleSpinBoxNRatio;
QLabel *label_7;
QHBoxLayout *horizontalLayout_3;
QLabel *label_9;
QSpinBox *spinBoxFFT1Start;
- QHBoxLayout *horizontalLayout_9;
QLabel *label_10;
QSpinBox *spinBoxFFT1End;
- QVBoxLayout *verticalLayout_5;
- QLabel *label_8;
- QHBoxLayout *horizontalLayout_10;
- QLabel *label_11;
- QSpinBox *spinBoxFFT2Start;
- QHBoxLayout *horizontalLayout_11;
- QLabel *label_12;
- QSpinBox *spinBoxFFT2End;
QSpacerItem *verticalSpacer_3;
QVBoxLayout *verticalLayout_6;
QLabel *label_16;
- QLabel *label_15;
QPushButton *pushButtonLoadTarget;
QHBoxLayout *horizontalLayout_13;
QLabel *label_17;
@@ -166,8 +159,6 @@ public:
verticalLayout_3->addWidget(label_19);
- horizontalLayout_16 = new QHBoxLayout();
- horizontalLayout_16->setObjectName(QString::fromUtf8("horizontalLayout_16"));
label_6 = new QLabel(controlTab);
label_6->setObjectName(QString::fromUtf8("label_6"));
QFont font2;
@@ -177,11 +168,10 @@ public:
font2.setWeight(75);
label_6->setFont(font2);
- horizontalLayout_16->addWidget(label_6);
-
-
- verticalLayout_3->addLayout(horizontalLayout_16);
+ verticalLayout_3->addWidget(label_6);
+ horizontalLayout_16 = new QHBoxLayout();
+ horizontalLayout_16->setObjectName(QString::fromUtf8("horizontalLayout_16"));
sliderRatio = new QSlider(controlTab);
sliderRatio->setObjectName(QString::fromUtf8("sliderRatio"));
QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
@@ -192,23 +182,59 @@ public:
sliderRatio->setValue(50);
sliderRatio->setOrientation(Qt::Horizontal);
- verticalLayout_3->addWidget(sliderRatio);
+ horizontalLayout_16->addWidget(sliderRatio);
doubleSpinBoxRatio = new QDoubleSpinBox(controlTab);
doubleSpinBoxRatio->setObjectName(QString::fromUtf8("doubleSpinBoxRatio"));
+ QSizePolicy sizePolicy1(QSizePolicy::Fixed, QSizePolicy::Fixed);
+ sizePolicy1.setHorizontalStretch(0);
+ sizePolicy1.setVerticalStretch(0);
+ sizePolicy1.setHeightForWidth(doubleSpinBoxRatio->sizePolicy().hasHeightForWidth());
+ doubleSpinBoxRatio->setSizePolicy(sizePolicy1);
doubleSpinBoxRatio->setMaximum(1);
doubleSpinBoxRatio->setSingleStep(0.01);
doubleSpinBoxRatio->setValue(0.5);
- verticalLayout_3->addWidget(doubleSpinBoxRatio);
+ horizontalLayout_16->addWidget(doubleSpinBoxRatio);
+
+
+ verticalLayout_3->addLayout(horizontalLayout_16);
+
+ label_20 = new QLabel(controlTab);
+ label_20->setObjectName(QString::fromUtf8("label_20"));
+ label_20->setFont(font2);
+
+ verticalLayout_3->addWidget(label_20);
+
+ horizontalLayout = new QHBoxLayout();
+ horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
+ sliderNRatio = new QSlider(controlTab);
+ sliderNRatio->setObjectName(QString::fromUtf8("sliderNRatio"));
+ sizePolicy.setHeightForWidth(sliderNRatio->sizePolicy().hasHeightForWidth());
+ sliderNRatio->setSizePolicy(sizePolicy);
+ sliderNRatio->setValue(50);
+ sliderNRatio->setOrientation(Qt::Horizontal);
+
+ horizontalLayout->addWidget(sliderNRatio);
+
+ doubleSpinBoxNRatio = new QDoubleSpinBox(controlTab);
+ doubleSpinBoxNRatio->setObjectName(QString::fromUtf8("doubleSpinBoxNRatio"));
+ sizePolicy1.setHeightForWidth(doubleSpinBoxNRatio->sizePolicy().hasHeightForWidth());
+ doubleSpinBoxNRatio->setSizePolicy(sizePolicy1);
+ doubleSpinBoxNRatio->setMaximum(1);
+ doubleSpinBoxNRatio->setSingleStep(0.01);
+ doubleSpinBoxNRatio->setValue(0.5);
+
+ horizontalLayout->addWidget(doubleSpinBoxNRatio);
+
+
+ verticalLayout_3->addLayout(horizontalLayout);
- verticalLayout_4 = new QVBoxLayout();
- verticalLayout_4->setObjectName(QString::fromUtf8("verticalLayout_4"));
label_7 = new QLabel(controlTab);
label_7->setObjectName(QString::fromUtf8("label_7"));
label_7->setFont(font2);
- verticalLayout_4->addWidget(label_7);
+ verticalLayout_3->addWidget(label_7);
horizontalLayout_3 = new QHBoxLayout();
horizontalLayout_3->setObjectName(QString::fromUtf8("horizontalLayout_3"));
@@ -223,76 +249,24 @@ public:
horizontalLayout_3->addWidget(spinBoxFFT1Start);
-
- verticalLayout_4->addLayout(horizontalLayout_3);
-
- horizontalLayout_9 = new QHBoxLayout();
- horizontalLayout_9->setObjectName(QString::fromUtf8("horizontalLayout_9"));
label_10 = new QLabel(controlTab);
label_10->setObjectName(QString::fromUtf8("label_10"));
label_10->setFont(font);
- horizontalLayout_9->addWidget(label_10);
+ horizontalLayout_3->addWidget(label_10);
spinBoxFFT1End = new QSpinBox(controlTab);
spinBoxFFT1End->setObjectName(QString::fromUtf8("spinBoxFFT1End"));
spinBoxFFT1End->setValue(99);
- horizontalLayout_9->addWidget(spinBoxFFT1End);
+ horizontalLayout_3->addWidget(spinBoxFFT1End);
- verticalLayout_4->addLayout(horizontalLayout_9);
-
-
- verticalLayout_3->addLayout(verticalLayout_4);
-
- verticalLayout_5 = new QVBoxLayout();
- verticalLayout_5->setObjectName(QString::fromUtf8("verticalLayout_5"));
- label_8 = new QLabel(controlTab);
- label_8->setObjectName(QString::fromUtf8("label_8"));
- label_8->setFont(font2);
-
- verticalLayout_5->addWidget(label_8);
-
- horizontalLayout_10 = new QHBoxLayout();
- horizontalLayout_10->setObjectName(QString::fromUtf8("horizontalLayout_10"));
- label_11 = new QLabel(controlTab);
- label_11->setObjectName(QString::fromUtf8("label_11"));
- label_11->setFont(font);
-
- horizontalLayout_10->addWidget(label_11);
-
- spinBoxFFT2Start = new QSpinBox(controlTab);
- spinBoxFFT2Start->setObjectName(QString::fromUtf8("spinBoxFFT2Start"));
-
- horizontalLayout_10->addWidget(spinBoxFFT2Start);
-
-
- verticalLayout_5->addLayout(horizontalLayout_10);
-
- horizontalLayout_11 = new QHBoxLayout();
- horizontalLayout_11->setObjectName(QString::fromUtf8("horizontalLayout_11"));
- label_12 = new QLabel(controlTab);
- label_12->setObjectName(QString::fromUtf8("label_12"));
- label_12->setFont(font);
-
- horizontalLayout_11->addWidget(label_12);
-
- spinBoxFFT2End = new QSpinBox(controlTab);
- spinBoxFFT2End->setObjectName(QString::fromUtf8("spinBoxFFT2End"));
- spinBoxFFT2End->setValue(99);
-
- horizontalLayout_11->addWidget(spinBoxFFT2End);
-
-
- verticalLayout_5->addLayout(horizontalLayout_11);
+ verticalLayout_3->addLayout(horizontalLayout_3);
verticalSpacer_3 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
- verticalLayout_5->addItem(verticalSpacer_3);
-
-
- verticalLayout_3->addLayout(verticalLayout_5);
+ verticalLayout_3->addItem(verticalSpacer_3);
horizontalLayout_8->addLayout(verticalLayout_3);
@@ -305,12 +279,6 @@ public:
verticalLayout_6->addWidget(label_16);
- label_15 = new QLabel(controlTab);
- label_15->setObjectName(QString::fromUtf8("label_15"));
- label_15->setFont(font);
-
- verticalLayout_6->addWidget(label_15);
-
pushButtonLoadTarget = new QPushButton(controlTab);
pushButtonLoadTarget->setObjectName(QString::fromUtf8("pushButtonLoadTarget"));
pushButtonLoadTarget->setFont(font);
@@ -673,41 +641,41 @@ public:
retranslateUi(MainWindow);
QObject::connect(pushButtonPlay, SIGNAL(released()), MainWindow, SLOT(play_slot()));
QObject::connect(pushButtonStop, SIGNAL(released()), MainWindow, SLOT(stop_slot()));
+ 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(spinBoxBlockSize, SIGNAL(valueChanged(int)), MainWindow, SLOT(block_size(int)));
+ 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(spinBoxFFT2Start, SIGNAL(valueChanged(int)), MainWindow, SLOT(fft2_start_slot(int)));
- QObject::connect(spinBoxFFT2End, SIGNAL(valueChanged(int)), MainWindow, SLOT(fft2_end_slot(int)));
- QObject::connect(pushButtonLoadTarget, SIGNAL(released()), MainWindow, SLOT(load_target()));
- QObject::connect(spinBoxBlockSizeTarget, SIGNAL(valueChanged(int)), MainWindow, SLOT(target_block_size(int)));
- QObject::connect(pushButtonGenerateTarget, SIGNAL(released()), MainWindow, SLOT(generate_target_blocks()));
- QObject::connect(spinBoxBlockSize, SIGNAL(valueChanged(int)), MainWindow, SLOT(block_size(int)));
QObject::connect(pushButtonGenerate, SIGNAL(released()), MainWindow, SLOT(generate()));
QObject::connect(pushButtonLoadSound, SIGNAL(released()), MainWindow, SLOT(load_sound()));
- QObject::connect(dialVolume, SIGNAL(sliderMoved(int)), MainWindow, SLOT(volume_slot(int)));
QObject::connect(doubleSpinBoxBlockOverlap, SIGNAL(valueChanged(double)), MainWindow, SLOT(block_overlap(double)));
- QObject::connect(doubleSpinBoxBlockOverlapTarget, SIGNAL(valueChanged(double)), MainWindow, SLOT(target_block_overlap(double)));
- QObject::connect(pushButtonClearBrain, SIGNAL(released()), MainWindow, SLOT(clear_brain()));
- QObject::connect(pushButtonDeleteSound, SIGNAL(released()), MainWindow, SLOT(delete_sound()));
- 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_dodgy, SIGNAL(toggled(bool)), MainWindow, SLOT(window_dodgy(bool)));
- QObject::connect(radioButton_flattop, SIGNAL(toggled(bool)), MainWindow, SLOT(window_flattop(bool)));
- 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_rectagle, SIGNAL(toggled(bool)), MainWindow, SLOT(window_rectangle(bool)));
- QObject::connect(radioButton_bartlettTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_bartlett(bool)));
- QObject::connect(radioButton_blackmanTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_blackman(bool)));
- QObject::connect(radioButton_dodgyTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_dodgy(bool)));
- QObject::connect(radioButton_flattopTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_flattop(bool)));
- QObject::connect(radioButton_gaussianTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_gaussian(bool)));
QObject::connect(radioButton_hammingTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_hamming(bool)));
- QObject::connect(radioButton_hannTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_hann(bool)));
+ QObject::connect(pushButtonDeleteSound, SIGNAL(released()), MainWindow, SLOT(delete_sound()));
+ QObject::connect(doubleSpinBoxBlockOverlapTarget, SIGNAL(valueChanged(double)), MainWindow, SLOT(target_block_overlap(double)));
+ QObject::connect(radioButton_dodgy, SIGNAL(toggled(bool)), MainWindow, SLOT(window_dodgy(bool)));
+ QObject::connect(radioButton_blackman, SIGNAL(toggled(bool)), MainWindow, SLOT(window_blackman(bool)));
+ QObject::connect(radioButton_hann, SIGNAL(toggled(bool)), MainWindow, SLOT(window_hann(bool)));
+ QObject::connect(radioButton_hamming, SIGNAL(toggled(bool)), MainWindow, SLOT(window_hamming(bool)));
+ QObject::connect(radioButton_gaussian, SIGNAL(toggled(bool)), MainWindow, SLOT(window_gaussian(bool)));
+ QObject::connect(pushButtonClearBrain, SIGNAL(released()), MainWindow, SLOT(clear_brain()));
+ QObject::connect(radioButton_bartlett, SIGNAL(toggled(bool)), MainWindow, SLOT(window_bartlett(bool)));
+ QObject::connect(radioButton_flattop, SIGNAL(toggled(bool)), MainWindow, SLOT(window_flattop(bool)));
+ QObject::connect(radioButton_rectagle, SIGNAL(toggled(bool)), MainWindow, SLOT(window_rectangle(bool)));
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_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(sliderRatio, SIGNAL(valueChanged(int)), MainWindow, SLOT(ratio_slot(int)));
- QObject::connect(pushButtonStopRecord, SIGNAL(released()), MainWindow, SLOT(stop_record()));
- QObject::connect(pushButtonRecord, SIGNAL(released()), MainWindow, SLOT(record()));
+ QObject::connect(sliderNRatio, SIGNAL(valueChanged(int)), MainWindow, SLOT(n_ratio_slot(int)));
+ QObject::connect(doubleSpinBoxNRatio, SIGNAL(valueChanged(double)), MainWindow, SLOT(n_ratio_slot(double)));
tabWidget->setCurrentIndex(0);
@@ -720,14 +688,11 @@ public:
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "samplebrain 0.0.4", 0, QApplication::UnicodeUTF8));
label_19->setText(QApplication::translate("MainWindow", "tweakage", 0, QApplication::UnicodeUTF8));
label_6->setText(QApplication::translate("MainWindow", "fft <-> mfcc ratio", 0, QApplication::UnicodeUTF8));
- label_7->setText(QApplication::translate("MainWindow", "fft subsection 1", 0, QApplication::UnicodeUTF8));
+ label_20->setText(QApplication::translate("MainWindow", "freq & dynamics <-> freq ratio", 0, QApplication::UnicodeUTF8));
+ label_7->setText(QApplication::translate("MainWindow", "fft subsection", 0, QApplication::UnicodeUTF8));
label_9->setText(QApplication::translate("MainWindow", "Start", 0, QApplication::UnicodeUTF8));
label_10->setText(QApplication::translate("MainWindow", "End", 0, QApplication::UnicodeUTF8));
- label_8->setText(QApplication::translate("MainWindow", "fft subsection 2", 0, QApplication::UnicodeUTF8));
- label_11->setText(QApplication::translate("MainWindow", "Start", 0, QApplication::UnicodeUTF8));
- label_12->setText(QApplication::translate("MainWindow", "End", 0, QApplication::UnicodeUTF8));
label_16->setText(QApplication::translate("MainWindow", "target sound", 0, QApplication::UnicodeUTF8));
- label_15->setText(QApplication::translate("MainWindow", "no sound yet...", 0, QApplication::UnicodeUTF8));
pushButtonLoadTarget->setText(QApplication::translate("MainWindow", "load target", 0, QApplication::UnicodeUTF8));
label_17->setText(QApplication::translate("MainWindow", "block size", 0, QApplication::UnicodeUTF8));
label_18->setText(QApplication::translate("MainWindow", "block overlap", 0, QApplication::UnicodeUTF8));
diff --git a/samplebrain/qt/images/at.jpg b/samplebrain/qt/images/at.jpg
new file mode 100644
index 0000000..fc7ec5b
Binary files /dev/null and b/samplebrain/qt/images/at.jpg differ
diff --git a/samplebrain/qt/images/at.png b/samplebrain/qt/images/at.png
new file mode 100644
index 0000000..1fa84f0
Binary files /dev/null and b/samplebrain/qt/images/at.png differ
diff --git a/samplebrain/qt/images/pause.png b/samplebrain/qt/images/pause.png
new file mode 100644
index 0000000..f18b0e8
Binary files /dev/null and b/samplebrain/qt/images/pause.png differ
diff --git a/samplebrain/qt/images/play.png b/samplebrain/qt/images/play.png
new file mode 100644
index 0000000..b3e0551
Binary files /dev/null and b/samplebrain/qt/images/play.png differ
diff --git a/samplebrain/qt/images/record.png b/samplebrain/qt/images/record.png
new file mode 100644
index 0000000..128f7c0
Binary files /dev/null and b/samplebrain/qt/images/record.png differ
diff --git a/samplebrain/qt/images/stop.png b/samplebrain/qt/images/stop.png
new file mode 100644
index 0000000..88de0b8
Binary files /dev/null and b/samplebrain/qt/images/stop.png differ
diff --git a/samplebrain/qt/samplebrain.qrc b/samplebrain/qt/samplebrain.qrc
new file mode 100644
index 0000000..834ac79
--- /dev/null
+++ b/samplebrain/qt/samplebrain.qrc
@@ -0,0 +1,9 @@
+
+
+ images/at.png
+ images/pause.png
+ images/play.png
+ images/record.png
+ images/stop.png
+
+
diff --git a/samplebrain/src/block.cpp b/samplebrain/src/block.cpp
index 005a990..9b6e975 100644
--- a/samplebrain/src/block.cpp
+++ b/samplebrain/src/block.cpp
@@ -15,6 +15,7 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include
+#include
#include
#include "block.h"
@@ -26,11 +27,41 @@ Aquila::Mfcc *block::m_mfcc_proc;
static const int MFCC_FILTERS=12;
+void normalise(sample &in) {
+ // find min/max
+ float max = 0;
+ float min = FLT_MAX;
+ for (u32 i=0; imax) max=in[i];
+ }
+
+ float mid = min+(max-min)/2.0f;
+
+ // remove dc
+ for (u32 i=0; iimpulse2freq(m_pcm.get_non_const_buffer());
+ // rerun the normalised version
+ normalise(m_n_pcm);
+ process(m_n_pcm,m_n_fft,m_n_mfcc);
- std::vector > mfspec;
-
- for (u32 i=0; im_spectrum[i][0];
-
- mfspec.push_back(std::complex(m_fftw->m_spectrum[i][0],
- m_fftw->m_spectrum[i][1]));
+ if (ditchpcm) {
+ m_pcm.clear();
+ m_n_pcm.clear();
}
-
- if (m_block_size>100) m_fft.crop_to(100);
- if (ditchpcm) m_pcm.clear();
-
- // calculate mfcc
- std::vector m = m_mfcc_proc->calculate(mfspec,MFCC_FILTERS);
-
- for (u32 i=0; im_length!=block_size) {
@@ -74,48 +94,101 @@ void block::init_fft(u32 block_size)
}
}
+void block::process(const sample &pcm, sample &fft, sample &mfcc) {
+ m_fftw->impulse2freq(pcm.get_buffer());
+
+ // calculate fft
+ std::vector > mfspec;
+ for (u32 i=0; im_spectrum[i][0];
+ mfspec.push_back(std::complex(m_fftw->m_spectrum[i][0],
+ m_fftw->m_spectrum[i][1]));
+ }
+
+ if (m_block_size>100) fft.crop_to(100);
+
+ // calculate mfcc
+ std::vector m = m_mfcc_proc->calculate(mfspec,MFCC_FILTERS);
+ for (u32 i=0; im_fft.get_length()) fft_end=m_fft.get_length();
-*/
s32 fft_start = params.m_fft1_start;
s32 fft_end = fmin(params.m_fft1_end,m_fft.get_length());
if (params.m_ratio==0) {
for (u32 i=fft_start; i
#include
@@ -19,7 +35,7 @@ FFT::~FFT()
fftw_destroy_plan(m_plan);
}
-void FFT::impulse2freq(float *imp)
+void FFT::impulse2freq(const float *imp)
{
unsigned int i;
diff --git a/samplebrain/src/fft.h b/samplebrain/src/fft.h
index 4d6bfa7..c43d71b 100644
--- a/samplebrain/src/fft.h
+++ b/samplebrain/src/fft.h
@@ -1,3 +1,19 @@
+// Copyright (C) 2015 Foam Kernow
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
#include
#ifndef SPIRALCORE_FFT
@@ -12,7 +28,7 @@ class FFT
public:
FFT(int length);
~FFT();
- void impulse2freq(float *imp);
+ void impulse2freq(const float *imp);
fftw_plan m_plan;
unsigned int m_length;
diff --git a/samplebrain/src/main.cpp b/samplebrain/src/main.cpp
index a4c108f..6211444 100644
--- a/samplebrain/src/main.cpp
+++ b/samplebrain/src/main.cpp
@@ -59,19 +59,19 @@ int main(int argc, char *argv[])
brain source, target;
// source.load_sound("../sound/source/shostakovich6.wav");
-// source.load_sound("../sound/source/808.wav");
-// source.load_sound("../sound/source/joey.wav");
-// source.load_sound("../sound/source/pw2.wav");
-// source.load_sound("../sound/source/pw3.wav");
-// source.load_sound("../sound/source/claps.wav");
-// source.load_sound("../sound/source/eagle.wav");
+ source.load_sound("../sound/source/808.wav");
+ source.load_sound("../sound/source/joey.wav");
+ source.load_sound("../sound/source/pw2.wav");
+ source.load_sound("../sound/source/pw3.wav");
+ source.load_sound("../sound/source/claps.wav");
+ source.load_sound("../sound/source/eagle.wav");
-// source.load_sound("../sound/source/sailingbybit.wav");
- source.load_sound("../sound/source/rise.wav");
+ target.load_sound("../sound/source/apache.wav");
+// source.load_sound("../sound/source/rise.wav");
//target.load_sound("../sound/source/sb-left.wav");
- target.load_sound("../sound/source/rise.wav");
+// target.load_sound("../sound/source/rise.wav");
cerr<<"loaded sounds"<m_ratio=0;
+ rr.get_params()->m_ratio=0.5;
a->m_client.set_callback(run_audio, &rr);
diff --git a/samplebrain/src/renderer.cpp b/samplebrain/src/renderer.cpp
index 4a75bfb..2ee5e10 100644
--- a/samplebrain/src/renderer.cpp
+++ b/samplebrain/src/renderer.cpp
@@ -46,6 +46,7 @@ void renderer::process(u32 nframes, float *buf) {
return;
}
+
// cerr<<"-----------------"<