diff --git a/README.md b/README.md new file mode 100644 index 0000000..da779e9 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# Concatenator + +A C++ application for generating granular synthesis driven representations of +audio files based on audio database analysis. + +This application is under development with the aim to explore the creative +potential of combining short-time audio analyses with granular synthesis, to +synthesize perceptually related representations of target audio files. Through +use of analysed databases of varying sizes, an output can be generated that +represents a mix of the spectral and temporal features of the original target +sound and the corpus of source sounds. + +To achieve this, a technique known as "concatenative synthesis" is used. This +form of synthesis combines the ability to window and join small segments of +sound to create a new sound (a process known as granular synthesis), with audio +analysis techniques capable of describing a sound in order to differentiate it +from others. By analysing small segments in a target sound for their perceptual +characteristics (such as pitch, timbre and loudness), it is then possible to +compare these segments to a collection of source sounds to find perceptually +similar segments. From this, the most perceptually similar matches can be taken +and joined using granular synthesis techniques in order to achieve the final +result. + +Note: This project is currently under development and is not ready for release. +This project is based on the pysound project developed to explore concatenative +synthesis in Python which can be found here: +https://github.com/Pezz89/pysound +This project's primary goal at present is to build on the performance of +Pysound through the higher efficiency of the C++ language and to address issues +with packaging and distribution encountered during the development of that +project. diff --git a/include/AudioDatabase.h b/include/AudioDatabase.h new file mode 100644 index 0000000..e69de29 diff --git a/include/logger.h b/include/logger.h new file mode 100644 index 0000000..e69de29 diff --git a/src/ArgumentParser.cpp b/src/ArgumentParser.cpp index 8f88548..70110f3 100644 --- a/src/ArgumentParser.cpp +++ b/src/ArgumentParser.cpp @@ -5,7 +5,8 @@ using namespace std; ArgumentParser::ArgumentParser() : desc("Allowed options") { // Add positional arguments to specify source, target and output database locations. - positionalOptions.add("input_db", 1); + positionalOptions.add("source_db", 1); + positionalOptions.add("target_db", 1); positionalOptions.add("output_db", 1); // Add optional arguments to allow control over application settings from the command line. diff --git a/src/AudioDatabase.cpp b/src/AudioDatabase.cpp new file mode 100644 index 0000000..e69de29 diff --git a/src/AudioFile.cpp b/src/AudioFile.cpp index 351f1f8..ac433c5 100644 --- a/src/AudioFile.cpp +++ b/src/AudioFile.cpp @@ -4,3 +4,8 @@ class AudioFile { public: private: }; + +class AnalysedAudioFile : public AudioFile { + public: + private: +}; diff --git a/src/concatenator.cpp b/src/concatenator.cpp index 86971b0..5bb3aff 100644 --- a/src/concatenator.cpp +++ b/src/concatenator.cpp @@ -1,11 +1,11 @@ #include #include "ArgumentParser.h" +#include "AudioDatabase.h" using namespace std; int main(int argc, char** argv) { - // Declare the supported options. ArgumentParser argparse = ArgumentParser(); argparse.parseargs(argc, argv); cout << "Hello world!" << endl; diff --git a/src/logger.cpp b/src/logger.cpp new file mode 100644 index 0000000..e69de29