Begun creation of audio database class. Rethought AudioFile class design (removed mode switching approach)

This commit is contained in:
2016-07-11 20:59:54 +01:00
committed by Sam Perry
parent 7f56ede916
commit 6cb48863cf
6 changed files with 77 additions and 26 deletions
+4 -1
View File
@@ -20,7 +20,7 @@ set(Boost_USE_STATIC_RUNTIME OFF)
###############################################################################
# Set build flags
set(CMAKE_CXX_FLAGS "-g -Wall ")
set(CMAKE_CXX_FLAGS "-g -Wall")
# Set cmake to output executable to the bin directory
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
@@ -56,7 +56,10 @@ add_subdirectory(external)
add_executable(concatenator ${CONCATENATOR_SOURCE_FILES} ${CONCATENATOR_HEADER_FILES})
# Link to external libraries
target_link_libraries(concatenator ${Boost_LIBRARIES})
target_link_libraries(concatenator ${LIBSNDFILE_LIBRARIES})
# Test build options (this code adapted from: https://github.com/ComicSansMS/GhulbusBase/blob/master/CMakeLists.txt)
option(BUILD_TESTS "Determines whether to build tests." ON)
if(BUILD_TESTS)
+45
View File
@@ -0,0 +1,45 @@
#include <iostream>
#include <string>
#include <list>
using std::string;
using std::cout;
using std::endl;
class AudioDatabase {
public:
template<typename Iter>
AudioDatabase(std::string audio_dir, std::string database_dir, Iter it, Iter end);
private:
std::string database_dir = "";
std::string audio_dir = "";
};
template<typename container>
bool in_array(const string &value, const container &array)
{
cout <<"Test: " << value << endl;
return std::find(array.begin(), array.end(), value) != array.end();
}
template<typename Iter>
bool check_analyses_valid(Iter iterator, Iter end)
{
static std::list<string> valid_analyses = {"f0", "RMS"};
while(iterator != end)
{
if(!in_array(*iterator, valid_analyses)) {
cout << "Nope!" << endl;
return false;
}
++iterator;
}
return true;
}
template<typename Iter>
AudioDatabase::AudioDatabase(string audio_dir, string database_dir, Iter it, Iter end) {
cout << "HELLO?!?" << endl;
check_analyses_valid(it, end);
}
+7 -9
View File
@@ -3,19 +3,17 @@
class AudioFile {
public:
AudioFile(const char * fname, bool open=true);
AudioFile(const char * fname, int format, int channels, int samplerate);
~AudioFile();
void swap_mode(std::string m);
bool is_open() { return open; };
private:
std::string mode;
std::string name;
bool open;
AudioFile(const char * &name, const int &mode=SFM_RDWR, const int &format=0, const int &channels=0, const int &samplerate=0);
int open(const int &mode=SFM_READ, const int &format=0, const int &channels=0, const int &samplerate=0);
protected:
SndfileHandle file;
SF_INFO* file_info;
private:
std::string name;
};
class AnalysedAudioFile : public AudioFile {
public:
private:
};
+1
View File
@@ -0,0 +1 @@
+15 -14
View File
@@ -1,22 +1,23 @@
#include "AudioFile.h"
#include <string>
#include <vector>
#include <iostream>
using namespace std;
AudioFile::AudioFile(const char * fname, bool open)
AudioFile::AudioFile(const char * &name, const int &mode, const int &format, const int &channels, const int &samplerate)
{
if(open) {
file = SndfileHandle(fname);
this->name = name;
open(mode, format, channels, samplerate);
}
int AudioFile::open(const int &mode, const int &format, const int &channels, const int &samplerate)
{
switch(mode){
case SFM_READ: file = SndfileHandle(name);
case SFM_WRITE: file = SndfileHandle(name, SFM_WRITE, format, channels, samplerate);
case SFM_RDWR: file = SndfileHandle(name, SFM_RDWR, format, channels, samplerate);
}
name = fname;
}
AudioFile::AudioFile(const char * fname, const int format, const int channels, const int samplerate)
{
}
void AudioFile::swap_mode(string m)
{
return 0;
}
+5 -2
View File
@@ -1,15 +1,18 @@
#include <iostream>
#include "Logger.h"
#include "logger.h"
#include "ArgumentParser.h"
#include "AudioDatabase.h"
#include <vector>
using namespace std;
int main(int argc, char** argv) {
Logger log = Logger();
ArgumentParser argparse = ArgumentParser();
//argparse.parseargs(argc, argv);
log.error("My pretty little error!");
vector<string> analyses = {"BLARGH"};
AudioDatabase db = AudioDatabase("./", "./", analyses.begin(), analyses.end());
return 0;
}