mirror of
https://gitlab.com/then-try-this/samplebrain.git
synced 2025-05-12 18:47:21 +00:00
fixes for autotune
This commit is contained in:
parent
44be9d76cb
commit
62d4574eee
Binary file not shown.
@ -60,6 +60,16 @@ private slots:
|
|||||||
m_Ui.sliderNRatio->setValue(s*100);
|
m_Ui.sliderNRatio->setValue(s*100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void autotune(int s) {
|
||||||
|
lo_send(m_audio_address,"/autotune","f",s/100.0f);
|
||||||
|
m_Ui.doubleSpinBoxAutotune->setValue(s/100.0f);
|
||||||
|
}
|
||||||
|
void autotune(double s) {
|
||||||
|
lo_send(m_audio_address,"/autotune","f",s);
|
||||||
|
m_Ui.sliderAutotune->setValue(s*100);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void fft1_start_slot(int s) { lo_send(m_audio_address,"/fft1_start","i",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 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; }
|
void fft2_start_slot(int s){} // { m_renderer->get_params()->m_fft2_start=s; }
|
||||||
|
@ -21,121 +21,124 @@ using namespace spiralcore;
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
audio_thread::audio_thread(process_thread &p) :
|
audio_thread::audio_thread(process_thread &p) :
|
||||||
m_audio_device(NULL),
|
m_audio_device(NULL),
|
||||||
m_osc("8888"),
|
m_osc("8888"),
|
||||||
m_process_thread(p),
|
m_process_thread(p),
|
||||||
m_brain_mutex(p.m_brain_mutex)
|
m_brain_mutex(p.m_brain_mutex)
|
||||||
{
|
{
|
||||||
start_audio();
|
start_audio();
|
||||||
pthread_mutex_lock(m_brain_mutex);
|
pthread_mutex_lock(m_brain_mutex);
|
||||||
m_renderer = new renderer(p.m_source,p.m_target);
|
m_renderer = new renderer(p.m_source,p.m_target);
|
||||||
pthread_mutex_unlock(m_brain_mutex);
|
pthread_mutex_unlock(m_brain_mutex);
|
||||||
m_osc.run();
|
m_osc.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool state = 1;
|
static bool state = 1;
|
||||||
|
|
||||||
audio_thread::~audio_thread() {
|
audio_thread::~audio_thread() {
|
||||||
state=0;
|
state=0;
|
||||||
if (m_audio_device!=NULL) delete m_audio_device;
|
if (m_audio_device!=NULL) delete m_audio_device;
|
||||||
delete m_renderer;
|
delete m_renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void audio_thread::start_audio() {
|
void audio_thread::start_audio() {
|
||||||
if (m_audio_device!=NULL) delete m_audio_device;
|
if (m_audio_device!=NULL) delete m_audio_device;
|
||||||
m_audio_device = new audio_device("samplebrain",44100,2048);
|
m_audio_device = new audio_device("samplebrain",44100,2048);
|
||||||
m_audio_device->m_client.set_callback(run_audio, this);
|
m_audio_device->m_client.set_callback(run_audio, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void audio_thread::run_audio(void* c, unsigned int frames) {
|
void audio_thread::run_audio(void* c, unsigned int frames) {
|
||||||
if (state) {
|
if (state) {
|
||||||
audio_thread *at = (audio_thread*)c;
|
audio_thread *at = (audio_thread*)c;
|
||||||
at->m_audio_device->left_out.zero();
|
at->m_audio_device->left_out.zero();
|
||||||
at->process(at->m_audio_device->left_out,
|
at->process(at->m_audio_device->left_out,
|
||||||
at->m_audio_device->right_out);
|
at->m_audio_device->right_out);
|
||||||
at->m_audio_device->maybe_record();
|
at->m_audio_device->maybe_record();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void audio_thread::process(sample &s, sample &s2) {
|
void audio_thread::process(sample &s, sample &s2) {
|
||||||
|
|
||||||
command_ring_buffer::command cmd;
|
command_ring_buffer::command cmd;
|
||||||
while (m_osc.get(cmd)) {
|
while (m_osc.get(cmd)) {
|
||||||
string name = cmd.m_name;
|
string name = cmd.m_name;
|
||||||
//cerr<<name<<endl;
|
//cerr<<name<<endl;
|
||||||
if (name=="/start") {
|
if (name=="/start") {
|
||||||
m_renderer->set_playing(true);
|
m_renderer->set_playing(true);
|
||||||
}
|
|
||||||
if (name=="/pause") {
|
|
||||||
m_renderer->set_playing(false);
|
|
||||||
}
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
if (name=="/fft1_end") {
|
|
||||||
m_renderer->get_params()->m_fft1_end = cmd.get_int(0);
|
|
||||||
}
|
|
||||||
if (name=="/novelty") {
|
|
||||||
m_renderer->get_params()->m_usage_importance = cmd.get_float(0);
|
|
||||||
}
|
|
||||||
if (name=="/stickyness") {
|
|
||||||
m_renderer->get_params()->m_stickyness = cmd.get_float(0);
|
|
||||||
}
|
|
||||||
if (name=="/restart_audio") {
|
|
||||||
start_audio();
|
|
||||||
}
|
|
||||||
if (name=="/volume") {
|
|
||||||
m_renderer->set_volume(cmd.get_float(0)*10);
|
|
||||||
}
|
|
||||||
if (name=="/search_algo") {
|
|
||||||
switch(cmd.get_int(0)) {
|
|
||||||
case 0: m_renderer->set_search_algo(renderer::BASIC); break;
|
|
||||||
case 1: m_renderer->set_search_algo(renderer::REV_BASIC); break;
|
|
||||||
case 2: m_renderer->set_search_algo(renderer::SYNAPTIC); break;
|
|
||||||
case 3: m_renderer->set_search_algo(renderer::SYNAPTIC_SLIDE); break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (name=="/n_mix") {
|
|
||||||
m_renderer->set_n_mix(cmd.get_float(0));
|
|
||||||
}
|
|
||||||
if (name=="/target_mix") {
|
|
||||||
m_renderer->set_target_mix(cmd.get_float(0));
|
|
||||||
}
|
|
||||||
if (name=="/record") {
|
|
||||||
m_renderer->set_playing(true);
|
|
||||||
m_audio_device->start_recording(cmd.get_string(0));
|
|
||||||
}
|
|
||||||
if (name=="/stop") {
|
|
||||||
m_audio_device->stop_recording();
|
|
||||||
m_renderer->set_playing(false);
|
|
||||||
}
|
|
||||||
if (name=="/boredom") {
|
|
||||||
m_renderer->get_source().set_usage_falloff(cmd.get_float(0));
|
|
||||||
}
|
|
||||||
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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (name=="/pause") {
|
||||||
|
m_renderer->set_playing(false);
|
||||||
|
}
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
if (name=="/fft1_end") {
|
||||||
|
m_renderer->get_params()->m_fft1_end = cmd.get_int(0);
|
||||||
|
}
|
||||||
|
if (name=="/novelty") {
|
||||||
|
m_renderer->get_params()->m_usage_importance = cmd.get_float(0);
|
||||||
|
}
|
||||||
|
if (name=="/stickyness") {
|
||||||
|
m_renderer->get_params()->m_stickyness = cmd.get_float(0);
|
||||||
|
}
|
||||||
|
if (name=="/autotune") {
|
||||||
|
m_renderer->set_autotune(cmd.get_float(0));
|
||||||
|
}
|
||||||
|
if (name=="/restart_audio") {
|
||||||
|
start_audio();
|
||||||
|
}
|
||||||
|
if (name=="/volume") {
|
||||||
|
m_renderer->set_volume(cmd.get_float(0)*10);
|
||||||
|
}
|
||||||
|
if (name=="/search_algo") {
|
||||||
|
switch(cmd.get_int(0)) {
|
||||||
|
case 0: m_renderer->set_search_algo(renderer::BASIC); break;
|
||||||
|
case 1: m_renderer->set_search_algo(renderer::REV_BASIC); break;
|
||||||
|
case 2: m_renderer->set_search_algo(renderer::SYNAPTIC); break;
|
||||||
|
case 3: m_renderer->set_search_algo(renderer::SYNAPTIC_SLIDE); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (name=="/n_mix") {
|
||||||
|
m_renderer->set_n_mix(cmd.get_float(0));
|
||||||
|
}
|
||||||
|
if (name=="/target_mix") {
|
||||||
|
m_renderer->set_target_mix(cmd.get_float(0));
|
||||||
|
}
|
||||||
|
if (name=="/record") {
|
||||||
|
m_renderer->set_playing(true);
|
||||||
|
m_audio_device->start_recording(cmd.get_string(0));
|
||||||
|
}
|
||||||
|
if (name=="/stop") {
|
||||||
|
m_audio_device->stop_recording();
|
||||||
|
m_renderer->set_playing(false);
|
||||||
|
}
|
||||||
|
if (name=="/boredom") {
|
||||||
|
m_renderer->get_source().set_usage_falloff(cmd.get_float(0));
|
||||||
|
}
|
||||||
|
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();
|
s.zero();
|
||||||
s2.zero();
|
s2.zero();
|
||||||
if (!pthread_mutex_trylock(m_brain_mutex)) {
|
if (!pthread_mutex_trylock(m_brain_mutex)) {
|
||||||
m_renderer->process(s.get_length(),s.get_non_const_buffer());
|
m_renderer->process(s.get_length(),s.get_non_const_buffer());
|
||||||
pthread_mutex_unlock(m_brain_mutex);
|
pthread_mutex_unlock(m_brain_mutex);
|
||||||
s2=s;
|
s2=s;
|
||||||
} else {
|
} else {
|
||||||
cerr<<"audio no lock..."<<endl;
|
cerr<<"audio no lock..."<<endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
/********************************************************************************
|
/********************************************************************************
|
||||||
** Form generated from reading UI file 'samplebrainJ11878.ui'
|
** Form generated from reading UI file 'samplebrainPm4153.ui'
|
||||||
**
|
**
|
||||||
** Created by: Qt User Interface Compiler version 4.8.6
|
** Created by: Qt User Interface Compiler version 4.8.6
|
||||||
**
|
**
|
||||||
** WARNING! All changes made in this file will be lost when recompiling UI file!
|
** WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
|
|
||||||
#ifndef SAMPLEBRAINJ11878_H
|
#ifndef SAMPLEBRAINPM4153_H
|
||||||
#define SAMPLEBRAINJ11878_H
|
#define SAMPLEBRAINPM4153_H
|
||||||
|
|
||||||
#include <QtCore/QVariant>
|
#include <QtCore/QVariant>
|
||||||
#include <QtGui/QAction>
|
#include <QtGui/QAction>
|
||||||
@ -88,17 +88,6 @@ public:
|
|||||||
QLabel *label_29;
|
QLabel *label_29;
|
||||||
QSlider *sliderSlideError;
|
QSlider *sliderSlideError;
|
||||||
QSpinBox *spinBoxSlideError;
|
QSpinBox *spinBoxSlideError;
|
||||||
QSpacerItem *horizontalSpacer_2;
|
|
||||||
QSpacerItem *verticalSpacer_3;
|
|
||||||
QLabel *label_23;
|
|
||||||
QHBoxLayout *horizontalLayout_8;
|
|
||||||
QLabel *label_21;
|
|
||||||
QSlider *sliderNMix;
|
|
||||||
QDoubleSpinBox *doubleSpinBoxNMix;
|
|
||||||
QHBoxLayout *horizontalLayout_9;
|
|
||||||
QLabel *label_22;
|
|
||||||
QSlider *sliderTargetMix;
|
|
||||||
QDoubleSpinBox *doubleSpinBoxTargetMix;
|
|
||||||
QVBoxLayout *verticalLayout_6;
|
QVBoxLayout *verticalLayout_6;
|
||||||
QLabel *label_16;
|
QLabel *label_16;
|
||||||
QPushButton *pushButtonLoadTarget;
|
QPushButton *pushButtonLoadTarget;
|
||||||
@ -119,9 +108,27 @@ public:
|
|||||||
QRadioButton *radioButton_rectangleTarget;
|
QRadioButton *radioButton_rectangleTarget;
|
||||||
QLabel *label_14;
|
QLabel *label_14;
|
||||||
QPushButton *pushButtonGenerateTarget;
|
QPushButton *pushButtonGenerateTarget;
|
||||||
|
QLabel *label_23;
|
||||||
|
QHBoxLayout *horizontalLayout_22;
|
||||||
|
QLabel *label_31;
|
||||||
|
QSlider *sliderAutotune;
|
||||||
|
QDoubleSpinBox *doubleSpinBoxAutotune;
|
||||||
|
QHBoxLayout *horizontalLayout_8;
|
||||||
|
QLabel *label_21;
|
||||||
|
QSlider *sliderNMix;
|
||||||
|
QDoubleSpinBox *doubleSpinBoxNMix;
|
||||||
|
QHBoxLayout *horizontalLayout_9;
|
||||||
|
QLabel *label_22;
|
||||||
|
QSlider *sliderTargetMix;
|
||||||
|
QDoubleSpinBox *doubleSpinBoxTargetMix;
|
||||||
QSpacerItem *verticalSpacer;
|
QSpacerItem *verticalSpacer;
|
||||||
QVBoxLayout *verticalLayout_2;
|
QVBoxLayout *verticalLayout;
|
||||||
QLabel *label_3;
|
QLabel *label_3;
|
||||||
|
QListWidget *listWidgetSounds;
|
||||||
|
QHBoxLayout *horizontalLayout_2;
|
||||||
|
QPushButton *pushButtonLoadSound;
|
||||||
|
QPushButton *pushButtonDeleteSound;
|
||||||
|
QPushButton *pushButtonClearBrain;
|
||||||
QHBoxLayout *horizontalLayout_4;
|
QHBoxLayout *horizontalLayout_4;
|
||||||
QLabel *label;
|
QLabel *label;
|
||||||
QSpinBox *spinBoxBlockSize;
|
QSpinBox *spinBoxBlockSize;
|
||||||
@ -129,8 +136,8 @@ public:
|
|||||||
QLabel *label_2;
|
QLabel *label_2;
|
||||||
QDoubleSpinBox *doubleSpinBoxBlockOverlap;
|
QDoubleSpinBox *doubleSpinBoxBlockOverlap;
|
||||||
QGridLayout *gridLayout;
|
QGridLayout *gridLayout;
|
||||||
QRadioButton *radioButton_gaussian;
|
|
||||||
QRadioButton *radioButton_hamming;
|
QRadioButton *radioButton_hamming;
|
||||||
|
QRadioButton *radioButton_gaussian;
|
||||||
QRadioButton *radioButton_dodgy;
|
QRadioButton *radioButton_dodgy;
|
||||||
QRadioButton *radioButton_blackman;
|
QRadioButton *radioButton_blackman;
|
||||||
QRadioButton *radioButton_rectagle;
|
QRadioButton *radioButton_rectagle;
|
||||||
@ -142,14 +149,6 @@ public:
|
|||||||
QHBoxLayout *horizontalLayout_7;
|
QHBoxLayout *horizontalLayout_7;
|
||||||
QPushButton *pushButtonLoadBrain;
|
QPushButton *pushButtonLoadBrain;
|
||||||
QPushButton *pushButtonSaveBrain;
|
QPushButton *pushButtonSaveBrain;
|
||||||
QSpacerItem *verticalSpacer_2;
|
|
||||||
QVBoxLayout *verticalLayout;
|
|
||||||
QLabel *label_5;
|
|
||||||
QListWidget *listWidgetSounds;
|
|
||||||
QHBoxLayout *horizontalLayout_2;
|
|
||||||
QPushButton *pushButtonLoadSound;
|
|
||||||
QPushButton *pushButtonDeleteSound;
|
|
||||||
QPushButton *pushButtonClearBrain;
|
|
||||||
QWidget *logTab;
|
QWidget *logTab;
|
||||||
QHBoxLayout *horizontalLayout_15;
|
QHBoxLayout *horizontalLayout_15;
|
||||||
QPlainTextEdit *plainTextEdit;
|
QPlainTextEdit *plainTextEdit;
|
||||||
@ -170,7 +169,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (MainWindow->objectName().isEmpty())
|
if (MainWindow->objectName().isEmpty())
|
||||||
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
|
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
|
||||||
MainWindow->resize(1220, 755);
|
MainWindow->resize(1012, 707);
|
||||||
centralwidget = new QWidget(MainWindow);
|
centralwidget = new QWidget(MainWindow);
|
||||||
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
|
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
|
||||||
verticalLayout_4 = new QVBoxLayout(centralwidget);
|
verticalLayout_4 = new QVBoxLayout(centralwidget);
|
||||||
@ -546,81 +545,6 @@ public:
|
|||||||
|
|
||||||
verticalLayout_3->addLayout(horizontalLayout_20);
|
verticalLayout_3->addLayout(horizontalLayout_20);
|
||||||
|
|
||||||
horizontalSpacer_2 = new QSpacerItem(21, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
|
||||||
|
|
||||||
verticalLayout_3->addItem(horizontalSpacer_2);
|
|
||||||
|
|
||||||
verticalSpacer_3 = new QSpacerItem(240, 574, 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);
|
|
||||||
|
|
||||||
verticalLayout_3->addWidget(label_23);
|
|
||||||
|
|
||||||
horizontalLayout_8 = new QHBoxLayout();
|
|
||||||
horizontalLayout_8->setObjectName(QString::fromUtf8("horizontalLayout_8"));
|
|
||||||
label_21 = new QLabel(controlTab);
|
|
||||||
label_21->setObjectName(QString::fromUtf8("label_21"));
|
|
||||||
label_21->setFont(font2);
|
|
||||||
|
|
||||||
horizontalLayout_8->addWidget(label_21);
|
|
||||||
|
|
||||||
sliderNMix = new QSlider(controlTab);
|
|
||||||
sliderNMix->setObjectName(QString::fromUtf8("sliderNMix"));
|
|
||||||
sizePolicy.setHeightForWidth(sliderNMix->sizePolicy().hasHeightForWidth());
|
|
||||||
sliderNMix->setSizePolicy(sizePolicy);
|
|
||||||
sliderNMix->setValue(0);
|
|
||||||
sliderNMix->setOrientation(Qt::Horizontal);
|
|
||||||
|
|
||||||
horizontalLayout_8->addWidget(sliderNMix);
|
|
||||||
|
|
||||||
doubleSpinBoxNMix = new QDoubleSpinBox(controlTab);
|
|
||||||
doubleSpinBoxNMix->setObjectName(QString::fromUtf8("doubleSpinBoxNMix"));
|
|
||||||
sizePolicy1.setHeightForWidth(doubleSpinBoxNMix->sizePolicy().hasHeightForWidth());
|
|
||||||
doubleSpinBoxNMix->setSizePolicy(sizePolicy1);
|
|
||||||
doubleSpinBoxNMix->setMaximum(1);
|
|
||||||
doubleSpinBoxNMix->setSingleStep(0.01);
|
|
||||||
doubleSpinBoxNMix->setValue(0);
|
|
||||||
|
|
||||||
horizontalLayout_8->addWidget(doubleSpinBoxNMix);
|
|
||||||
|
|
||||||
|
|
||||||
verticalLayout_3->addLayout(horizontalLayout_8);
|
|
||||||
|
|
||||||
horizontalLayout_9 = new QHBoxLayout();
|
|
||||||
horizontalLayout_9->setObjectName(QString::fromUtf8("horizontalLayout_9"));
|
|
||||||
label_22 = new QLabel(controlTab);
|
|
||||||
label_22->setObjectName(QString::fromUtf8("label_22"));
|
|
||||||
label_22->setFont(font2);
|
|
||||||
|
|
||||||
horizontalLayout_9->addWidget(label_22);
|
|
||||||
|
|
||||||
sliderTargetMix = new QSlider(controlTab);
|
|
||||||
sliderTargetMix->setObjectName(QString::fromUtf8("sliderTargetMix"));
|
|
||||||
sizePolicy.setHeightForWidth(sliderTargetMix->sizePolicy().hasHeightForWidth());
|
|
||||||
sliderTargetMix->setSizePolicy(sizePolicy);
|
|
||||||
sliderTargetMix->setValue(0);
|
|
||||||
sliderTargetMix->setSliderPosition(0);
|
|
||||||
sliderTargetMix->setOrientation(Qt::Horizontal);
|
|
||||||
|
|
||||||
horizontalLayout_9->addWidget(sliderTargetMix);
|
|
||||||
|
|
||||||
doubleSpinBoxTargetMix = new QDoubleSpinBox(controlTab);
|
|
||||||
doubleSpinBoxTargetMix->setObjectName(QString::fromUtf8("doubleSpinBoxTargetMix"));
|
|
||||||
sizePolicy1.setHeightForWidth(doubleSpinBoxTargetMix->sizePolicy().hasHeightForWidth());
|
|
||||||
doubleSpinBoxTargetMix->setSizePolicy(sizePolicy1);
|
|
||||||
doubleSpinBoxTargetMix->setMaximum(1);
|
|
||||||
doubleSpinBoxTargetMix->setSingleStep(0.01);
|
|
||||||
doubleSpinBoxTargetMix->setValue(0);
|
|
||||||
|
|
||||||
horizontalLayout_9->addWidget(doubleSpinBoxTargetMix);
|
|
||||||
|
|
||||||
|
|
||||||
verticalLayout_3->addLayout(horizontalLayout_9);
|
|
||||||
|
|
||||||
|
|
||||||
horizontalLayout_5->addLayout(verticalLayout_3);
|
horizontalLayout_5->addLayout(verticalLayout_3);
|
||||||
|
|
||||||
@ -742,6 +666,104 @@ public:
|
|||||||
|
|
||||||
verticalLayout_6->addWidget(pushButtonGenerateTarget);
|
verticalLayout_6->addWidget(pushButtonGenerateTarget);
|
||||||
|
|
||||||
|
label_23 = new QLabel(controlTab);
|
||||||
|
label_23->setObjectName(QString::fromUtf8("label_23"));
|
||||||
|
label_23->setFont(font1);
|
||||||
|
|
||||||
|
verticalLayout_6->addWidget(label_23);
|
||||||
|
|
||||||
|
horizontalLayout_22 = new QHBoxLayout();
|
||||||
|
horizontalLayout_22->setObjectName(QString::fromUtf8("horizontalLayout_22"));
|
||||||
|
label_31 = new QLabel(controlTab);
|
||||||
|
label_31->setObjectName(QString::fromUtf8("label_31"));
|
||||||
|
label_31->setFont(font2);
|
||||||
|
|
||||||
|
horizontalLayout_22->addWidget(label_31);
|
||||||
|
|
||||||
|
sliderAutotune = new QSlider(controlTab);
|
||||||
|
sliderAutotune->setObjectName(QString::fromUtf8("sliderAutotune"));
|
||||||
|
sizePolicy.setHeightForWidth(sliderAutotune->sizePolicy().hasHeightForWidth());
|
||||||
|
sliderAutotune->setSizePolicy(sizePolicy);
|
||||||
|
sliderAutotune->setValue(0);
|
||||||
|
sliderAutotune->setSliderPosition(0);
|
||||||
|
sliderAutotune->setOrientation(Qt::Horizontal);
|
||||||
|
|
||||||
|
horizontalLayout_22->addWidget(sliderAutotune);
|
||||||
|
|
||||||
|
doubleSpinBoxAutotune = new QDoubleSpinBox(controlTab);
|
||||||
|
doubleSpinBoxAutotune->setObjectName(QString::fromUtf8("doubleSpinBoxAutotune"));
|
||||||
|
sizePolicy1.setHeightForWidth(doubleSpinBoxAutotune->sizePolicy().hasHeightForWidth());
|
||||||
|
doubleSpinBoxAutotune->setSizePolicy(sizePolicy1);
|
||||||
|
doubleSpinBoxAutotune->setMaximum(1);
|
||||||
|
doubleSpinBoxAutotune->setSingleStep(0.01);
|
||||||
|
doubleSpinBoxAutotune->setValue(0);
|
||||||
|
|
||||||
|
horizontalLayout_22->addWidget(doubleSpinBoxAutotune);
|
||||||
|
|
||||||
|
|
||||||
|
verticalLayout_6->addLayout(horizontalLayout_22);
|
||||||
|
|
||||||
|
horizontalLayout_8 = new QHBoxLayout();
|
||||||
|
horizontalLayout_8->setObjectName(QString::fromUtf8("horizontalLayout_8"));
|
||||||
|
label_21 = new QLabel(controlTab);
|
||||||
|
label_21->setObjectName(QString::fromUtf8("label_21"));
|
||||||
|
label_21->setFont(font2);
|
||||||
|
|
||||||
|
horizontalLayout_8->addWidget(label_21);
|
||||||
|
|
||||||
|
sliderNMix = new QSlider(controlTab);
|
||||||
|
sliderNMix->setObjectName(QString::fromUtf8("sliderNMix"));
|
||||||
|
sizePolicy.setHeightForWidth(sliderNMix->sizePolicy().hasHeightForWidth());
|
||||||
|
sliderNMix->setSizePolicy(sizePolicy);
|
||||||
|
sliderNMix->setValue(0);
|
||||||
|
sliderNMix->setOrientation(Qt::Horizontal);
|
||||||
|
|
||||||
|
horizontalLayout_8->addWidget(sliderNMix);
|
||||||
|
|
||||||
|
doubleSpinBoxNMix = new QDoubleSpinBox(controlTab);
|
||||||
|
doubleSpinBoxNMix->setObjectName(QString::fromUtf8("doubleSpinBoxNMix"));
|
||||||
|
sizePolicy1.setHeightForWidth(doubleSpinBoxNMix->sizePolicy().hasHeightForWidth());
|
||||||
|
doubleSpinBoxNMix->setSizePolicy(sizePolicy1);
|
||||||
|
doubleSpinBoxNMix->setMaximum(1);
|
||||||
|
doubleSpinBoxNMix->setSingleStep(0.01);
|
||||||
|
doubleSpinBoxNMix->setValue(0);
|
||||||
|
|
||||||
|
horizontalLayout_8->addWidget(doubleSpinBoxNMix);
|
||||||
|
|
||||||
|
|
||||||
|
verticalLayout_6->addLayout(horizontalLayout_8);
|
||||||
|
|
||||||
|
horizontalLayout_9 = new QHBoxLayout();
|
||||||
|
horizontalLayout_9->setObjectName(QString::fromUtf8("horizontalLayout_9"));
|
||||||
|
label_22 = new QLabel(controlTab);
|
||||||
|
label_22->setObjectName(QString::fromUtf8("label_22"));
|
||||||
|
label_22->setFont(font2);
|
||||||
|
|
||||||
|
horizontalLayout_9->addWidget(label_22);
|
||||||
|
|
||||||
|
sliderTargetMix = new QSlider(controlTab);
|
||||||
|
sliderTargetMix->setObjectName(QString::fromUtf8("sliderTargetMix"));
|
||||||
|
sizePolicy.setHeightForWidth(sliderTargetMix->sizePolicy().hasHeightForWidth());
|
||||||
|
sliderTargetMix->setSizePolicy(sizePolicy);
|
||||||
|
sliderTargetMix->setValue(0);
|
||||||
|
sliderTargetMix->setSliderPosition(0);
|
||||||
|
sliderTargetMix->setOrientation(Qt::Horizontal);
|
||||||
|
|
||||||
|
horizontalLayout_9->addWidget(sliderTargetMix);
|
||||||
|
|
||||||
|
doubleSpinBoxTargetMix = new QDoubleSpinBox(controlTab);
|
||||||
|
doubleSpinBoxTargetMix->setObjectName(QString::fromUtf8("doubleSpinBoxTargetMix"));
|
||||||
|
sizePolicy1.setHeightForWidth(doubleSpinBoxTargetMix->sizePolicy().hasHeightForWidth());
|
||||||
|
doubleSpinBoxTargetMix->setSizePolicy(sizePolicy1);
|
||||||
|
doubleSpinBoxTargetMix->setMaximum(1);
|
||||||
|
doubleSpinBoxTargetMix->setSingleStep(0.01);
|
||||||
|
doubleSpinBoxTargetMix->setValue(0);
|
||||||
|
|
||||||
|
horizontalLayout_9->addWidget(doubleSpinBoxTargetMix);
|
||||||
|
|
||||||
|
|
||||||
|
verticalLayout_6->addLayout(horizontalLayout_9);
|
||||||
|
|
||||||
verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
|
verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
|
||||||
|
|
||||||
verticalLayout_6->addItem(verticalSpacer);
|
verticalLayout_6->addItem(verticalSpacer);
|
||||||
@ -749,13 +771,41 @@ public:
|
|||||||
|
|
||||||
horizontalLayout_5->addLayout(verticalLayout_6);
|
horizontalLayout_5->addLayout(verticalLayout_6);
|
||||||
|
|
||||||
verticalLayout_2 = new QVBoxLayout();
|
verticalLayout = new QVBoxLayout();
|
||||||
verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
|
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
|
||||||
label_3 = new QLabel(controlTab);
|
label_3 = new QLabel(controlTab);
|
||||||
label_3->setObjectName(QString::fromUtf8("label_3"));
|
label_3->setObjectName(QString::fromUtf8("label_3"));
|
||||||
label_3->setFont(font1);
|
label_3->setFont(font1);
|
||||||
|
|
||||||
verticalLayout_2->addWidget(label_3);
|
verticalLayout->addWidget(label_3);
|
||||||
|
|
||||||
|
listWidgetSounds = new QListWidget(controlTab);
|
||||||
|
listWidgetSounds->setObjectName(QString::fromUtf8("listWidgetSounds"));
|
||||||
|
|
||||||
|
verticalLayout->addWidget(listWidgetSounds);
|
||||||
|
|
||||||
|
horizontalLayout_2 = new QHBoxLayout();
|
||||||
|
horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
|
||||||
|
pushButtonLoadSound = new QPushButton(controlTab);
|
||||||
|
pushButtonLoadSound->setObjectName(QString::fromUtf8("pushButtonLoadSound"));
|
||||||
|
pushButtonLoadSound->setFont(font);
|
||||||
|
|
||||||
|
horizontalLayout_2->addWidget(pushButtonLoadSound);
|
||||||
|
|
||||||
|
pushButtonDeleteSound = new QPushButton(controlTab);
|
||||||
|
pushButtonDeleteSound->setObjectName(QString::fromUtf8("pushButtonDeleteSound"));
|
||||||
|
pushButtonDeleteSound->setFont(font);
|
||||||
|
|
||||||
|
horizontalLayout_2->addWidget(pushButtonDeleteSound);
|
||||||
|
|
||||||
|
|
||||||
|
verticalLayout->addLayout(horizontalLayout_2);
|
||||||
|
|
||||||
|
pushButtonClearBrain = new QPushButton(controlTab);
|
||||||
|
pushButtonClearBrain->setObjectName(QString::fromUtf8("pushButtonClearBrain"));
|
||||||
|
pushButtonClearBrain->setFont(font);
|
||||||
|
|
||||||
|
verticalLayout->addWidget(pushButtonClearBrain);
|
||||||
|
|
||||||
horizontalLayout_4 = new QHBoxLayout();
|
horizontalLayout_4 = new QHBoxLayout();
|
||||||
horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4"));
|
horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4"));
|
||||||
@ -773,7 +823,7 @@ public:
|
|||||||
horizontalLayout_4->addWidget(spinBoxBlockSize);
|
horizontalLayout_4->addWidget(spinBoxBlockSize);
|
||||||
|
|
||||||
|
|
||||||
verticalLayout_2->addLayout(horizontalLayout_4);
|
verticalLayout->addLayout(horizontalLayout_4);
|
||||||
|
|
||||||
horizontalLayout_6 = new QHBoxLayout();
|
horizontalLayout_6 = new QHBoxLayout();
|
||||||
horizontalLayout_6->setObjectName(QString::fromUtf8("horizontalLayout_6"));
|
horizontalLayout_6->setObjectName(QString::fromUtf8("horizontalLayout_6"));
|
||||||
@ -792,24 +842,24 @@ public:
|
|||||||
horizontalLayout_6->addWidget(doubleSpinBoxBlockOverlap);
|
horizontalLayout_6->addWidget(doubleSpinBoxBlockOverlap);
|
||||||
|
|
||||||
|
|
||||||
verticalLayout_2->addLayout(horizontalLayout_6);
|
verticalLayout->addLayout(horizontalLayout_6);
|
||||||
|
|
||||||
gridLayout = new QGridLayout();
|
gridLayout = new QGridLayout();
|
||||||
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
|
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
|
||||||
radioButton_gaussian = new QRadioButton(controlTab);
|
radioButton_hamming = new QRadioButton(controlTab);
|
||||||
buttonGroup = new QButtonGroup(MainWindow);
|
buttonGroup = new QButtonGroup(MainWindow);
|
||||||
buttonGroup->setObjectName(QString::fromUtf8("buttonGroup"));
|
buttonGroup->setObjectName(QString::fromUtf8("buttonGroup"));
|
||||||
buttonGroup->addButton(radioButton_gaussian);
|
|
||||||
radioButton_gaussian->setObjectName(QString::fromUtf8("radioButton_gaussian"));
|
|
||||||
|
|
||||||
gridLayout->addWidget(radioButton_gaussian, 3, 1, 1, 1);
|
|
||||||
|
|
||||||
radioButton_hamming = new QRadioButton(controlTab);
|
|
||||||
buttonGroup->addButton(radioButton_hamming);
|
buttonGroup->addButton(radioButton_hamming);
|
||||||
radioButton_hamming->setObjectName(QString::fromUtf8("radioButton_hamming"));
|
radioButton_hamming->setObjectName(QString::fromUtf8("radioButton_hamming"));
|
||||||
|
|
||||||
gridLayout->addWidget(radioButton_hamming, 4, 1, 1, 1);
|
gridLayout->addWidget(radioButton_hamming, 4, 1, 1, 1);
|
||||||
|
|
||||||
|
radioButton_gaussian = new QRadioButton(controlTab);
|
||||||
|
buttonGroup->addButton(radioButton_gaussian);
|
||||||
|
radioButton_gaussian->setObjectName(QString::fromUtf8("radioButton_gaussian"));
|
||||||
|
|
||||||
|
gridLayout->addWidget(radioButton_gaussian, 3, 1, 1, 1);
|
||||||
|
|
||||||
radioButton_dodgy = new QRadioButton(controlTab);
|
radioButton_dodgy = new QRadioButton(controlTab);
|
||||||
buttonGroup->addButton(radioButton_dodgy);
|
buttonGroup->addButton(radioButton_dodgy);
|
||||||
radioButton_dodgy->setObjectName(QString::fromUtf8("radioButton_dodgy"));
|
radioButton_dodgy->setObjectName(QString::fromUtf8("radioButton_dodgy"));
|
||||||
@ -853,13 +903,13 @@ public:
|
|||||||
gridLayout->addWidget(label_4, 2, 0, 1, 1);
|
gridLayout->addWidget(label_4, 2, 0, 1, 1);
|
||||||
|
|
||||||
|
|
||||||
verticalLayout_2->addLayout(gridLayout);
|
verticalLayout->addLayout(gridLayout);
|
||||||
|
|
||||||
pushButtonGenerate = new QPushButton(controlTab);
|
pushButtonGenerate = new QPushButton(controlTab);
|
||||||
pushButtonGenerate->setObjectName(QString::fromUtf8("pushButtonGenerate"));
|
pushButtonGenerate->setObjectName(QString::fromUtf8("pushButtonGenerate"));
|
||||||
pushButtonGenerate->setFont(font);
|
pushButtonGenerate->setFont(font);
|
||||||
|
|
||||||
verticalLayout_2->addWidget(pushButtonGenerate);
|
verticalLayout->addWidget(pushButtonGenerate);
|
||||||
|
|
||||||
horizontalLayout_7 = new QHBoxLayout();
|
horizontalLayout_7 = new QHBoxLayout();
|
||||||
horizontalLayout_7->setObjectName(QString::fromUtf8("horizontalLayout_7"));
|
horizontalLayout_7->setObjectName(QString::fromUtf8("horizontalLayout_7"));
|
||||||
@ -876,50 +926,7 @@ public:
|
|||||||
horizontalLayout_7->addWidget(pushButtonSaveBrain);
|
horizontalLayout_7->addWidget(pushButtonSaveBrain);
|
||||||
|
|
||||||
|
|
||||||
verticalLayout_2->addLayout(horizontalLayout_7);
|
verticalLayout->addLayout(horizontalLayout_7);
|
||||||
|
|
||||||
verticalSpacer_2 = new QSpacerItem(20, 508, QSizePolicy::Minimum, QSizePolicy::Expanding);
|
|
||||||
|
|
||||||
verticalLayout_2->addItem(verticalSpacer_2);
|
|
||||||
|
|
||||||
|
|
||||||
horizontalLayout_5->addLayout(verticalLayout_2);
|
|
||||||
|
|
||||||
verticalLayout = new QVBoxLayout();
|
|
||||||
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
|
|
||||||
label_5 = new QLabel(controlTab);
|
|
||||||
label_5->setObjectName(QString::fromUtf8("label_5"));
|
|
||||||
label_5->setFont(font);
|
|
||||||
|
|
||||||
verticalLayout->addWidget(label_5);
|
|
||||||
|
|
||||||
listWidgetSounds = new QListWidget(controlTab);
|
|
||||||
listWidgetSounds->setObjectName(QString::fromUtf8("listWidgetSounds"));
|
|
||||||
|
|
||||||
verticalLayout->addWidget(listWidgetSounds);
|
|
||||||
|
|
||||||
horizontalLayout_2 = new QHBoxLayout();
|
|
||||||
horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
|
|
||||||
pushButtonLoadSound = new QPushButton(controlTab);
|
|
||||||
pushButtonLoadSound->setObjectName(QString::fromUtf8("pushButtonLoadSound"));
|
|
||||||
pushButtonLoadSound->setFont(font);
|
|
||||||
|
|
||||||
horizontalLayout_2->addWidget(pushButtonLoadSound);
|
|
||||||
|
|
||||||
pushButtonDeleteSound = new QPushButton(controlTab);
|
|
||||||
pushButtonDeleteSound->setObjectName(QString::fromUtf8("pushButtonDeleteSound"));
|
|
||||||
pushButtonDeleteSound->setFont(font);
|
|
||||||
|
|
||||||
horizontalLayout_2->addWidget(pushButtonDeleteSound);
|
|
||||||
|
|
||||||
pushButtonClearBrain = new QPushButton(controlTab);
|
|
||||||
pushButtonClearBrain->setObjectName(QString::fromUtf8("pushButtonClearBrain"));
|
|
||||||
pushButtonClearBrain->setFont(font);
|
|
||||||
|
|
||||||
horizontalLayout_2->addWidget(pushButtonClearBrain);
|
|
||||||
|
|
||||||
|
|
||||||
verticalLayout->addLayout(horizontalLayout_2);
|
|
||||||
|
|
||||||
|
|
||||||
horizontalLayout_5->addLayout(verticalLayout);
|
horizontalLayout_5->addLayout(verticalLayout);
|
||||||
@ -1070,6 +1077,8 @@ public:
|
|||||||
QObject::connect(sliderSlideError, SIGNAL(valueChanged(int)), MainWindow, SLOT(slide_error(int)));
|
QObject::connect(sliderSlideError, SIGNAL(valueChanged(int)), MainWindow, SLOT(slide_error(int)));
|
||||||
QObject::connect(doubleSpinBoxStickyness, SIGNAL(valueChanged(double)), MainWindow, SLOT(stickyness_slot(double)));
|
QObject::connect(doubleSpinBoxStickyness, SIGNAL(valueChanged(double)), MainWindow, SLOT(stickyness_slot(double)));
|
||||||
QObject::connect(sliderStickyness, SIGNAL(valueChanged(int)), MainWindow, SLOT(stickyness_slot(int)));
|
QObject::connect(sliderStickyness, SIGNAL(valueChanged(int)), MainWindow, SLOT(stickyness_slot(int)));
|
||||||
|
QObject::connect(doubleSpinBoxAutotune, SIGNAL(valueChanged(double)), MainWindow, SLOT(autotune(double)));
|
||||||
|
QObject::connect(sliderAutotune, SIGNAL(sliderMoved(int)), MainWindow, SLOT(autotune(int)));
|
||||||
|
|
||||||
tabWidget->setCurrentIndex(0);
|
tabWidget->setCurrentIndex(0);
|
||||||
|
|
||||||
@ -1079,13 +1088,13 @@ public:
|
|||||||
|
|
||||||
void retranslateUi(QMainWindow *MainWindow)
|
void retranslateUi(QMainWindow *MainWindow)
|
||||||
{
|
{
|
||||||
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "samplebrain 0.10", 0, QApplication::UnicodeUTF8));
|
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "samplebrain 0.11", 0, QApplication::UnicodeUTF8));
|
||||||
label_19->setText(QApplication::translate("MainWindow", "brain tweaks", 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));
|
label_6->setText(QApplication::translate("MainWindow", "fft / mfcc", 0, QApplication::UnicodeUTF8));
|
||||||
#ifndef QT_NO_TOOLTIP
|
#ifndef QT_NO_TOOLTIP
|
||||||
sliderRatio->setToolTip(QApplication::translate("MainWindow", "plain fft match vs mfcc values ", 0, QApplication::UnicodeUTF8));
|
sliderRatio->setToolTip(QApplication::translate("MainWindow", "plain fft match vs mfcc values ", 0, QApplication::UnicodeUTF8));
|
||||||
#endif // QT_NO_TOOLTIP
|
#endif // QT_NO_TOOLTIP
|
||||||
label_20->setText(QApplication::translate("MainWindow", "freq & dynamics / freq only", 0, QApplication::UnicodeUTF8));
|
label_20->setText(QApplication::translate("MainWindow", "dynamics / freq", 0, QApplication::UnicodeUTF8));
|
||||||
#ifndef QT_NO_TOOLTIP
|
#ifndef QT_NO_TOOLTIP
|
||||||
sliderNRatio->setToolTip(QApplication::translate("MainWindow", "match original or normalised blocks", 0, QApplication::UnicodeUTF8));
|
sliderNRatio->setToolTip(QApplication::translate("MainWindow", "match original or normalised blocks", 0, QApplication::UnicodeUTF8));
|
||||||
#endif // QT_NO_TOOLTIP
|
#endif // QT_NO_TOOLTIP
|
||||||
@ -1120,7 +1129,7 @@ public:
|
|||||||
#endif // QT_NO_TOOLTIP
|
#endif // QT_NO_TOOLTIP
|
||||||
label_30->setText(QApplication::translate("MainWindow", "stickyness", 0, QApplication::UnicodeUTF8));
|
label_30->setText(QApplication::translate("MainWindow", "stickyness", 0, QApplication::UnicodeUTF8));
|
||||||
#ifndef QT_NO_TOOLTIP
|
#ifndef QT_NO_TOOLTIP
|
||||||
sliderStickyness->setToolTip(QApplication::translate("MainWindow", "how long it takes for the novelty to wear off", 0, QApplication::UnicodeUTF8));
|
sliderStickyness->setToolTip(QApplication::translate("MainWindow", "prioritise brain order over closeness", 0, QApplication::UnicodeUTF8));
|
||||||
#endif // QT_NO_TOOLTIP
|
#endif // QT_NO_TOOLTIP
|
||||||
#ifndef QT_NO_TOOLTIP
|
#ifndef QT_NO_TOOLTIP
|
||||||
label_28->setToolTip(QString());
|
label_28->setToolTip(QString());
|
||||||
@ -1140,7 +1149,7 @@ public:
|
|||||||
#ifndef QT_NO_TOOLTIP
|
#ifndef QT_NO_TOOLTIP
|
||||||
radioButtonAlgoRevBasic->setToolTip(QApplication::translate("MainWindow", "full brain reverse search", 0, QApplication::UnicodeUTF8));
|
radioButtonAlgoRevBasic->setToolTip(QApplication::translate("MainWindow", "full brain reverse search", 0, QApplication::UnicodeUTF8));
|
||||||
#endif // QT_NO_TOOLTIP
|
#endif // QT_NO_TOOLTIP
|
||||||
radioButtonAlgoRevBasic->setText(QApplication::translate("MainWindow", "rev basic", 0, QApplication::UnicodeUTF8));
|
radioButtonAlgoRevBasic->setText(QApplication::translate("MainWindow", "rev", 0, QApplication::UnicodeUTF8));
|
||||||
#ifndef QT_NO_TOOLTIP
|
#ifndef QT_NO_TOOLTIP
|
||||||
radioButtonSynaptic->setToolTip(QApplication::translate("MainWindow", "search based on synapse connections", 0, QApplication::UnicodeUTF8));
|
radioButtonSynaptic->setToolTip(QApplication::translate("MainWindow", "search based on synapse connections", 0, QApplication::UnicodeUTF8));
|
||||||
#endif // QT_NO_TOOLTIP
|
#endif // QT_NO_TOOLTIP
|
||||||
@ -1168,15 +1177,6 @@ public:
|
|||||||
#endif // QT_NO_TOOLTIP
|
#endif // QT_NO_TOOLTIP
|
||||||
#ifndef QT_NO_TOOLTIP
|
#ifndef QT_NO_TOOLTIP
|
||||||
spinBoxSlideError->setToolTip(QApplication::translate("MainWindow", "how many connections to search (ordered in closeness)", 0, QApplication::UnicodeUTF8));
|
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
|
|
||||||
sliderNMix->setToolTip(QApplication::translate("MainWindow", "mix in the normalised blocks", 0, QApplication::UnicodeUTF8));
|
|
||||||
#endif // QT_NO_TOOLTIP
|
|
||||||
label_22->setText(QApplication::translate("MainWindow", "brain / target", 0, QApplication::UnicodeUTF8));
|
|
||||||
#ifndef QT_NO_TOOLTIP
|
|
||||||
sliderTargetMix->setToolTip(QApplication::translate("MainWindow", "mix in the original blocks", 0, QApplication::UnicodeUTF8));
|
|
||||||
#endif // QT_NO_TOOLTIP
|
#endif // QT_NO_TOOLTIP
|
||||||
label_16->setText(QApplication::translate("MainWindow", "target sound", 0, QApplication::UnicodeUTF8));
|
label_16->setText(QApplication::translate("MainWindow", "target sound", 0, QApplication::UnicodeUTF8));
|
||||||
pushButtonLoadTarget->setText(QApplication::translate("MainWindow", "load target", 0, QApplication::UnicodeUTF8));
|
pushButtonLoadTarget->setText(QApplication::translate("MainWindow", "load target", 0, QApplication::UnicodeUTF8));
|
||||||
@ -1192,11 +1192,27 @@ public:
|
|||||||
radioButton_rectangleTarget->setText(QApplication::translate("MainWindow", "rectangle", 0, QApplication::UnicodeUTF8));
|
radioButton_rectangleTarget->setText(QApplication::translate("MainWindow", "rectangle", 0, QApplication::UnicodeUTF8));
|
||||||
label_14->setText(QApplication::translate("MainWindow", "window shape", 0, QApplication::UnicodeUTF8));
|
label_14->setText(QApplication::translate("MainWindow", "window shape", 0, QApplication::UnicodeUTF8));
|
||||||
pushButtonGenerateTarget->setText(QApplication::translate("MainWindow", "(re)generate blocks", 0, QApplication::UnicodeUTF8));
|
pushButtonGenerateTarget->setText(QApplication::translate("MainWindow", "(re)generate blocks", 0, QApplication::UnicodeUTF8));
|
||||||
label_3->setText(QApplication::translate("MainWindow", "brain parameters", 0, QApplication::UnicodeUTF8));
|
label_23->setText(QApplication::translate("MainWindow", "mix", 0, QApplication::UnicodeUTF8));
|
||||||
|
label_31->setText(QApplication::translate("MainWindow", "autotune", 0, QApplication::UnicodeUTF8));
|
||||||
|
#ifndef QT_NO_TOOLTIP
|
||||||
|
sliderAutotune->setToolTip(QApplication::translate("MainWindow", "amount to match the frequency", 0, QApplication::UnicodeUTF8));
|
||||||
|
#endif // QT_NO_TOOLTIP
|
||||||
|
label_21->setText(QApplication::translate("MainWindow", "dynamic / normalised ", 0, QApplication::UnicodeUTF8));
|
||||||
|
#ifndef QT_NO_TOOLTIP
|
||||||
|
sliderNMix->setToolTip(QApplication::translate("MainWindow", "mix in the normalised blocks", 0, QApplication::UnicodeUTF8));
|
||||||
|
#endif // QT_NO_TOOLTIP
|
||||||
|
label_22->setText(QApplication::translate("MainWindow", "brain / target", 0, QApplication::UnicodeUTF8));
|
||||||
|
#ifndef QT_NO_TOOLTIP
|
||||||
|
sliderTargetMix->setToolTip(QApplication::translate("MainWindow", "mix in the original blocks", 0, QApplication::UnicodeUTF8));
|
||||||
|
#endif // QT_NO_TOOLTIP
|
||||||
|
label_3->setText(QApplication::translate("MainWindow", "brain contents", 0, QApplication::UnicodeUTF8));
|
||||||
|
pushButtonLoadSound->setText(QApplication::translate("MainWindow", "load sound", 0, QApplication::UnicodeUTF8));
|
||||||
|
pushButtonDeleteSound->setText(QApplication::translate("MainWindow", "delete selected", 0, QApplication::UnicodeUTF8));
|
||||||
|
pushButtonClearBrain->setText(QApplication::translate("MainWindow", "clear brain", 0, QApplication::UnicodeUTF8));
|
||||||
label->setText(QApplication::translate("MainWindow", "block size", 0, QApplication::UnicodeUTF8));
|
label->setText(QApplication::translate("MainWindow", "block size", 0, QApplication::UnicodeUTF8));
|
||||||
label_2->setText(QApplication::translate("MainWindow", "block overlap", 0, QApplication::UnicodeUTF8));
|
label_2->setText(QApplication::translate("MainWindow", "block overlap", 0, QApplication::UnicodeUTF8));
|
||||||
radioButton_gaussian->setText(QApplication::translate("MainWindow", "gaussian", 0, QApplication::UnicodeUTF8));
|
|
||||||
radioButton_hamming->setText(QApplication::translate("MainWindow", "hamming", 0, QApplication::UnicodeUTF8));
|
radioButton_hamming->setText(QApplication::translate("MainWindow", "hamming", 0, QApplication::UnicodeUTF8));
|
||||||
|
radioButton_gaussian->setText(QApplication::translate("MainWindow", "gaussian", 0, QApplication::UnicodeUTF8));
|
||||||
radioButton_dodgy->setText(QApplication::translate("MainWindow", "dodgy", 0, QApplication::UnicodeUTF8));
|
radioButton_dodgy->setText(QApplication::translate("MainWindow", "dodgy", 0, QApplication::UnicodeUTF8));
|
||||||
radioButton_blackman->setText(QApplication::translate("MainWindow", "blackman", 0, QApplication::UnicodeUTF8));
|
radioButton_blackman->setText(QApplication::translate("MainWindow", "blackman", 0, QApplication::UnicodeUTF8));
|
||||||
radioButton_rectagle->setText(QApplication::translate("MainWindow", "rectangle", 0, QApplication::UnicodeUTF8));
|
radioButton_rectagle->setText(QApplication::translate("MainWindow", "rectangle", 0, QApplication::UnicodeUTF8));
|
||||||
@ -1207,10 +1223,6 @@ public:
|
|||||||
pushButtonGenerate->setText(QApplication::translate("MainWindow", "(re)generate brain", 0, QApplication::UnicodeUTF8));
|
pushButtonGenerate->setText(QApplication::translate("MainWindow", "(re)generate brain", 0, QApplication::UnicodeUTF8));
|
||||||
pushButtonLoadBrain->setText(QApplication::translate("MainWindow", "load brain", 0, QApplication::UnicodeUTF8));
|
pushButtonLoadBrain->setText(QApplication::translate("MainWindow", "load brain", 0, QApplication::UnicodeUTF8));
|
||||||
pushButtonSaveBrain->setText(QApplication::translate("MainWindow", "save brain", 0, QApplication::UnicodeUTF8));
|
pushButtonSaveBrain->setText(QApplication::translate("MainWindow", "save brain", 0, QApplication::UnicodeUTF8));
|
||||||
label_5->setText(QApplication::translate("MainWindow", "brain contents", 0, QApplication::UnicodeUTF8));
|
|
||||||
pushButtonLoadSound->setText(QApplication::translate("MainWindow", "load sound", 0, QApplication::UnicodeUTF8));
|
|
||||||
pushButtonDeleteSound->setText(QApplication::translate("MainWindow", "delete selected", 0, QApplication::UnicodeUTF8));
|
|
||||||
pushButtonClearBrain->setText(QApplication::translate("MainWindow", "clear brain", 0, QApplication::UnicodeUTF8));
|
|
||||||
tabWidget->setTabText(tabWidget->indexOf(controlTab), QApplication::translate("MainWindow", "search", 0, QApplication::UnicodeUTF8));
|
tabWidget->setTabText(tabWidget->indexOf(controlTab), QApplication::translate("MainWindow", "search", 0, QApplication::UnicodeUTF8));
|
||||||
tabWidget->setTabText(tabWidget->indexOf(logTab), QApplication::translate("MainWindow", "log", 0, QApplication::UnicodeUTF8));
|
tabWidget->setTabText(tabWidget->indexOf(logTab), QApplication::translate("MainWindow", "log", 0, QApplication::UnicodeUTF8));
|
||||||
pushButtonPlay->setText(QString());
|
pushButtonPlay->setText(QString());
|
||||||
@ -1228,4 +1240,4 @@ namespace Ui {
|
|||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
#endif // SAMPLEBRAINJ11878_H
|
#endif // SAMPLEBRAINPM4153_H
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include "process_thread.h"
|
#include "process_thread.h"
|
||||||
#include "audio_thread.h"
|
#include "audio_thread.h"
|
||||||
#include "pitchshift.h"
|
//#include "pitchshift.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ int main( int argc , char *argv[] ){
|
|||||||
MainWindow mainWin;
|
MainWindow mainWin;
|
||||||
mainWin.show();
|
mainWin.show();
|
||||||
|
|
||||||
pitchshift::init(44100);
|
//pitchshift::init(44100);
|
||||||
|
|
||||||
process_thread pt;
|
process_thread pt;
|
||||||
audio_thread at(pt);
|
audio_thread at(pt);
|
||||||
|
@ -25,7 +25,6 @@ SOURCES += MainWindow.cpp \
|
|||||||
../src/renderer.cpp \
|
../src/renderer.cpp \
|
||||||
../src/status.cpp \
|
../src/status.cpp \
|
||||||
../src/window.cpp \
|
../src/window.cpp \
|
||||||
../src/pitchshift.cpp \
|
|
||||||
../src/aquila/filter/MelFilterBank.cpp \
|
../src/aquila/filter/MelFilterBank.cpp \
|
||||||
../src/aquila/filter/MelFilter.cpp \
|
../src/aquila/filter/MelFilter.cpp \
|
||||||
../src/aquila/transform/Dct.cpp \
|
../src/aquila/transform/Dct.cpp \
|
||||||
@ -39,7 +38,7 @@ SOURCES += MainWindow.cpp \
|
|||||||
../../../jellyfish/src/core/stream.cpp
|
../../../jellyfish/src/core/stream.cpp
|
||||||
|
|
||||||
INCLUDEPATH += ../src
|
INCLUDEPATH += ../src
|
||||||
LIBS += -L.. -lrubberband -lportaudio -lfftw3 -lsndfile -llo -ldl -lpthread -lm
|
LIBS += -L.. -lportaudio -lfftw3 -lsndfile -llo -ldl -lpthread -lm
|
||||||
#CONFIG+=debug
|
#CONFIG+=debug
|
||||||
|
|
||||||
QMAKE_CXXFLAGS += -Wall -Wno-unused -std=c++11 -DDONT_USE_FLUXA_GRAPH
|
QMAKE_CXXFLAGS += -Wall -Wno-unused -std=c++11 -DDONT_USE_FLUXA_GRAPH
|
||||||
|
@ -65,7 +65,9 @@ float FFT::calculate_dominant_freq() {
|
|||||||
highest=t;
|
highest=t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return index * (SRATE/(float)m_length);
|
float freq = index * (SRATE/(float)m_length);
|
||||||
|
if (freq<0.01) freq=0.01;
|
||||||
|
return freq;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FFT::calculate_bins() {
|
void FFT::calculate_bins() {
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
#include "renderer.h"
|
#include "renderer.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "pitchshift.h"
|
//#include "pitchshift.h"
|
||||||
|
|
||||||
using namespace spiralcore;
|
using namespace spiralcore;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
@ -157,14 +157,17 @@ void renderer::render(u32 nframes, float *buf) {
|
|||||||
// get the sample offset into the buffer
|
// get the sample offset into the buffer
|
||||||
s32 offset = i->m_time-m_render_time;
|
s32 offset = i->m_time-m_render_time;
|
||||||
|
|
||||||
|
u32 block_length = pcm.get_length();
|
||||||
|
|
||||||
// assume midway through block
|
// assume midway through block
|
||||||
u32 block_start = offset;
|
u32 block_start = offset;
|
||||||
u32 buffer_start = 0;
|
u32 buffer_start = 0;
|
||||||
if (offset<0) {
|
if (offset<0) {
|
||||||
block_start=-offset;
|
block_start=-offset;
|
||||||
if (block_start>=pcm.get_length() ||
|
if (block_start>=block_length &&
|
||||||
i->m_position>=pcm.get_length()) i->m_finished=true;
|
i->m_position>=block_length) {
|
||||||
|
i->m_finished=true;
|
||||||
|
}
|
||||||
} else { // block is midway through buffer
|
} else { // block is midway through buffer
|
||||||
block_start=0;
|
block_start=0;
|
||||||
buffer_start=offset;
|
buffer_start=offset;
|
||||||
@ -174,35 +177,54 @@ void renderer::render(u32 nframes, float *buf) {
|
|||||||
// cerr<<"block start:"<<block_start<<endl;
|
// cerr<<"block start:"<<block_start<<endl;
|
||||||
// cerr<<"buffer start:"<<buffer_start<<endl;
|
// cerr<<"buffer start:"<<buffer_start<<endl;
|
||||||
|
|
||||||
float pitch_scale = m_target.get_block(i->m_tgt_index).get_freq() /
|
|
||||||
m_source.get_block(i->m_index).get_freq();
|
|
||||||
|
|
||||||
// fade in/out autotune
|
// fade in/out autotune
|
||||||
pitch_scale = pitch_scale*m_autotune + 1.0f*(1-m_autotune);
|
//pitch_scale = pitch_scale*m_autotune + 1.0f*(1-m_autotune);
|
||||||
|
|
||||||
|
float pitch_scale = 1;
|
||||||
|
|
||||||
|
if (m_autotune>0) {
|
||||||
|
pitch_scale = m_target.get_block(i->m_tgt_index).get_freq() /
|
||||||
|
m_source.get_block(i->m_index).get_freq();
|
||||||
|
float max = 1+(m_autotune*m_autotune)*100.0f;
|
||||||
|
if (pitch_scale>(max)) pitch_scale=max;
|
||||||
|
if (pitch_scale<(1/max)) pitch_scale=1/max;
|
||||||
|
}
|
||||||
|
|
||||||
//pitchshift::process(pcm,pitch_scale,render_pcm);
|
//pitchshift::process(pcm,pitch_scale,render_pcm);
|
||||||
|
|
||||||
|
|
||||||
if (!i->m_finished) {
|
if (!i->m_finished) {
|
||||||
// mix in
|
// mix in
|
||||||
u32 buffer_pos = buffer_start;
|
u32 buffer_pos = buffer_start;
|
||||||
u32 block_pos = block_start;
|
u32 block_pos = block_start;
|
||||||
u32 block_end = pcm.get_length();
|
u32 block_end = pcm.get_length();
|
||||||
|
|
||||||
|
while (i->m_position<block_end && buffer_pos<nframes) {
|
||||||
|
|
||||||
while (block_pos<block_end && buffer_pos<nframes) {
|
|
||||||
// mix with normalised version
|
// mix with normalised version
|
||||||
float brain_sample = (pcm[i->m_position]*(1-m_n_mix)+
|
float brain_sample = (pcm[i->m_position]*(1-m_n_mix)+
|
||||||
n_pcm[block_pos]*m_n_mix);
|
n_pcm[i->m_position]*m_n_mix);
|
||||||
|
|
||||||
// for mixing with target audio
|
float target_sample = 0;
|
||||||
float target_sample = target_pcm[block_pos];
|
|
||||||
|
// if playback scale is lower than target then we may
|
||||||
|
// run off the end of the target block
|
||||||
|
if (block_pos<block_length) {
|
||||||
|
// for mixing with target audio
|
||||||
|
target_sample = target_pcm[block_pos];
|
||||||
|
}
|
||||||
|
|
||||||
buf[buffer_pos]+=(brain_sample*(1-m_target_mix) +
|
buf[buffer_pos]+=(brain_sample*(1-m_target_mix) +
|
||||||
target_sample*m_target_mix)*0.2*m_volume;
|
target_sample*m_target_mix)*0.2*m_volume;
|
||||||
|
|
||||||
i->m_position+=pitch_scale;
|
i->m_position+=pitch_scale;
|
||||||
|
|
||||||
|
// repeat fast blocks if we are still playing the source
|
||||||
|
if (block_pos<block_length &&
|
||||||
|
i->m_position>block_end) {
|
||||||
|
i->m_position=0;
|
||||||
|
}
|
||||||
|
|
||||||
++buffer_pos;
|
++buffer_pos;
|
||||||
++block_pos;
|
++block_pos;
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,7 @@ namespace spiralcore {
|
|||||||
void set_target_mix(float s) { m_target_mix=s; }
|
void set_target_mix(float s) { m_target_mix=s; }
|
||||||
void set_slide_error(double s) { m_slide_error=s; }
|
void set_slide_error(double s) { m_slide_error=s; }
|
||||||
void set_stretch(u32 s) { m_stretch=s; }
|
void set_stretch(u32 s) { m_stretch=s; }
|
||||||
|
void set_autotune(float s) { m_autotune=s; }
|
||||||
search_params *get_params() { return &m_search_params; }
|
search_params *get_params() { return &m_search_params; }
|
||||||
|
|
||||||
brain &get_source() { return m_source; }
|
brain &get_source() { return m_source; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user