|
Welcome to Wiki pages of the Digital Signal Processing Engine library (DSPElib). |
|
**Welcome to Wiki pages of the Digital Signal Processing Engine library (DSPElib)**
|
|
\ No newline at end of file |
|
|
|
|
|
The DSPElib is a C++ library for rapid multirate digital signal processing (DSP) standalone applications development.
|
|
|
|
The library provides extensive support for debugging of standalone DSP application. It has been prepared for the use
|
|
|
|
with gcc compiler in Windows with MinGW and Linux. Full Linux support still requires development of audio input and output blocks.
|
|
|
|
|
|
|
|
The main idea of the library is that DSP algorithm blocks correspond directly to C++ objects
|
|
|
|
and the DSP algorithm is implemented by clocks definitions, objects creation and definition of connections between particular inputs and outputs.
|
|
|
|
|
|
|
|
**Basic code example:**
|
|
|
|
~~~C++
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
long int Fp;
|
|
|
|
DSP_clock_ptr MasterClock;
|
|
|
|
|
|
|
|
// mater clock declaration
|
|
|
|
MasterClock = DSP_clock::CreateMasterClock();
|
|
|
|
|
|
|
|
// DSP blocks creation
|
|
|
|
DSP::u::WaveInput AudioIn(MasterClock, "test.wav", ".");
|
|
|
|
Fp = AudioIn.GetSamplingRate();
|
|
|
|
DSP::u::AudioOutput AudioOut(Fp);
|
|
|
|
|
|
|
|
// connection definition
|
|
|
|
AudioIn.Output("out") >> AudioOut.Input("in"));
|
|
|
|
|
|
|
|
// processing loop
|
|
|
|
do {
|
|
|
|
DSP_clock::Execute(MasterClock, Fp/8);
|
|
|
|
} while (AudioIn.GetBytesRead() != 0);
|
|
|
|
|
|
|
|
// final cleanup
|
|
|
|
DSP_clock::FreeClocks();
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
~~~
|
|
|
|
|
|
|
|
**Features:**
|
|
|
|
|
|
|
|
- Support for DSP multirate algorithms with feedback loops (sample by sample processing: non-block processing)
|
|
|
|
- Simplified DSP algorithms implementation
|
|
|
|
- implementation with direct relation to algorithm’s block scheme with simple code syntax
|
|
|
|
- Simplified DSP algorithm modification
|
|
|
|
- algorithms can be readily redesigned - new blocks introduction or blocks replacement with blocks connections reorganization is extremely simple
|
|
|
|
- high backward compatibility: library kernel modifications (performance improvements or bugs eliminations) does not require application code modification
|
|
|
|
- DSP algorithms debugging
|
|
|
|
- signals at any point of implemented algorithm can be readily accessed
|
|
|
|
- extended logging: e.g. reporting problems with algorithm structure or clocks mismatch; problems reporting with the use of standard of user defined block names
|
|
|
|
- runtime algorithm block scheme generation (based on actual implementation)
|
|
|
|
- Simplied creation of library extentions (at different library levels)
|
|
|
|
- macro objects (representing groups of DSP blocks with their connections)
|
|
|
|
- special blocks with used defined callbacks
|
|
|
|
- new DSPE library blocks (C++ classes) – all basic DSP blocks managment mechanisms are preimplemented
|
|
|
|
|
|
|
|
|
|
|
|
**More details:**
|
|
|
|
|
|
|
|
- [Library documentation page](VSCode-DSPElib-readme.md)
|
|
|
|
- [Notes on library use with Visual Studio Code](DSPElib-documentation.md) |
|
|
|
\ No newline at end of file |