mirror of
https://gitlab.com/then-try-this/samplebrain.git
synced 2025-05-13 02:57:20 +00:00
Merge branch 'master' of gitlab.com:nebogeo/samplebrain
This commit is contained in:
commit
4a3a6bef14
@ -11,7 +11,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>samplebrain 0.7</string>
|
<string>samplebrain 0.8</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="centralwidget">
|
<widget class="QWidget" name="centralwidget">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
@ -409,7 +409,7 @@
|
|||||||
<number>1</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>10</number>
|
<number>50</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="value">
|
<property name="value">
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
@ -434,7 +434,7 @@
|
|||||||
<number>1</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>10</number>
|
<number>50</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="value">
|
<property name="value">
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
/********************************************************************************
|
/********************************************************************************
|
||||||
** Form generated from reading UI file 'samplebrainj32146.ui'
|
** Form generated from reading UI file 'samplebrainj21537.ui'
|
||||||
**
|
**
|
||||||
** Created: Thu Aug 6 13:25:50 2015
|
** Created: Fri Aug 7 09:55:34 2015
|
||||||
** by: Qt User Interface Compiler version 4.8.1
|
** by: Qt User Interface Compiler version 4.8.1
|
||||||
**
|
**
|
||||||
** 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 SAMPLEBRAINJ32146_H
|
#ifndef SAMPLEBRAINJ21537_H
|
||||||
#define SAMPLEBRAINJ32146_H
|
#define SAMPLEBRAINJ21537_H
|
||||||
|
|
||||||
#include <QtCore/QVariant>
|
#include <QtCore/QVariant>
|
||||||
#include <QtGui/QAction>
|
#include <QtGui/QAction>
|
||||||
@ -385,7 +385,7 @@ public:
|
|||||||
sizePolicy.setHeightForWidth(sliderSearchStretch->sizePolicy().hasHeightForWidth());
|
sizePolicy.setHeightForWidth(sliderSearchStretch->sizePolicy().hasHeightForWidth());
|
||||||
sliderSearchStretch->setSizePolicy(sizePolicy);
|
sliderSearchStretch->setSizePolicy(sizePolicy);
|
||||||
sliderSearchStretch->setMinimum(1);
|
sliderSearchStretch->setMinimum(1);
|
||||||
sliderSearchStretch->setMaximum(10);
|
sliderSearchStretch->setMaximum(50);
|
||||||
sliderSearchStretch->setValue(1);
|
sliderSearchStretch->setValue(1);
|
||||||
sliderSearchStretch->setOrientation(Qt::Horizontal);
|
sliderSearchStretch->setOrientation(Qt::Horizontal);
|
||||||
|
|
||||||
@ -396,7 +396,7 @@ public:
|
|||||||
sizePolicy1.setHeightForWidth(spinBoxSearchStretch->sizePolicy().hasHeightForWidth());
|
sizePolicy1.setHeightForWidth(spinBoxSearchStretch->sizePolicy().hasHeightForWidth());
|
||||||
spinBoxSearchStretch->setSizePolicy(sizePolicy1);
|
spinBoxSearchStretch->setSizePolicy(sizePolicy1);
|
||||||
spinBoxSearchStretch->setMinimum(1);
|
spinBoxSearchStretch->setMinimum(1);
|
||||||
spinBoxSearchStretch->setMaximum(10);
|
spinBoxSearchStretch->setMaximum(50);
|
||||||
spinBoxSearchStretch->setValue(1);
|
spinBoxSearchStretch->setValue(1);
|
||||||
|
|
||||||
horizontalLayout_19->addWidget(spinBoxSearchStretch);
|
horizontalLayout_19->addWidget(spinBoxSearchStretch);
|
||||||
@ -1043,7 +1043,7 @@ public:
|
|||||||
|
|
||||||
void retranslateUi(QMainWindow *MainWindow)
|
void retranslateUi(QMainWindow *MainWindow)
|
||||||
{
|
{
|
||||||
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "samplebrain 0.7", 0, QApplication::UnicodeUTF8));
|
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "samplebrain 0.8", 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
|
||||||
@ -1185,4 +1185,4 @@ namespace Ui {
|
|||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
#endif // SAMPLEBRAINJ32146_H
|
#endif // SAMPLEBRAINJ21537_H
|
||||||
|
@ -98,7 +98,7 @@ int main(int argc, char *argv[])
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
brain source;
|
brain source;
|
||||||
ifstream ifs("shosta.brain",ios::binary);
|
ifstream ifs("mix.brain",ios::binary);
|
||||||
ifs||source;
|
ifs||source;
|
||||||
ifs.close();
|
ifs.close();
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ int main(int argc, char *argv[])
|
|||||||
rr.get_params()->m_num_synapses=40;
|
rr.get_params()->m_num_synapses=40;
|
||||||
rr.set_slide_error(3400.5);
|
rr.set_slide_error(3400.5);
|
||||||
rr.set_search_algo(renderer::SYNAPTIC);
|
rr.set_search_algo(renderer::SYNAPTIC);
|
||||||
rr.set_target_mix(0.2);
|
rr.set_target_mix(0.9);
|
||||||
rr.set_stretch(10);
|
rr.set_stretch(10);
|
||||||
a->start_recording("debug");
|
a->start_recording("debug");
|
||||||
a->m_client.set_callback(run_audio, &rr);
|
a->m_client.set_callback(run_audio, &rr);
|
||||||
|
@ -33,7 +33,7 @@ void renderer::init(brain &source, brain &target) {
|
|||||||
m_search_algo=BASIC;
|
m_search_algo=BASIC;
|
||||||
m_slide_error=1;
|
m_slide_error=1;
|
||||||
m_target_index=0;
|
m_target_index=0;
|
||||||
m_target_counter=0;
|
m_render_index=0;
|
||||||
m_stretch=1;
|
m_stretch=1;
|
||||||
m_last_tgt_shift=0;
|
m_last_tgt_shift=0;
|
||||||
}
|
}
|
||||||
@ -44,7 +44,7 @@ void renderer::reset() {
|
|||||||
m_target_time=0;
|
m_target_time=0;
|
||||||
m_render_time=0;
|
m_render_time=0;
|
||||||
m_target_index=0;
|
m_target_index=0;
|
||||||
m_target_counter=0;
|
m_render_index=0;
|
||||||
m_render_blocks.clear();
|
m_render_blocks.clear();
|
||||||
m_source.jiggle();
|
m_source.jiggle();
|
||||||
}
|
}
|
||||||
@ -59,15 +59,21 @@ void renderer::process(u32 nframes, float *buf) {
|
|||||||
clean_up();
|
clean_up();
|
||||||
|
|
||||||
m_render_time+=nframes;
|
m_render_time+=nframes;
|
||||||
m_target_time+=nframes/(float)m_stretch;
|
//m_target_time+=nframes/(float)m_stretch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// target_time = samples time into target stream
|
||||||
|
// render_time = position in output stream, updated per process - used for offsets
|
||||||
|
|
||||||
bool renderer::find_render_blocks(u32 nframes) {
|
bool renderer::find_render_blocks(u32 nframes) {
|
||||||
// get new blocks from source for the current buffer
|
// get new blocks from source for the current buffer
|
||||||
|
|
||||||
// where are we phase?
|
// where are we phase?
|
||||||
u32 tgt_shift = m_target.get_block_size()-m_target.get_overlap();
|
u32 tgt_shift = m_target.get_block_size()-m_target.get_overlap();
|
||||||
|
m_target_index = m_target_time/(float)tgt_shift;
|
||||||
u32 tgt_end = (m_target_time+nframes)/(float)tgt_shift;
|
u32 tgt_end = (m_target_time+nframes)/(float)tgt_shift;
|
||||||
|
u32 rnd_end = (m_render_time+nframes)/(float)tgt_shift;
|
||||||
|
|
||||||
|
|
||||||
// stuff has changed - recompute and abort
|
// stuff has changed - recompute and abort
|
||||||
if (tgt_shift!=m_last_tgt_shift ||
|
if (tgt_shift!=m_last_tgt_shift ||
|
||||||
@ -79,23 +85,26 @@ bool renderer::find_render_blocks(u32 nframes) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
/* cerr<<"-----------------"<<endl;
|
cerr<<"-----------------"<<endl;
|
||||||
cerr<<"tgt start:"<<m_target_index<<endl;
|
cerr<<"tgt start:"<<m_target_index<<endl;
|
||||||
cerr<<"tgt end:"<<tgt_end<<endl;
|
cerr<<"tgt end:"<<tgt_end<<endl;
|
||||||
cerr<<":"<<tgt_end-m_target_index<<endl;
|
cerr<<":"<<tgt_end-m_target_index<<endl;
|
||||||
cerr<<"block time "<<m_target_counter*tgt_shift<<endl;
|
|
||||||
cerr<<"target time "<<m_target_time<<endl;
|
cerr<<"target time "<<m_target_time<<endl;
|
||||||
|
cerr<<"target time (index) "<<m_target_index*tgt_shift<<endl;
|
||||||
|
cerr<<"real vs index = "<<(s32)m_target_time-(s32)(m_target_index*tgt_shift)<<endl;
|
||||||
cerr<<"render time "<<m_render_time<<endl;
|
cerr<<"render time "<<m_render_time<<endl;
|
||||||
|
cerr<<"render time (index) "<<m_render_index*tgt_shift<<endl;
|
||||||
cerr<<": "<<(s32)m_render_time-(s32)(m_target_time)<<endl;*/
|
cerr<<"real vs index = "<<(s32)m_render_time-(s32)(m_render_index*tgt_shift)<<endl;
|
||||||
|
cerr<<m_render_blocks.size()<<endl;
|
||||||
|
*/
|
||||||
|
|
||||||
// search phase
|
// search phase
|
||||||
// get indices for current buffer
|
// get indices for current buffer
|
||||||
u32 counter = m_target_index;
|
u32 counter = m_render_index;
|
||||||
//u32 cur_time = m_render_time;
|
//u32 cur_time = m_render_time;
|
||||||
while (counter<=tgt_end) {
|
while (counter<=rnd_end) {
|
||||||
u32 time=m_target_counter*tgt_shift;
|
u32 time=m_render_index*tgt_shift;
|
||||||
u32 src_index=0;
|
u32 src_index=0;
|
||||||
|
|
||||||
switch (m_search_algo) {
|
switch (m_search_algo) {
|
||||||
@ -115,23 +124,21 @@ bool renderer::find_render_blocks(u32 nframes) {
|
|||||||
m_render_blocks.push_back(render_block(src_index,m_target_index,time));
|
m_render_blocks.push_back(render_block(src_index,m_target_index,time));
|
||||||
|
|
||||||
if (m_source.get_current_error()<m_slide_error &&
|
if (m_source.get_current_error()<m_slide_error &&
|
||||||
m_target_counter%m_stretch==0) {
|
m_render_index%m_stretch==0) {
|
||||||
m_target_index++;
|
m_target_index++;
|
||||||
//m_target_time+=tgt_shift;
|
m_target_time+=tgt_shift;
|
||||||
}
|
}
|
||||||
m_target_counter++;
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// put them in the index list
|
// put them in the index list
|
||||||
m_render_blocks.push_back(render_block(src_index,m_target_index,time));
|
m_render_blocks.push_back(render_block(src_index,m_target_index,time));
|
||||||
|
|
||||||
if (m_target_counter%m_stretch==0) {
|
if (m_render_index%m_stretch==0) {
|
||||||
m_target_index++;
|
m_target_index++;
|
||||||
//m_target_time+=tgt_shift;
|
m_target_time+=tgt_shift;
|
||||||
}
|
}
|
||||||
m_target_counter++;
|
|
||||||
}
|
}
|
||||||
counter++;
|
counter++;
|
||||||
|
m_render_index++;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -241,7 +248,7 @@ void renderer::old_process(u32 nframes, float *buf) {
|
|||||||
u32 counter = m_target_index;
|
u32 counter = m_target_index;
|
||||||
//u32 cur_time = m_render_time;
|
//u32 cur_time = m_render_time;
|
||||||
while (counter<=tgt_end) {
|
while (counter<=tgt_end) {
|
||||||
u32 time=m_target_index*tgt_shift;
|
u32 time=m_render_index*tgt_shift;
|
||||||
u32 src_index=0;
|
u32 src_index=0;
|
||||||
|
|
||||||
switch (m_search_algo) {
|
switch (m_search_algo) {
|
||||||
|
@ -83,7 +83,7 @@ private:
|
|||||||
float m_volume;
|
float m_volume;
|
||||||
bool m_playing;
|
bool m_playing;
|
||||||
u32 m_target_index;
|
u32 m_target_index;
|
||||||
u32 m_target_counter;
|
u32 m_render_index;
|
||||||
float m_target_time;
|
float m_target_time;
|
||||||
u32 m_render_time;
|
u32 m_render_time;
|
||||||
u32 m_stretch;
|
u32 m_stretch;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user