diff --git a/samplebrain/interface/samplebrain.ui b/samplebrain/interface/samplebrain.ui
index b8e2f34..6a493a4 100644
--- a/samplebrain/interface/samplebrain.ui
+++ b/samplebrain/interface/samplebrain.ui
@@ -7,14 +7,14 @@
0
0
724
- 603
+ 613
- samplebrain 0.0.3
+ samplebrain 0.0.4
-
+
-
@@ -49,41 +49,6 @@
- -
-
-
-
-
-
-
- Comic Sans MS
- 75
- true
-
-
-
- Start
-
-
- false
-
-
-
- -
-
-
-
- Comic Sans MS
- 75
- true
-
-
-
- Stop
-
-
-
-
-
-
-
@@ -101,27 +66,24 @@
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 60
- 60
-
-
-
-
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 50
+
+
+ Qt::Horizontal
+
+
+
-
@@ -263,44 +225,18 @@
-
-
- -
-
-
-
- Comic Sans MS
- 75
- true
-
-
-
- Volume
-
-
-
- -
-
-
-
-
- 99
+
+
+ Qt::Vertical
-
-
- -
-
-
-
- Comic Sans MS
- 75
- true
-
+
+
+ 20
+ 40
+
-
- restart audio
-
-
+
@@ -792,13 +728,143 @@
+
+
+ log
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+
+ Comic Sans MS
+ 75
+ true
+
+
+
+
+
+
+
+ :/images/images/play.png:/images/images/play.png
+
+
+
+ 64
+ 64
+
+
+
+ true
+
+
+
+ -
+
+
+
+ Comic Sans MS
+ 75
+ true
+
+
+
+
+
+
+
+ :/images/images/pause.png:/images/images/pause.png
+
+
+
+ 64
+ 64
+
+
+
+ true
+
+
+
+ -
+
+
+
+
+
+
+ :/images/images/record.png:/images/images/record.png
+
+
+
+ 64
+ 64
+
+
+
+ true
+
+
+
+ -
+
+
+
+
+
+
+ :/images/images/stop.png:/images/images/stop.png
+
+
+
+ 64
+ 64
+
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ 99
+
+
+
+
+
-
+
+
+
pushButtonPlay
@@ -832,22 +898,6 @@
-
- dialRatio
- sliderMoved(int)
- MainWindow
- ratio_slot(int)
-
-
- 109
- 154
-
-
- 399
- 301
-
-
-
doubleSpinBoxRatio
valueChanged(double)
@@ -1104,22 +1154,6 @@
-
- pushButtonRestartAudio
- released()
- MainWindow
- restart_audio()
-
-
- 274
- 533
-
-
- 361
- 301
-
-
-
radioButton_bartlett
toggled(bool)
@@ -1376,6 +1410,54 @@
+
+ sliderRatio
+ valueChanged(int)
+ MainWindow
+ ratio_slot(int)
+
+
+ 189
+ 141
+
+
+ 361
+ 306
+
+
+
+
+ pushButtonStop
+ released()
+ MainWindow
+ stop_record()
+
+
+ 144
+ 543
+
+
+ 361
+ 306
+
+
+
+
+ pushButtonRecord
+ released()
+ MainWindow
+ record()
+
+
+ 236
+ 543
+
+
+ 361
+ 306
+
+
+
play_slot()
@@ -1417,5 +1499,7 @@
window_target_hamming(bool)
window_target_hann(bool)
window_target_rectangle(bool)
+ record()
+ stop_record()
diff --git a/samplebrain/qt/MainWindow.cpp b/samplebrain/qt/MainWindow.cpp
index 243b9d5..9857ca1 100644
--- a/samplebrain/qt/MainWindow.cpp
+++ b/samplebrain/qt/MainWindow.cpp
@@ -12,4 +12,6 @@ MainWindow::MainWindow()
m_audio_address = lo_address_new_from_url("osc.udp://localhost:8888");
m_process_address = lo_address_new_from_url("osc.udp://localhost:8889");
+ m_save_wav="";
+ m_record_id=0;
}
diff --git a/samplebrain/qt/MainWindow.h b/samplebrain/qt/MainWindow.h
index 6a97907..9ce2185 100644
--- a/samplebrain/qt/MainWindow.h
+++ b/samplebrain/qt/MainWindow.h
@@ -3,6 +3,7 @@
#include
#include
+#include
#include "window.h"
using namespace std;
@@ -22,7 +23,7 @@ protected:
private slots:
void play_slot() { lo_send(m_audio_address,"/start",""); }
- void stop_slot() { lo_send(m_audio_address,"/stop",""); }
+ 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 fft1_start_slot(int s) { lo_send(m_audio_address,"/fft1_start","i",s); }
@@ -91,7 +92,36 @@ private slots:
void window_target_hann(bool s) { if (s) lo_send(m_process_address,"/target_window_type","i",window::HANN); }
void window_target_rectangle(bool s) { if (s) lo_send(m_process_address,"/target_window_type","i",window::RECTANGLE); }
+ void record() {
+ if (m_save_wav=="") {
+ QString s=QFileDialog::getSaveFileName(
+ this,
+ QString("Select an wav file"),
+ ".",
+ QString("Sounds (*.wav)"));
+ m_save_wav = s.toStdString();
+ // chop off .wav
+ size_t pos = m_save_wav.find_last_of(".");
+ if (pos!=string::npos) {
+ m_save_wav = m_save_wav.substr(0,pos);
+ }
+
+ }
+
+ char fn[1024];
+ snprintf(fn,1024,"%s-%i.wav",m_save_wav.c_str(),m_record_id);
+ lo_send(m_process_address,"/record","s",fn);
+ cerr<set_playing(true);
}
- if (name=="/stop") {
+ if (name=="/pause") {
m_renderer->set_playing(false);
}
if (name=="/ratio") {
diff --git a/samplebrain/qt/audio_thread.h b/samplebrain/qt/audio_thread.h
index 79febc1..59b3b74 100644
--- a/samplebrain/qt/audio_thread.h
+++ b/samplebrain/qt/audio_thread.h
@@ -10,6 +10,8 @@ namespace spiralcore {
class audio_thread {
public:
audio_thread(process_thread &p);
+ ~audio_thread();
+
void process(sample &left, sample &right);
static void run_audio(void* c, unsigned int frames);
diff --git a/samplebrain/qt/generated/ui_samplebrain.h b/samplebrain/qt/generated/ui_samplebrain.h
index 1888a97..665edfb 100644
--- a/samplebrain/qt/generated/ui_samplebrain.h
+++ b/samplebrain/qt/generated/ui_samplebrain.h
@@ -1,14 +1,14 @@
/********************************************************************************
-** Form generated from reading UI file 'samplebrainSB4993.ui'
+** Form generated from reading UI file 'samplebrainMg4993.ui'
**
-** Created: Sat Jul 18 19:57:06 2015
+** Created: Sun Jul 19 11:35:24 2015
** by: Qt User Interface Compiler version 4.8.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
-#ifndef SAMPLEBRAINSB4993_H
-#define SAMPLEBRAINSB4993_H
+#ifndef SAMPLEBRAINMG4993_H
+#define SAMPLEBRAINMG4993_H
#include
#include
@@ -22,8 +22,10 @@
#include
#include
#include
+#include
#include
#include
+#include
#include
#include
#include
@@ -37,18 +39,15 @@ class Ui_MainWindow
{
public:
QWidget *centralwidget;
- QHBoxLayout *horizontalLayout;
+ QVBoxLayout *verticalLayout_7;
QTabWidget *tabWidget;
QWidget *controlTab;
QHBoxLayout *horizontalLayout_8;
QVBoxLayout *verticalLayout_3;
QLabel *label_19;
- QHBoxLayout *horizontalLayout_12;
- QPushButton *pushButtonPlay;
- QPushButton *pushButtonStop;
QHBoxLayout *horizontalLayout_16;
QLabel *label_6;
- QDial *dialRatio;
+ QSlider *sliderRatio;
QDoubleSpinBox *doubleSpinBoxRatio;
QVBoxLayout *verticalLayout_4;
QLabel *label_7;
@@ -66,10 +65,7 @@ public:
QHBoxLayout *horizontalLayout_11;
QLabel *label_12;
QSpinBox *spinBoxFFT2End;
- QLabel *label_13;
- QHBoxLayout *horizontalLayout_17;
- QDial *dialVolume;
- QPushButton *pushButtonRestartAudio;
+ QSpacerItem *verticalSpacer_3;
QVBoxLayout *verticalLayout_6;
QLabel *label_16;
QLabel *label_15;
@@ -124,17 +120,27 @@ public:
QPushButton *pushButtonLoadSound;
QPushButton *pushButtonDeleteSound;
QPushButton *pushButtonClearBrain;
+ QWidget *logTab;
+ QHBoxLayout *horizontalLayout_15;
+ QPlainTextEdit *plainTextEdit;
+ QHBoxLayout *horizontalLayout_12;
+ QPushButton *pushButtonPlay;
+ QPushButton *pushButtonStop;
+ QPushButton *pushButtonRecord;
+ QPushButton *pushButtonStopRecord;
+ QSpacerItem *horizontalSpacer;
+ QDial *dialVolume;
QStatusBar *statusbar;
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
- MainWindow->resize(724, 603);
+ MainWindow->resize(724, 613);
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
- horizontalLayout = new QHBoxLayout(centralwidget);
- horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
+ verticalLayout_7 = new QVBoxLayout(centralwidget);
+ verticalLayout_7->setObjectName(QString::fromUtf8("verticalLayout_7"));
tabWidget = new QTabWidget(centralwidget);
tabWidget->setObjectName(QString::fromUtf8("tabWidget"));
QFont font;
@@ -159,24 +165,6 @@ public:
verticalLayout_3->addWidget(label_19);
- horizontalLayout_12 = new QHBoxLayout();
- horizontalLayout_12->setObjectName(QString::fromUtf8("horizontalLayout_12"));
- pushButtonPlay = new QPushButton(controlTab);
- pushButtonPlay->setObjectName(QString::fromUtf8("pushButtonPlay"));
- pushButtonPlay->setFont(font);
- pushButtonPlay->setFlat(false);
-
- horizontalLayout_12->addWidget(pushButtonPlay);
-
- pushButtonStop = new QPushButton(controlTab);
- pushButtonStop->setObjectName(QString::fromUtf8("pushButtonStop"));
- pushButtonStop->setFont(font);
-
- horizontalLayout_12->addWidget(pushButtonStop);
-
-
- verticalLayout_3->addLayout(horizontalLayout_12);
-
horizontalLayout_16 = new QHBoxLayout();
horizontalLayout_16->setObjectName(QString::fromUtf8("horizontalLayout_16"));
label_6 = new QLabel(controlTab);
@@ -190,21 +178,21 @@ public:
horizontalLayout_16->addWidget(label_6);
- dialRatio = new QDial(controlTab);
- dialRatio->setObjectName(QString::fromUtf8("dialRatio"));
- dialRatio->setEnabled(true);
- QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
- sizePolicy.setHorizontalStretch(0);
- sizePolicy.setVerticalStretch(0);
- sizePolicy.setHeightForWidth(dialRatio->sizePolicy().hasHeightForWidth());
- dialRatio->setSizePolicy(sizePolicy);
- dialRatio->setMinimumSize(QSize(60, 60));
-
- horizontalLayout_16->addWidget(dialRatio);
-
verticalLayout_3->addLayout(horizontalLayout_16);
+ sliderRatio = new QSlider(controlTab);
+ sliderRatio->setObjectName(QString::fromUtf8("sliderRatio"));
+ QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
+ sizePolicy.setHorizontalStretch(0);
+ sizePolicy.setVerticalStretch(0);
+ sizePolicy.setHeightForWidth(sliderRatio->sizePolicy().hasHeightForWidth());
+ sliderRatio->setSizePolicy(sizePolicy);
+ sliderRatio->setValue(50);
+ sliderRatio->setOrientation(Qt::Horizontal);
+
+ verticalLayout_3->addWidget(sliderRatio);
+
doubleSpinBoxRatio = new QDoubleSpinBox(controlTab);
doubleSpinBoxRatio->setObjectName(QString::fromUtf8("doubleSpinBoxRatio"));
doubleSpinBoxRatio->setMaximum(1);
@@ -298,32 +286,13 @@ public:
verticalLayout_5->addLayout(horizontalLayout_11);
+ verticalSpacer_3 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
+
+ verticalLayout_5->addItem(verticalSpacer_3);
+
verticalLayout_3->addLayout(verticalLayout_5);
- label_13 = new QLabel(controlTab);
- label_13->setObjectName(QString::fromUtf8("label_13"));
- label_13->setFont(font);
-
- verticalLayout_3->addWidget(label_13);
-
- horizontalLayout_17 = new QHBoxLayout();
- horizontalLayout_17->setObjectName(QString::fromUtf8("horizontalLayout_17"));
- dialVolume = new QDial(controlTab);
- dialVolume->setObjectName(QString::fromUtf8("dialVolume"));
- dialVolume->setValue(99);
-
- horizontalLayout_17->addWidget(dialVolume);
-
- pushButtonRestartAudio = new QPushButton(controlTab);
- pushButtonRestartAudio->setObjectName(QString::fromUtf8("pushButtonRestartAudio"));
- pushButtonRestartAudio->setFont(font);
-
- horizontalLayout_17->addWidget(pushButtonRestartAudio);
-
-
- verticalLayout_3->addLayout(horizontalLayout_17);
-
horizontalLayout_8->addLayout(verticalLayout_3);
@@ -619,8 +588,75 @@ public:
horizontalLayout_5->addLayout(verticalLayout);
tabWidget->addTab(sampleTab, QString());
+ logTab = new QWidget();
+ logTab->setObjectName(QString::fromUtf8("logTab"));
+ horizontalLayout_15 = new QHBoxLayout(logTab);
+ horizontalLayout_15->setObjectName(QString::fromUtf8("horizontalLayout_15"));
+ plainTextEdit = new QPlainTextEdit(logTab);
+ plainTextEdit->setObjectName(QString::fromUtf8("plainTextEdit"));
- horizontalLayout->addWidget(tabWidget);
+ horizontalLayout_15->addWidget(plainTextEdit);
+
+ tabWidget->addTab(logTab, QString());
+
+ verticalLayout_7->addWidget(tabWidget);
+
+ horizontalLayout_12 = new QHBoxLayout();
+ horizontalLayout_12->setObjectName(QString::fromUtf8("horizontalLayout_12"));
+ pushButtonPlay = new QPushButton(centralwidget);
+ pushButtonPlay->setObjectName(QString::fromUtf8("pushButtonPlay"));
+ pushButtonPlay->setFont(font);
+ QIcon icon;
+ icon.addFile(QString::fromUtf8(":/images/images/play.png"), QSize(), QIcon::Normal, QIcon::Off);
+ pushButtonPlay->setIcon(icon);
+ pushButtonPlay->setIconSize(QSize(64, 64));
+ pushButtonPlay->setFlat(true);
+
+ horizontalLayout_12->addWidget(pushButtonPlay);
+
+ pushButtonStop = new QPushButton(centralwidget);
+ pushButtonStop->setObjectName(QString::fromUtf8("pushButtonStop"));
+ pushButtonStop->setFont(font);
+ QIcon icon1;
+ icon1.addFile(QString::fromUtf8(":/images/images/pause.png"), QSize(), QIcon::Normal, QIcon::Off);
+ pushButtonStop->setIcon(icon1);
+ pushButtonStop->setIconSize(QSize(64, 64));
+ pushButtonStop->setFlat(true);
+
+ horizontalLayout_12->addWidget(pushButtonStop);
+
+ pushButtonRecord = new QPushButton(centralwidget);
+ pushButtonRecord->setObjectName(QString::fromUtf8("pushButtonRecord"));
+ QIcon icon2;
+ icon2.addFile(QString::fromUtf8(":/images/images/record.png"), QSize(), QIcon::Normal, QIcon::Off);
+ pushButtonRecord->setIcon(icon2);
+ pushButtonRecord->setIconSize(QSize(64, 64));
+ pushButtonRecord->setFlat(true);
+
+ horizontalLayout_12->addWidget(pushButtonRecord);
+
+ pushButtonStopRecord = new QPushButton(centralwidget);
+ pushButtonStopRecord->setObjectName(QString::fromUtf8("pushButtonStopRecord"));
+ QIcon icon3;
+ icon3.addFile(QString::fromUtf8(":/images/images/stop.png"), QSize(), QIcon::Normal, QIcon::Off);
+ pushButtonStopRecord->setIcon(icon3);
+ pushButtonStopRecord->setIconSize(QSize(64, 64));
+ pushButtonStopRecord->setFlat(true);
+
+ horizontalLayout_12->addWidget(pushButtonStopRecord);
+
+ horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+
+ horizontalLayout_12->addItem(horizontalSpacer);
+
+ dialVolume = new QDial(centralwidget);
+ dialVolume->setObjectName(QString::fromUtf8("dialVolume"));
+ dialVolume->setValue(99);
+
+ horizontalLayout_12->addWidget(dialVolume);
+
+
+ verticalLayout_7->addLayout(horizontalLayout_12);
MainWindow->setCentralWidget(centralwidget);
statusbar = new QStatusBar(MainWindow);
@@ -630,7 +666,6 @@ public:
retranslateUi(MainWindow);
QObject::connect(pushButtonPlay, SIGNAL(released()), MainWindow, SLOT(play_slot()));
QObject::connect(pushButtonStop, SIGNAL(released()), MainWindow, SLOT(stop_slot()));
- QObject::connect(dialRatio, SIGNAL(sliderMoved(int)), MainWindow, SLOT(ratio_slot(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)));
@@ -647,7 +682,6 @@ public:
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(pushButtonRestartAudio, SIGNAL(released()), MainWindow, SLOT(restart_audio()));
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)));
@@ -664,6 +698,9 @@ public:
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(radioButton_rectangleTarget, SIGNAL(toggled(bool)), MainWindow, SLOT(window_target_rectangle(bool)));
+ QObject::connect(sliderRatio, SIGNAL(valueChanged(int)), MainWindow, SLOT(ratio_slot(int)));
+ QObject::connect(pushButtonStop, SIGNAL(released()), MainWindow, SLOT(stop_record()));
+ QObject::connect(pushButtonRecord, SIGNAL(released()), MainWindow, SLOT(record()));
tabWidget->setCurrentIndex(0);
@@ -673,10 +710,8 @@ public:
void retranslateUi(QMainWindow *MainWindow)
{
- MainWindow->setWindowTitle(QApplication::translate("MainWindow", "samplebrain 0.0.3", 0, QApplication::UnicodeUTF8));
+ MainWindow->setWindowTitle(QApplication::translate("MainWindow", "samplebrain 0.0.4", 0, QApplication::UnicodeUTF8));
label_19->setText(QApplication::translate("MainWindow", "tweakage", 0, QApplication::UnicodeUTF8));
- pushButtonPlay->setText(QApplication::translate("MainWindow", "Start", 0, QApplication::UnicodeUTF8));
- pushButtonStop->setText(QApplication::translate("MainWindow", "Stop", 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_9->setText(QApplication::translate("MainWindow", "Start", 0, QApplication::UnicodeUTF8));
@@ -684,8 +719,6 @@ public:
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_13->setText(QApplication::translate("MainWindow", "Volume", 0, QApplication::UnicodeUTF8));
- pushButtonRestartAudio->setText(QApplication::translate("MainWindow", "restart audio", 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));
@@ -722,6 +755,11 @@ public:
pushButtonDeleteSound->setText(QApplication::translate("MainWindow", "delete selected", 0, QApplication::UnicodeUTF8));
pushButtonClearBrain->setText(QApplication::translate("MainWindow", "clear brain", 0, QApplication::UnicodeUTF8));
tabWidget->setTabText(tabWidget->indexOf(sampleTab), QApplication::translate("MainWindow", "brain", 0, QApplication::UnicodeUTF8));
+ tabWidget->setTabText(tabWidget->indexOf(logTab), QApplication::translate("MainWindow", "log", 0, QApplication::UnicodeUTF8));
+ pushButtonPlay->setText(QString());
+ pushButtonStop->setText(QString());
+ pushButtonRecord->setText(QString());
+ pushButtonStopRecord->setText(QString());
} // retranslateUi
};
@@ -732,4 +770,4 @@ namespace Ui {
QT_END_NAMESPACE
-#endif // SAMPLEBRAINSB4993_H
+#endif // SAMPLEBRAINMG4993_H
diff --git a/samplebrain/qt/process_thread.cpp b/samplebrain/qt/process_thread.cpp
index 86f219e..ae3b3fc 100644
--- a/samplebrain/qt/process_thread.cpp
+++ b/samplebrain/qt/process_thread.cpp
@@ -24,9 +24,13 @@ process_thread::process_thread() :
m_osc.run();
// start the processing thread
- pthread_t *thread = new pthread_t;
- pthread_create(thread,NULL,(void*(*)(void*))_process,this);
+ m_thread = new pthread_t;
+ pthread_create(m_thread,NULL,(void*(*)(void*))_process,this);
+}
+process_thread::~process_thread() {
+ pthread_cancel(*m_thread);
+ delete m_brain_mutex;
}
void process_thread::process() {
diff --git a/samplebrain/qt/process_thread.h b/samplebrain/qt/process_thread.h
index 60c5d7b..ae479a8 100644
--- a/samplebrain/qt/process_thread.h
+++ b/samplebrain/qt/process_thread.h
@@ -9,6 +9,7 @@ namespace spiralcore {
class process_thread {
public:
process_thread();
+ ~process_thread();
brain m_source, m_target;
pthread_mutex_t* m_brain_mutex;
@@ -23,6 +24,7 @@ private:
float m_target_overlap;
window::type m_window_type;
window::type m_target_window_type;
+ pthread_t *m_thread;
};
}
diff --git a/samplebrain/qt/samplebrain.pro b/samplebrain/qt/samplebrain.pro
index 2d8a9c2..ce611ca 100644
--- a/samplebrain/qt/samplebrain.pro
+++ b/samplebrain/qt/samplebrain.pro
@@ -19,7 +19,7 @@ SOURCES += MainWindow.cpp \
qtmain.cpp
INCLUDEPATH += ../src
-LIBS += -L.. -lsamplebrain -ljellyfish -lportaudio -lfftw3 -lsndfile -llo -ldl -lpthread -lm
+LIBS += -L.. -lsamplebrain -ljellyfish -lportaudio -lfftw3 -lsndfile -llo -ldl -lpthread -lm
# assets
-#RESOURCES = application.qrc
+RESOURCES = samplebrain.qrc