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