tomwalters@5: // Copyright 2010, Thomas Walters
tomwalters@0: //
tomwalters@0: // AIM-C: A C++ implementation of the Auditory Image Model
tomwalters@0: // http://www.acousticscale.org/AIMC
tomwalters@0: //
tomwalters@0: // This program is free software: you can redistribute it and/or modify
tomwalters@0: // it under the terms of the GNU General Public License as published by
tomwalters@0: // the Free Software Foundation, either version 3 of the License, or
tomwalters@0: // (at your option) any later version.
tomwalters@0: //
tomwalters@0: // This program is distributed in the hope that it will be useful,
tomwalters@0: // but WITHOUT ANY WARRANTY; without even the implied warranty of
tomwalters@0: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
tomwalters@0: // GNU General Public License for more details.
tomwalters@0: //
tomwalters@0: // You should have received a copy of the GNU General Public License
tomwalters@0: // along with this program. If not, see .
tomwalters@0:
tomwalters@1: %module aimc
tomwalters@1: %include "std_string.i"
tomwalters@0: %{
tomwalters@0: #include "Support/Common.h"
tomwalters@0: #include "Support/Module.h"
tomwalters@0: #include "Support/Parameters.h"
tomwalters@0: #include "Support/SignalBank.h"
tomwalters@0: #include "Modules/Features/ModuleGaussians.h"
tomwalters@5: #include "Modules/BMM/ModuleGammatone.h"
tomwalters@0: %}
tomwalters@0:
tomwalters@0: namespace aimc {
tomwalters@0: class Parameters {
tomwalters@0: public:
tomwalters@0: Parameters();
tomwalters@0: ~Parameters();
tomwalters@0: bool Load(const char *sParamFilename);
tomwalters@0: bool Save(const char *sParamFilename);
tomwalters@1: std::string WriteString();
tomwalters@0: bool Merge(const char *sParamFilename);
tomwalters@1: const char* DefaultString(const char *sName, const char *val);
tomwalters@1: int DefaultInt(const char *sName, int val);
tomwalters@1: unsigned int DefaultUInt(const char *sName, unsigned int val);
tomwalters@1: float DefaultFloat(const char *sName, float val);
tomwalters@1: bool DefaultBool(const char *sName, bool val);
tomwalters@0: void SetString(const char *sName, const char *val);
tomwalters@0: void SetInt(const char *sName, int val);
tomwalters@0: void SetUInt(const char *sName, unsigned int val);
tomwalters@0: void SetFloat(const char *sName, float val);
tomwalters@0: void SetBool(const char *sName, bool val);
tomwalters@0: const char *GetString(const char *sName);
tomwalters@0: int GetInt(const char *sName);
tomwalters@0: unsigned int GetUInt(const char *sName);
tomwalters@0: float GetFloat(const char *sName);
tomwalters@0: bool GetBool(const char *sName);
tomwalters@0: bool IsSet(const char *sName);
tomwalters@0: bool Parse(const char *sCmd);
tomwalters@0: bool Delete(const char *sName);
tomwalters@0: static const unsigned int MaxParamNameLength = 128;
tomwalters@0: };
tomwalters@0:
tomwalters@0: class SignalBank {
tomwalters@0: public:
tomwalters@1: SignalBank();
tomwalters@1: ~SignalBank();
tomwalters@1: bool Initialize(int channel_count, int signal_length, float sample_rate);
tomwalters@1: bool Initialize(const SignalBank &input);
tomwalters@1: bool Validate() const;
tomwalters@1: const vector &operator[](int channel) const;
tomwalters@1: float sample(int channel, int index) const;
tomwalters@1: void set_sample(int channel, int index, float value);
tomwalters@1: float sample_rate() const;
tomwalters@1: int buffer_length() const;
tomwalters@1: int start_time() const;
tomwalters@1: void set_start_time(int start_time);
tomwalters@11: float centre_frequency(int i) const;
tomwalters@1: void set_centre_frequency(int i, float cf);
tomwalters@1: bool initialized() const;
tomwalters@1: int channel_count() const;
tomwalters@0: };
tomwalters@0:
tomwalters@0: class Module {
tomwalters@0: public:
tomwalters@0: explicit Module(Parameters *parameters);
tomwalters@0: virtual ~Module();
tomwalters@0: bool Initialize(const SignalBank &input);
tomwalters@0: bool initialized() const;
tomwalters@0: bool AddTarget(Module* target_module);
tomwalters@11: bool RemoveTarget(Module* target_module);
tomwalters@11: void RemoveAllTargets();
tomwalters@0: virtual void Process(const SignalBank &input) = 0;
tomwalters@0: virtual void Reset() = 0;
tomwalters@0: const SignalBank* GetOutputBank() const;
tomwalters@0: private:
tomwalters@0: DISALLOW_COPY_AND_ASSIGN(Module);
tomwalters@0: };
tomwalters@0:
tomwalters@0: class ModuleGaussians : public Module
tomwalters@0: {
tomwalters@0: public:
tomwalters@0: ModuleGaussians(Parameters *pParam);
tomwalters@0: virtual ~ModuleGaussians();
tomwalters@0: virtual void Process(const SignalBank &input);
tomwalters@0: void Reset();
tomwalters@0: };
tomwalters@5:
tomwalters@5: class ModuleGammatone : public Module
tomwalters@5: {
tomwalters@5: public:
tomwalters@5: ModuleGammatone(Parameters *pParam);
tomwalters@5: virtual ~ModuleGammatone();
tomwalters@5: virtual void Process(const SignalBank &input);
tomwalters@5: void Reset();
tomwalters@5: };
tomwalters@0: } // namespace aimc
tomwalters@0: