129 lines
5.4 KiB
C++
129 lines
5.4 KiB
C++
#include <QtGui>
|
|
#include "generated/ui_samplebrain.h"
|
|
|
|
#include <iostream>
|
|
#include <lo/lo.h>
|
|
#include <string>
|
|
#include "window.h"
|
|
|
|
using namespace std;
|
|
using namespace spiralcore;
|
|
|
|
class MainWindow : public QMainWindow
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
MainWindow();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
private slots:
|
|
|
|
void play_slot() { lo_send(m_audio_address,"/start",""); }
|
|
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); }
|
|
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_end_slot(int s){} // { m_renderer->get_params()->m_fft2_end=s; }
|
|
void volume_slot(int s) { lo_send(m_audio_address,"/volume","f",s/100.0f); }
|
|
void run_slot() {}
|
|
void load_target() {
|
|
QString s=QFileDialog::getOpenFileName(
|
|
this,
|
|
QString("Select an wav file"),
|
|
".",
|
|
QString("Sounds (*.wav)"));
|
|
|
|
lo_send(m_process_address,"/load_target","s",s.toStdString().c_str());
|
|
}
|
|
void target_block_size(int s) { lo_send(m_process_address,"/target_block_size","i",s); }
|
|
void target_block_overlap(double s) { lo_send(m_process_address,"/target_overlap","f",s); }
|
|
void generate_target_blocks() { lo_send(m_process_address,"/generate_target",""); }
|
|
void block_size(int s) { lo_send(m_process_address,"/source_block_size","i",s); }
|
|
void block_overlap(double s) { lo_send(m_process_address,"/source_overlap","f",s); }
|
|
void fft_spectrum_size(int) {}
|
|
void generate() { lo_send(m_process_address,"/generate_brain",""); }
|
|
void load_sound() {
|
|
QString s=QFileDialog::getOpenFileName(
|
|
this,
|
|
QString("Select an wav file"),
|
|
".",
|
|
QString("Sounds (*.wav)"));
|
|
|
|
lo_send(m_process_address,"/load_sample","s",s.toStdString().c_str());
|
|
|
|
m_Ui.listWidgetSounds->addItem(s);
|
|
}
|
|
void delete_sound() {
|
|
QList<QListWidgetItem *> itemList = m_Ui.listWidgetSounds->selectedItems();
|
|
for (int i=0; i<itemList.size(); i++) {
|
|
lo_send(m_process_address,"/delete_sample","s",itemList[i]->text().toStdString().c_str());
|
|
}
|
|
qDeleteAll(m_Ui.listWidgetSounds->selectedItems());
|
|
}
|
|
void clear_brain() {
|
|
for (int i=0; i<m_Ui.listWidgetSounds->count(); i++) {
|
|
lo_send(m_process_address,"/delete_sample","s",m_Ui.listWidgetSounds->item(i)->text().toStdString().c_str());
|
|
}
|
|
m_Ui.listWidgetSounds->clear();
|
|
}
|
|
void restart_audio() { lo_send(m_audio_address,"/restart_audio",""); }
|
|
|
|
void window_dodgy(bool s) { if (s) lo_send(m_process_address,"/window_type","i",window::DODGY); }
|
|
void window_bartlett(bool s) { if (s) lo_send(m_process_address,"/window_type","i",window::BARTLETT); }
|
|
void window_blackman(bool s) { if (s) lo_send(m_process_address,"/window_type","i",window::BLACKMAN); }
|
|
void window_flattop(bool s) { if (s) lo_send(m_process_address,"/window_type","i",window::FLAT_TOP); }
|
|
void window_gaussian(bool s) { if (s) lo_send(m_process_address,"/window_type","i",window::GAUSSIAN); }
|
|
void window_hamming(bool s) { if (s) lo_send(m_process_address,"/window_type","i",window::HAMMING); }
|
|
void window_hann(bool s) { if (s) lo_send(m_process_address,"/window_type","i",window::HANN); }
|
|
void window_rectangle(bool s) { if (s) lo_send(m_process_address,"/window_type","i",window::RECTANGLE); }
|
|
|
|
void window_target_dodgy(bool s) { if (s) lo_send(m_process_address,"/target_window_type","i",window::DODGY); }
|
|
void window_target_bartlett(bool s) { if (s) lo_send(m_process_address,"/target_window_type","i",window::BARTLETT); }
|
|
void window_target_blackman(bool s) { if (s) lo_send(m_process_address,"/target_window_type","i",window::BLACKMAN); }
|
|
void window_target_flattop(bool s) { if (s) lo_send(m_process_address,"/target_window_type","i",window::FLAT_TOP); }
|
|
void window_target_gaussian(bool s) { if (s) lo_send(m_process_address,"/target_window_type","i",window::GAUSSIAN); }
|
|
void window_target_hamming(bool s) { if (s) lo_send(m_process_address,"/target_window_type","i",window::HAMMING); }
|
|
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<<fn<<endl;
|
|
m_record_id++;
|
|
}
|
|
|
|
void stop_record() {
|
|
lo_send(m_process_address,"/stop","");
|
|
}
|
|
|
|
private:
|
|
string m_save_wav;
|
|
u32 m_record_id;
|
|
Ui_MainWindow m_Ui;
|
|
lo_address m_audio_address;
|
|
lo_address m_process_address;
|
|
};
|