From 7d7c7c82f62d1ccb95313986bd6ed2cb87492784 Mon Sep 17 00:00:00 2001 From: Dave Griffiths Date: Thu, 9 Jul 2015 22:59:44 +0100 Subject: [PATCH] demo readish --- samplebrain/Makefile.in | 2 -- samplebrain/dist.sh | 2 +- samplebrain/src/block.cpp | 21 ++++++++-------- samplebrain/src/block.h | 2 +- samplebrain/src/brain.cpp | 18 ++++++------- samplebrain/src/brain.h | 5 ++-- samplebrain/src/main.cpp | 15 +++++------ samplebrain/src/renderer.cpp | 49 ++++++++++++++++++++++-------------- 8 files changed, 62 insertions(+), 52 deletions(-) diff --git a/samplebrain/Makefile.in b/samplebrain/Makefile.in index 97208fd..a9fb82b 100644 --- a/samplebrain/Makefile.in +++ b/samplebrain/Makefile.in @@ -4,14 +4,12 @@ TARGET_LIB := libsamplebrain.a SRCS := src/fft.cpp \ src/brain.cpp \ src/block.cpp \ - src/libmfcc.cpp \ src/main.cpp \ src/mfcc.cpp \ src/renderer.cpp \ src/aquila/filter/MelFilterBank.cpp \ src/aquila/filter/MelFilter.cpp \ src/aquila/transform/Dct.cpp \ - src/renderer.cpp TARGET_SRCS := src/main.cpp diff --git a/samplebrain/dist.sh b/samplebrain/dist.sh index 44b24b4..96f6a72 100755 --- a/samplebrain/dist.sh +++ b/samplebrain/dist.sh @@ -4,4 +4,4 @@ make distclean autoheader # build configure autoconf configure.ac > configure -./configure CXX=g++-4.7 +./configure CXX=g++-4.7 CCFLAGS=-O3 diff --git a/samplebrain/src/block.cpp b/samplebrain/src/block.cpp index 7258149..73ac179 100644 --- a/samplebrain/src/block.cpp +++ b/samplebrain/src/block.cpp @@ -1,7 +1,6 @@ #include #include -#include "libmfcc.h" #include "block.h" using namespace spiralcore; @@ -20,7 +19,7 @@ void enveloper(sample &s, u32 start, u32 end) { } } -block::block(const string &filename, const sample &pcm, u32 rate, bool ditchpcm) : +block::block(const string &filename, const sample &pcm, u32 rate, u32 env, bool ditchpcm) : m_pcm(pcm), m_fft(pcm.get_length()), m_mfcc(MFCC_FILTERS), @@ -32,7 +31,7 @@ block::block(const string &filename, const sample &pcm, u32 rate, bool ditchpcm) assert(m_mfcc_proc!=NULL); assert(m_fftw!=NULL); - enveloper(m_pcm,50,50); + enveloper(m_pcm,env,env); m_fftw->impulse2freq(m_pcm.get_non_const_buffer()); @@ -104,7 +103,7 @@ bool block::unit_test() { data[i]=i/(float)data.get_length(); } - block bb("test",data,44100); + block bb("test",data,44100,0); assert(bb.m_pcm.get_length()==data.get_length()); //assert(bb.m_fft.get_length()==data.get_length()); @@ -113,7 +112,7 @@ bool block::unit_test() { assert(bb.m_rate==44100); assert(bb.m_block_size==data.get_length()); - block bb2("test",data,44100); + block bb2("test",data,44100,0); assert(bb.compare(bb2,1)==0); assert(bb.compare(bb2,0)==0); assert(bb.compare(bb2,0.5)==0); @@ -123,13 +122,13 @@ bool block::unit_test() { data[i]=i%10; } - block cpy("test",data,100); + block cpy("test",data,100,4); { - block bb3("test",data2,44100); - assert(bb.compare(bb3,1)!=0); - assert(bb.compare(bb3,0)!=0); - assert(bb.compare(bb3,0.5)!=0); - cpy=bb3; + block bb3("test",data2,44100,4); + assert(bb.compare(bb3,1)!=0); + assert(bb.compare(bb3,0)!=0); + assert(bb.compare(bb3,0.5)!=0); + cpy=bb3; } assert(cpy.m_pcm.get_length()==200); diff --git a/samplebrain/src/block.h b/samplebrain/src/block.h index b146b5d..1a2e7f0 100644 --- a/samplebrain/src/block.h +++ b/samplebrain/src/block.h @@ -12,7 +12,7 @@ namespace spiralcore { class block { public: // runs analysis on pcm - block(const std::string &filename, const sample &pcm, u32 rate, bool ditchpcm=false); + block(const std::string &filename, const sample &pcm, u32 rate, u32 env, bool ditchpcm=false); // returns distance based on ratio of fft-mfcc values double compare(const block &other, float ratio) const; diff --git a/samplebrain/src/brain.cpp b/samplebrain/src/brain.cpp index c871bc7..8487c83 100644 --- a/samplebrain/src/brain.cpp +++ b/samplebrain/src/brain.cpp @@ -38,23 +38,23 @@ void save_sample(const string &filename, const sample s) { } // rewrites whole brain -void brain::init(u32 block_size, u32 overlap, bool ditchpcm) { +void brain::init(u32 block_size, u32 overlap, u32 env, bool ditchpcm) { m_blocks.clear(); m_block_size = block_size; m_overlap = overlap; for (vector::iterator i=m_samples.begin(); i!=m_samples.end(); ++i) { - chop_and_add(*i, block_size, overlap, ditchpcm); + chop_and_add(*i, block_size, overlap, env, ditchpcm); } } -void brain::chop_and_add(const sample &s, u32 block_size, u32 overlap, bool ditchpcm) { +void brain::chop_and_add(const sample &s, u32 block_size, u32 overlap, u32 env, bool ditchpcm) { u32 pos=0; while (pos+block_size-1 m_blocks; vector m_samples; diff --git a/samplebrain/src/main.cpp b/samplebrain/src/main.cpp index 5e7c238..a94974e 100644 --- a/samplebrain/src/main.cpp +++ b/samplebrain/src/main.cpp @@ -53,20 +53,21 @@ void run_audio(void* c, unsigned int frames) { int main(int argc, char *argv[]) { -// unit_test(); + unit_test(); cerr<<"starting"<=m_target.get_num_blocks()) { + m_render_time=0; + m_render_blocks.clear(); + // next time... + return; + } + +// cerr<<"-----------------"<m_time-m_render_time; // assume midway through block - s32 block_start = offset; + u32 block_start = offset; u32 buffer_start = 0; - if (block_start<0) { - block_start=-block_start; + if (offset<0) { + block_start=-offset; if (block_start>=pcm.get_length()) i->m_finished=true; } else { // block is midway through buffer block_start=0; buffer_start=offset; } +// cerr<<"-----------------"<m_finished) { // mix in u32 buffer_pos = buffer_start; u32 block_pos = block_start; - u32 block_end = block_start+pcm.get_length(); + u32 block_end = pcm.get_length(); while (block_pos