diff --git a/samplebrain/interface/samplebrain.ui b/samplebrain/interface/samplebrain.ui
index 2c5adba..160bb47 100644
--- a/samplebrain/interface/samplebrain.ui
+++ b/samplebrain/interface/samplebrain.ui
@@ -11,7 +11,7 @@
- samplebrain 0.14
+ samplebrain 0.15
@@ -25,7 +25,7 @@
- 0
+ 1
@@ -1427,13 +1427,13 @@
-
+
- log
+ net
-
-
+
diff --git a/samplebrain/qt/MainWindow.cpp b/samplebrain/qt/MainWindow.cpp
index 2801cbc..3e48042 100644
--- a/samplebrain/qt/MainWindow.cpp
+++ b/samplebrain/qt/MainWindow.cpp
@@ -31,8 +31,32 @@ MainWindow::MainWindow() :
m_Ui.setupUi(this);
setUnifiedTitleAndToolBarOnMac(true);
- m_audio_address = lo_address_new_from_url("osc.udp://localhost:8888");
- m_process_address = lo_address_new_from_url("osc.udp://localhost:8889");
+ // add default local dest
+ // turn on first one
+
+ QSignalMapper* enable_mapper = new QSignalMapper(this);
+ QSignalMapper* connect_mapper = new QSignalMapper(this);
+
+ for (int i=0; i<10; i++) {
+ osc_destination d;
+ d.m_id=i;
+ d.m_audio_address = lo_address_new_from_url("osc.udp://localhost:8888");
+ d.m_process_address = lo_address_new_from_url("osc.udp://localhost:8889");
+ if (i==0) d.m_enabled=true;
+ else d.m_enabled=false;
+ add_gui_address(d,enable_mapper,connect_mapper);
+
+ if (i==0) {
+ d.m_enable->setChecked(true);
+ d.m_address->setText("osc.udp://localhost");
+ }
+ m_destinations.push_back(d);
+ }
+
+ connect(enable_mapper, SIGNAL(mapped(int)), this, SLOT(net_enable(int)));
+ connect(connect_mapper, SIGNAL(mapped(int)), this, SLOT(net_connect(int)));
+
+ m_Ui.netContainer->addItem(new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding));
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update_status()));
@@ -43,6 +67,27 @@ MainWindow::MainWindow() :
m_record_id=0;
}
+void MainWindow::add_gui_address(osc_destination &dest,
+ QSignalMapper* enable_mapper,
+ QSignalMapper* connect_mapper) {
+ QHBoxLayout *h = new QHBoxLayout();
+ dest.m_enable = new QCheckBox();
+ dest.m_enable->setText("enable");
+ dest.m_enable->setChecked(false);
+ h->addWidget(dest.m_enable);
+ dest.m_address = new QLineEdit();
+ h->addWidget(dest.m_address);
+ //QPushButton *ping = new QPushButton();
+ //ping->setText("connect");
+ //h->addWidget(ping);
+ m_Ui.netContainer->addLayout(h);
+
+ QObject::connect(dest.m_enable, SIGNAL(clicked()), enable_mapper, SLOT(map()));
+ enable_mapper->setMapping(dest.m_enable, dest.m_id);
+ //QObject::connect(ping, SIGNAL(clicked()), connect_mapper, SLOT(map()));
+ //connect_mapper->setMapping(ping, dest.m_id);
+}
+
void MainWindow::init_from_session(const string &filename) {
// pull the bits out of the file to set the interface...
// is this easier than direct access? no idea??
@@ -122,6 +167,7 @@ void MainWindow::init_from_session(const string &filename) {
case window::HAMMING: m_Ui.radioButton_hammingTarget->setChecked(true); break;
case window::HANN: m_Ui.radioButton_hannTarget->setChecked(true); break;
case window::RECTANGLE: m_Ui.radioButton_rectangleTarget->setChecked(true); break;
+ default: break;
};
// source
@@ -136,6 +182,7 @@ void MainWindow::init_from_session(const string &filename) {
case window::HAMMING: m_Ui.radioButton_hamming->setChecked(true); break;
case window::HANN: m_Ui.radioButton_hann->setChecked(true); break;
case window::RECTANGLE: m_Ui.radioButton_rectagle->setChecked(true); break;
+ default: break;
};
// brain samples
diff --git a/samplebrain/qt/MainWindow.h b/samplebrain/qt/MainWindow.h
index 08b275f..326f6fc 100644
--- a/samplebrain/qt/MainWindow.h
+++ b/samplebrain/qt/MainWindow.h
@@ -20,6 +20,7 @@
#include
#include
#include
+#include
#include "window.h"
#include "feedback.h"
@@ -34,105 +35,104 @@ public:
MainWindow();
-
protected:
private slots:
- void play_slot() { lo_send(m_audio_address,"/start",""); }
- void stop_slot() { lo_send(m_audio_address,"/pause",""); }
+ void play_slot() { send_audio_osc("/start",""); }
+ void stop_slot() { send_audio_osc("/pause",""); }
void ratio_slot(int s) {
- lo_send(m_audio_address,"/ratio","f",s/100.0f);
- m_Ui.doubleSpinBoxRatio->setValue(s/100.0f);
+ send_audio_osc("/ratio","f",s/100.0f);
+ m_Ui.doubleSpinBoxRatio->setValue(s/100.0f);
}
void ratio_slot(double s) {
- lo_send(m_audio_address,"/ratio","f",s);
+ send_audio_osc("/ratio","f",s);
m_Ui.sliderRatio->setValue(s*100);
}
void n_ratio_slot(int s) {
- lo_send(m_audio_address,"/n_ratio","f",s/100.0f);
+ send_audio_osc("/n_ratio","f",s/100.0f);
m_Ui.doubleSpinBoxNRatio->setValue(s/100.0f);
}
void n_ratio_slot(double s) {
- lo_send(m_audio_address,"/n_ratio","f",s);
+ send_audio_osc("/n_ratio","f",s);
m_Ui.sliderNRatio->setValue(s*100);
}
void autotune(int s) {
- lo_send(m_audio_address,"/autotune","f",s/100.0f);
+ send_audio_osc("/autotune","f",s/100.0f);
m_Ui.doubleSpinBoxAutotune->setValue(s/100.0f);
}
void autotune(double s) {
- lo_send(m_audio_address,"/autotune","f",s);
+ send_audio_osc("/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_end_slot(int s) { lo_send(m_audio_address,"/fft1_end","i",s); }
+ void fft1_start_slot(int s) { send_audio_osc("/fft1_start","i",s); }
+ void fft1_end_slot(int s) { send_audio_osc("/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 n_mix_slot(int s) {
- lo_send(m_audio_address,"/n_mix","f",s/100.0f);
+ send_audio_osc("/n_mix","f",s/100.0f);
m_Ui.doubleSpinBoxNMix->setValue(s/100.0f);
}
void n_mix_slot(double s) {
- lo_send(m_audio_address,"/n_mix","f",s);
+ send_audio_osc("/n_mix","f",s);
m_Ui.sliderNMix->setValue(s*100);
}
void novelty_slot(int s) {
- lo_send(m_audio_address,"/novelty","f",s/100.0f);
+ send_audio_osc("/novelty","f",s/100.0f);
m_Ui.doubleSpinBoxNovelty->setValue(s/100.0f);
}
void novelty_slot(double s) {
- lo_send(m_audio_address,"/novelty","f",s);
+ send_audio_osc("/novelty","f",s);
m_Ui.sliderNovelty->setValue(s*100);
}
void boredom_slot(int s) {
float v=s/100.0f;
- lo_send(m_audio_address,"/boredom","f",v);
+ send_audio_osc("/boredom","f",v);
m_Ui.doubleSpinBoxBoredom->setValue(v);
}
void boredom_slot(double s) {
- lo_send(m_audio_address,"/boredom","f",s);
+ send_audio_osc("/boredom","f",s);
m_Ui.sliderBoredom->setValue(s*100);
}
void synapses(int s) {
- lo_send(m_audio_address,"/synapses","i",s);
+ send_audio_osc("/synapses","i",s);
}
void target_mix_slot(int s) {
- lo_send(m_audio_address,"/target_mix","f",s/100.0f);
+ send_audio_osc("/target_mix","f",s/100.0f);
m_Ui.doubleSpinBoxTargetMix->setValue(s/100.0f);
}
void target_mix_slot(double s) {
- lo_send(m_audio_address,"/target_mix","f",s);
+ send_audio_osc("/target_mix","f",s);
m_Ui.sliderTargetMix->setValue(s*100);
}
void search_stretch(int s) {
- lo_send(m_audio_address,"/search-stretch","i",s);
+ send_audio_osc("/search-stretch","i",s);
}
void slide_error(int s) {
- lo_send(m_audio_address,"/slide-error","i",s);
+ send_audio_osc("/slide-error","i",s);
}
void stickyness_slot(int s) {
- lo_send(m_audio_address,"/stickyness","f",s/100.0f);
+ send_audio_osc("/stickyness","f",s/100.0f);
m_Ui.doubleSpinBoxStickyness->setValue(s/100.0f);
}
void stickyness_slot(double s) {
- lo_send(m_audio_address,"/stickyness","f",s);
+ send_audio_osc("/stickyness","f",s);
m_Ui.sliderStickyness->setValue(s*100);
}
- void volume_slot(int s) { lo_send(m_audio_address,"/volume","f",s/100.0f); }
+ void volume_slot(int s) { send_audio_osc("/volume","f",s/100.0f); }
- void algo_basic(bool s) { if (s) lo_send(m_audio_address,"/search_algo","i",0); }
- void algo_rev_basic(bool s) { if (s) lo_send(m_audio_address,"/search_algo","i",1); }
- void algo_synaptic(bool s) { if (s) lo_send(m_audio_address,"/search_algo","i",2); }
- void algo_synaptic_slide(bool s) { if (s) lo_send(m_audio_address,"/search_algo","i",3); }
+ void algo_basic(bool s) { if (s) send_audio_osc("/search_algo","i",0); }
+ void algo_rev_basic(bool s) { if (s) send_audio_osc("/search_algo","i",1); }
+ void algo_synaptic(bool s) { if (s) send_audio_osc("/search_algo","i",2); }
+ void algo_synaptic_slide(bool s) { if (s) send_audio_osc("/search_algo","i",3); }
void run_slot() {}
void load_target() {
@@ -142,15 +142,15 @@ private slots:
m_last_file,
QString("Sounds (*.wav)"));
- lo_send(m_process_address,"/load_target","s",m_last_file.toStdString().c_str());
+ send_process_osc("/load_target","s",m_last_file.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 target_block_size(int s) { send_process_osc("/target_block_size","i",s); }
+ void target_block_overlap(double s) { send_process_osc("/target_overlap","f",s); }
+ void generate_target_blocks() { send_process_osc("/generate_target",""); }
+ void block_size(int s) { send_process_osc("/source_block_size","i",s); }
+ void block_overlap(double s) { send_process_osc("/source_overlap","f",s); }
void fft_spectrum_size(int) {}
- void generate() { lo_send(m_process_address,"/generate_brain",""); }
+ void generate() { send_process_osc("/generate_brain",""); }
void load_sound() {
m_last_file=QFileDialog::getOpenFileName(
this,
@@ -158,42 +158,42 @@ private slots:
m_last_file,
QString("Sounds (*.wav)"));
- lo_send(m_process_address,"/load_sample","s",m_last_file.toStdString().c_str());
+ send_process_osc("/load_sample","s",m_last_file.toStdString().c_str());
m_Ui.listWidgetSounds->addItem(m_last_file);
}
void delete_sound() {
QList itemList = m_Ui.listWidgetSounds->selectedItems();
for (int i=0; itext().toStdString().c_str());
+ send_process_osc("/delete_sample","s",itemList[i]->text().toStdString().c_str());
}
qDeleteAll(m_Ui.listWidgetSounds->selectedItems());
}
void clear_brain() {
for (int i=0; icount(); i++) {
- lo_send(m_process_address,"/delete_sample","s",m_Ui.listWidgetSounds->item(i)->text().toStdString().c_str());
+ send_process_osc("/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 restart_audio() { send_audio_osc("/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_dodgy(bool s) { if (s) send_process_osc("/window_type","i",window::DODGY); }
+ void window_bartlett(bool s) { if (s) send_process_osc("/window_type","i",window::BARTLETT); }
+ void window_blackman(bool s) { if (s) send_process_osc("/window_type","i",window::BLACKMAN); }
+ void window_flattop(bool s) { if (s) send_process_osc("/window_type","i",window::FLAT_TOP); }
+ void window_gaussian(bool s) { if (s) send_process_osc("/window_type","i",window::GAUSSIAN); }
+ void window_hamming(bool s) { if (s) send_process_osc("/window_type","i",window::HAMMING); }
+ void window_hann(bool s) { if (s) send_process_osc("/window_type","i",window::HANN); }
+ void window_rectangle(bool s) { if (s) send_process_osc("/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 window_target_dodgy(bool s) { if (s) send_process_osc("/target_window_type","i",window::DODGY); }
+ void window_target_bartlett(bool s) { if (s) send_process_osc("/target_window_type","i",window::BARTLETT); }
+ void window_target_blackman(bool s) { if (s) send_process_osc("/target_window_type","i",window::BLACKMAN); }
+ void window_target_flattop(bool s) { if (s) send_process_osc("/target_window_type","i",window::FLAT_TOP); }
+ void window_target_gaussian(bool s) { if (s) send_process_osc("/target_window_type","i",window::GAUSSIAN); }
+ void window_target_hamming(bool s) { if (s) send_process_osc("/target_window_type","i",window::HAMMING); }
+ void window_target_hann(bool s) { if (s) send_process_osc("/target_window_type","i",window::HANN); }
+ void window_target_rectangle(bool s) { if (s) send_process_osc("/target_window_type","i",window::RECTANGLE); }
void record() {
if (m_save_wav=="") {
@@ -213,13 +213,13 @@ private slots:
char fn[1024];
snprintf(fn,1024,"%s-%i",m_save_wav.c_str(),m_record_id);
- lo_send(m_audio_address,"/record","s",fn);
+ send_audio_osc("/record","s",fn);
cerr<isChecked()) {
+ // reconnect
+ string url = d.m_address->text().toUtf8().constData();
+ lo_address_free(d.m_audio_address);
+ lo_address_free(d.m_process_address);
+ d.m_audio_address = lo_address_new_from_url(string(url+":8888").c_str());
+ d.m_process_address = lo_address_new_from_url(string(url+":8889").c_str());
+ // start sending messages here
+ d.m_enabled=true;
+ } else {
+ // stop sending messages here
+ d.m_enabled=false;
+ }
+
+ }
+
+ void net_connect(int id) {
+ cerr<<"connect "< m_destinations;
+
+ // all this to work around liblo's use of varargs...
+ void send_audio_osc(const char *name, const char *types) {
+ for (auto dest:m_destinations) {
+ if (dest.m_enabled) {
+ lo_send(dest.m_audio_address,name,types);
+ }
+ }
+ }
+
+ template
+ void send_audio_osc(const char *name, const char *types, T val) {
+ for (auto dest:m_destinations) {
+ if (dest.m_enabled) {
+ lo_send(dest.m_audio_address,name,types,val);
+ }
+ }
+ }
+
+ void send_process_osc(const char *name, const char *types) {
+ for (auto dest:m_destinations) {
+ if (dest.m_enabled) {
+ lo_send(dest.m_process_address,name,types);
+ }
+ }
+ }
+
+ template
+ void send_process_osc(const char *name, const char *types, T val) {
+ for (auto dest:m_destinations) {
+ if (dest.m_enabled) {
+ lo_send(dest.m_process_address,name,types,val);
+ }
+ }
+ }
+
+
void init_from_session(const string &filename);
+ void add_gui_address(osc_destination &dest,
+ QSignalMapper* enable_mapper,
+ QSignalMapper* connect_mapper);
string m_save_wav;
QString m_last_file;
u32 m_record_id;
Ui_MainWindow m_Ui;
- lo_address m_audio_address;
- lo_address m_process_address;
feedback m_feedback;
};
diff --git a/samplebrain/qt/generated/ui_samplebrain.h b/samplebrain/qt/generated/ui_samplebrain.h
index b86cfc6..daeaaea 100644
--- a/samplebrain/qt/generated/ui_samplebrain.h
+++ b/samplebrain/qt/generated/ui_samplebrain.h
@@ -1,13 +1,13 @@
/********************************************************************************
-** Form generated from reading UI file 'samplebrainSm7172.ui'
+** Form generated from reading UI file 'samplebrainZ17592.ui'
**
** Created by: Qt User Interface Compiler version 4.8.6
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
-#ifndef SAMPLEBRAINSM7172_H
-#define SAMPLEBRAINSM7172_H
+#ifndef SAMPLEBRAINZ17592_H
+#define SAMPLEBRAINZ17592_H
#include
#include
@@ -22,7 +22,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -153,9 +152,9 @@ public:
QPushButton *pushButtonLoadBrain;
QPushButton *pushButtonSaveBrain;
QSpacerItem *verticalSpacer_2;
- QWidget *logTab;
+ QWidget *netTab;
QHBoxLayout *horizontalLayout_15;
- QPlainTextEdit *plainTextEdit;
+ QVBoxLayout *netContainer;
QHBoxLayout *horizontalLayout_12;
QPushButton *pushButtonPlay;
QPushButton *pushButtonStop;
@@ -951,16 +950,16 @@ public:
horizontalLayout_5->addLayout(verticalLayout_2);
tabWidget->addTab(controlTab, QString());
- logTab = new QWidget();
- logTab->setObjectName(QString::fromUtf8("logTab"));
- horizontalLayout_15 = new QHBoxLayout(logTab);
+ netTab = new QWidget();
+ netTab->setObjectName(QString::fromUtf8("netTab"));
+ horizontalLayout_15 = new QHBoxLayout(netTab);
horizontalLayout_15->setObjectName(QString::fromUtf8("horizontalLayout_15"));
- plainTextEdit = new QPlainTextEdit(logTab);
- plainTextEdit->setObjectName(QString::fromUtf8("plainTextEdit"));
+ netContainer = new QVBoxLayout();
+ netContainer->setObjectName(QString::fromUtf8("netContainer"));
- horizontalLayout_15->addWidget(plainTextEdit);
+ horizontalLayout_15->addLayout(netContainer);
- tabWidget->addTab(logTab, QString());
+ tabWidget->addTab(netTab, QString());
verticalLayout_4->addWidget(tabWidget);
@@ -1127,7 +1126,7 @@ public:
void retranslateUi(QMainWindow *MainWindow)
{
- MainWindow->setWindowTitle(QApplication::translate("MainWindow", "samplebrain 0.14", 0, QApplication::UnicodeUTF8));
+ MainWindow->setWindowTitle(QApplication::translate("MainWindow", "samplebrain 0.15", 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));
#ifndef QT_NO_TOOLTIP
@@ -1264,7 +1263,7 @@ public:
pushButtonLoadBrain->setText(QApplication::translate("MainWindow", "load brain", 0, QApplication::UnicodeUTF8));
pushButtonSaveBrain->setText(QApplication::translate("MainWindow", "save brain", 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(netTab), QApplication::translate("MainWindow", "net", 0, QApplication::UnicodeUTF8));
pushButtonPlay->setText(QString());
pushButtonStop->setText(QString());
pushButtonRecord->setText(QString());
@@ -1282,4 +1281,4 @@ namespace Ui {
QT_END_NAMESPACE
-#endif // SAMPLEBRAINSM7172_H
+#endif // SAMPLEBRAINZ17592_H
diff --git a/samplebrain/src/brain.cpp b/samplebrain/src/brain.cpp
index f2b6378..b59072e 100644
--- a/samplebrain/src/brain.cpp
+++ b/samplebrain/src/brain.cpp
@@ -46,7 +46,8 @@ void brain::load_sound(std::string filename, stereo_mode mode) {
if (f!=NULL) {
sample s(sfinfo.frames);
float *temp = new float[sfinfo.channels * sfinfo.frames];
- sf_readf_float(f, temp, sfinfo.channels * sfinfo.frames);
+
+ sf_read_float(f, temp, sfinfo.channels * sfinfo.frames);
if (mode==MIX) {
for(u32 i=0; i
using namespace std;
+pthread_mutex_t* m_fuz_mutex;
+
+
void unit_test() {
cerr<<"testing block"<left_out.zero();
renderer *rr = (renderer*)c;
+ pthread_mutex_lock(m_fuz_mutex);
rr->process(frames,a->left_out.get_non_const_buffer());
+ pthread_mutex_unlock(m_fuz_mutex);
a->right_out=a->left_out;
a->maybe_record();
// sleep(1);
}
-int main(int argc, char *argv[])
-{
-// unit_test();
- u32 len=1000;
+const char *fuz_samplefile() {
+ switch (rand()%20) {
+ case 0: return "../sound/source/KONG.WAV";
+ case 1: return "../sound/source/KONG.WAV";
+ case 2: return "../sound/source/CCBEGIN.WAV";
+ case 3: return "../sound/source/cc-end.wav";
+ case 4: return "../sound/source/cc-extra.wav";
+ case 5: return "../sound/source/cc-high.wav";
+ case 6: return "../sound/source/cc-magic.wav";
+ case 7: return "../sound/source/cc-start.wav";
+ case 8: return "../sound/source/cc-warp.wav";
+// source.load_sound("../sound/source/shostakovich6.wav");
+ case 9: return "../sound/source/808.wav";
+ case 10: return "../sound/source/joey.wav";
+ case 11: return "../sound/source/pw2.wav";
+ case 12: return "../sound/source/pw3.wav";
+ case 13: return "../sound/source/claps.wav";
+ case 14: return "../sound/source/eagle.wav";
+ case 15: return "../sound/source/rise.wav";
+ case 16: return "../sound/source/totalsine.wav";
+ case 17: return "../sound/source/sailingbybit.wav";
+ case 18: return "../sound/source/dreambit.wav";
+ case 19: return "../sound/source/apache.wav";
+ }
+}
+
+float fuz_rr_f(float start, float end) {
+ float t=rand()%999999/9999999.0f;
+ return t*(end-start)+start;
+}
+
+int fuz_rr_i(int start, int end) {
+ return (int)fuz_rr_f(start,end);
+}
+
+void fuz_new_brain(search_params p) {
+ u32 len=fuz_rr_i(500,5000);
+ brain source;
+ for (int i=0; i<5; i++) {
+ cerr<<"loading sound..."<m_ratio=0;
- rr.get_params()->m_usage_importance=0.6;
- source.set_usage_falloff(0.9);
- rr.get_params()->m_num_synapses=40;
- rr.set_slide_error(3400.5);
- rr.set_search_algo(renderer::SYNAPTIC);
- rr.set_target_mix(0.9);
- rr.set_stretch(10);
- a->start_recording("debug");
+ // a->start_recording("debug");
a->m_client.set_callback(run_audio, &rr);
//target.resynth("shosta-dream-0.5.wav",source,0.5);
+ u32 counter=0;
+ while (true) {
+ if (counter>5) {
+ pthread_mutex_lock(m_fuz_mutex);
- while (true) sleep(1);
+ switch (rand()%10) {
+ case 0: {
+ fuz_new_brain(*rr.get_params());
+ cerr<<"reloading brain"<m_ratio=fuz_rr_f(0,1);
+ rr.get_params()->m_n_ratio=fuz_rr_f(0,1);
+ rr.get_params()->m_fft1_start=fuz_rr_i(0,49);
+ rr.get_params()->m_fft1_end=fuz_rr_f(50,100);
+ rr.get_params()->m_stickyness=fuz_rr_f(0,1);
+ rr.get_params()->m_usage_importance=fuz_rr_f(0,1);
+ source.set_usage_falloff(fuz_rr_f(0,1));
+ rr.get_params()->m_num_synapses=fuz_rr_i(2,1000);
+ rr.set_slide_error(fuz_rr_i(100,10000));
+
+ switch(rand()%3) {
+ case 0: rr.set_search_algo(renderer::BASIC); break;
+ case 1: rr.set_search_algo(renderer::SYNAPTIC); break;
+ case 2: rr.set_search_algo(renderer::SYNAPTIC_SLIDE); break;
+ }
+
+ rr.set_target_mix(0.2);
+ rr.set_stretch(1);
+ counter=0;
+ pthread_mutex_unlock(m_fuz_mutex);
+
+ }
+ sleep(1);
+ cerr<