Name | liquid-dsp JSON |
Version |
1.6.0
JSON |
| download |
home_page | None |
Summary | software-defined radio digital signal processing library |
upload_time | 2024-07-11 22:23:38 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.7 |
license | Copyright (c) 2007 - 2016 Joseph Gaeddert Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
keywords |
digital
signal
processing
dsp
software-defined radio
sdr
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
|
coveralls test coverage |
No coveralls.
|
liquid-dsp
==========
Software-Defined Radio Digital Signal Processing Library -
[https://liquidsdr.org](https://liquidsdr.org)
[![Core CI](https://github.com/jgaeddert/liquid-dsp/actions/workflows/core.yml/badge.svg)](https://github.com/jgaeddert/liquid-dsp/actions/workflows/core.yml)
[![Python CI](https://github.com/jgaeddert/liquid-dsp/actions/workflows/python.yml/badge.svg)](https://github.com/jgaeddert/liquid-dsp/actions/workflows/python.yml)
[![codecov](https://codecov.io/gh/jgaeddert/liquid-dsp/branch/master/graph/badge.svg?token=ht8VIhp302)](https://codecov.io/gh/jgaeddert/liquid-dsp)
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://choosealicense.com/licenses/mit/)
[![Packaging status](https://repology.org/badge/tiny-repos/liquid-dsp.svg)](https://repology.org/project/liquid-dsp/versions)
liquid-dsp is a free and open-source digital signal processing (DSP)
library designed specifically for software-defined radios on embedded
platforms. The aim is to provide a lightweight DSP library that does not
rely on a myriad of external dependencies or proprietary and otherwise
cumbersome frameworks. All signal processing elements are designed to be
flexible, scalable, and dynamic, including filters, filter design,
oscillators, modems, synchronizers, complex mathematical operations, and
much more.
```c
// get in, manipulate data, get out
#include <liquid/liquid.h>
int main() {
unsigned int M = 4; // interpolation factor
unsigned int m = 12; // filter delay [symbols]
float As = 60.0f; // filter stop-band attenuation [dB]
// create interpolator from prototype
firinterp_crcf interp = firinterp_crcf_create_kaiser(M,m,As);
float complex x = 1.0f; // input sample
float complex y[M]; // interpolated output buffer
// repeat on input sample data as needed
{
firinterp_crcf_execute(interp, x, y);
}
// destroy interpolator object
firinterp_crcf_destroy(interp);
return 0;
}
```
For more information, please refer to the
[documentation](https://liquidsdr.org/doc) online.
## Installation and Dependencies ##
liquid-dsp only relies on `libc` and `libm` (standard C and math)
libraries to run; however liquid will take advantage of other libraries
(such as [FFTW](http://www.fftw.org)) if they are available.
If you build from the Git repository you will also need to install autotools
for generating the `configure.sh` script (e.g.
`brew install autoconf automake` on macOS,
`sudo apt-get install automake autoconf` on Debian variants).
### Installation ###
The recommended way to obtain the source code is to clone the entire
[repository](https://github.com/jgaeddert/liquid-dsp) from
[GitHub](https://github.com):
git clone git://github.com/jgaeddert/liquid-dsp.git
Building and installing the main library is a simple as
./bootstrap.sh
./configure
make
sudo make install
If you are installing on Linux for the first time, you will also need
to rebind your dynamic libraries with `sudo ldconfig` to make the
shared object available.
This is not necessary on macOS.
If you decide that you want to remove the installed DSP library, simply
run
sudo make uninstall
Seriously, I won't be offended.
### Run all test scripts ###
Source code validation is a critical step in any software library,
particularly for verifying the portability of code to different
processors and platforms. Packaged with liquid-dsp are a number of
automatic test scripts to validate the correctness of the source code.
The test scripts are located under each module's `tests/` directory and
take the form of a C source file. liquid includes a framework for
compiling, linking, and running the tests, and can be invoked with the
make target `check`, viz.
make check
There are currently more than 110,000 checks to verify functional correctness.
Drop me a line if these aren't running on your platform.
### Testing Code Coverage ###
In addition to the full test suite, you can configure `gcc` to export symbol
files to check for code coverage and then use `gcovr` to generate a full
report of precisely which lines are covered in the autotests. These symbol
files aren't generated by default and need to be enabled at compile-time
through a configure flag:
./configure --enable-coverage
Running the tests and generating the report through `gcovr` can be invoked
with the `coverage` make target:
make coverage
### Examples ###
Nearly all signal processing elements have a corresponding example in
the `examples/` directory. Most example scripts generate an output
`.m` file for plotting with [GNU octave](https://www.gnu.org/software/octave/)
All examples are built as stand-alone programs and can be compiled with
the make target `examples`:
make examples
Sometimes, however, it is useful to build one example individually.
This can be accomplished by directly targeting its binary
(e.g. `make examples/modem_example`). The example then can be run at the
command line, viz. `./examples/modem_example`.
### Benchmarking tool ###
Packaged with liquid are benchmarks to determine the speed each signal
processing element can run on your machine. Initially the tool provides
an estimate of the processor's clock frequency and will then estimate
the number of trials so that each benchmark will take between 50 and
500 ms to run. You can build and run the benchmark program with the
following command:
make bench
### Linking the C Library to C++ Programs
Compiling and linking to C++ programs is straightforward.
Just include `<complex>` before `<liquid/liquid.h>` and use
`std::complex<float>` in favor of `float complex`.
Here is the same example as the one above but in C++ instead of C:
```c++
// get in, manipulate data, get out
#include <complex>
#include <liquid/liquid.h>
int main() {
unsigned int M = 4; // interpolation factor
unsigned int m = 12; // filter delay [symbols]
float As = 60.0f; // filter stop-band attenuation [dB]
// create interpolator from prototype
firinterp_crcf interp = firinterp_crcf_create_kaiser(M,m,As);
std::complex<float> x = 1.0f; // input sample
std::complex<float> y[M]; // interpolated output buffer
// repeat on input sample data as needed
{
firinterp_crcf_execute(interp, x, y);
}
// destroy interpolator object
firinterp_crcf_destroy(interp);
return 0;
}
```
### C++ Bindings ###
While C is (mostly) a subset of C++, sometimes having a class structure
is more convenient than using C-style structs. These bindings do two things:
1. Wrap the C-style functionality into a set of header-only C++ class libraries
1. Bind these C++ classes into python3
The original C example can be re-written in C++ as follows:
```c++
// get in, manipulate data, get out
#include "firinterp.hh"
int main() {
unsigned int M = 4; // interpolation factor
unsigned int m = 12; // filter delay [symbols]
float As = 60.0f; // filter stop-band attenuation [dB]
// instantiate interpolator object from prototype
liquid::firinterp interp(M,m,As);
std::complex<float> x = 1.0f; // input sample
std::complex<float> y[M]; // interpolated output buffer
// repeat on input sample data as needed
{
interp.execute(x, y);
}
return 0;
}
```
### Python Bindings ###
Building python bindings depends on
[pybind11](https://pybind11.readthedocs.io/en/stable/),
the `python3` development libraries, and
a compatible C++14 compiler (e.g.
`brew install pybind11` on macOS or
`sudo apt-get install pybind11-dev` on Debian variants).
Then install the python dependencies with
`sudo -H python3 -m pip install pybind11 numpy matplotlib`.
Once these dependencies are installed, you can build the liquid-dsp python
library with
pip install .
From python3 simply use `import liquid as dsp`.
Our interpolation example used throughout this document can be written
in python3 as:
```python
# get in, manipulate data, get out
import liquid as dsp, numpy as np
# create the interpolator
interp = dsp.firinterp(M=4, m=12, As=60.)
# run on a single sample
buf = interp.execute(1+1j,)
```
### PlatformIO ###
Install [platformio](https://platformio.org)
(`brew install platformio` on macOS,
`sudo -H python3 -m pip install -U platformio` on Linux).
Add `liquid-dsp` to your `platform.io` list of dependencies:
```ini
[env:native]
platform = native
lib_deps = https://github.com/jgaeddert/liquid-dsp.git
```
## Available Modules ##
* _agc_: automatic gain control, received signal strength
* _audio_: source audio encoders/decoders: cvsd, filterbanks
* _buffer_: internal buffering, circular/static, ports (threaded)
* _channel_: additive noise, multi-path fading, carrier phase/frequency
offsets, timing phase/rate offsets
* _dotprod_: inner dot products (real, complex), vector sum of squares
* _equalization_: adaptive equalizers: least mean-squares, recursive
least squares, semi-blind
* _fec_: basic forward error correction codes including several
Hamming codes, single error correction/double error detection,
Golay block code, as well as several checksums and cyclic
redundancy checks, interleaving, soft decoding
* _fft_: fast Fourier transforms (arbitrary length), discrete sin/cos
transforms
* _filter_: finite/infinite impulse response, polyphase, hilbert,
interpolation, decimation, filter design, resampling, symbol
timing recovery
* _framing_: flexible framing structures for amazingly easy packet
software radio; dynamically adjust modulation and coding on the
fly with single- and multi-carrier framing structures
* _math_: transcendental functions not in the C standard library
(gamma, besseli, etc.), polynomial operations (curve-fitting,
root-finding, etc.)
* _matrix_: basic math, LU/QR/Cholesky factorization, inversion,
Gauss elimination, Gram-Schmidt decomposition, linear solver,
sparse matrix representation
* _modem_: modulate, demodulate, PSK, differential PSK, QAM, optimal
QAM, as well as analog and non-linear digital modulations GMSK)
* _multichannel_: filterbank channelizers, OFDM
* _nco_: numerically-controlled oscillator: mixing, frequency
synthesis, phase-locked loops
* _optim_: (non-linear optimization) Newton-Raphson, evoluationary
algorithms, gradient descent, line search
* _quantization_: analog/digital converters, compression/expansion
* _random_: (random number generators) uniform, exponential, gamma,
Nakagami-m, Gauss, Rice-K, Weibull
* _sequence_: linear feedback shift registers, complementary codes,
maximal-length sequences
* _utility_: useful miscellany, mostly bit manipulation (shifting,
packing, and unpacking of arrays)
* _vector_: generic vector operations
### License ###
liquid projects are released under the X11/MIT license.
By default, this project will try to link to [FFTW](http://www.fftw.org) if it
is available on your build platform.
Because FFTW starting with version 1.3 is
[licensed](http://www.fftw.org/faq/section1.html)
under the [GNU General Public License v2](http://www.fftw.org/doc/License-and-Copyright.html)
this unfortunately means that (and I'm clearly not a lawyer, here)
you cannot distribute `liquid-dsp` without also distributing the source code
if you link to FFTW.
This is a similar situation with the classic
[libfec](https://github.com/quiet/libfec)
which uses the
[GNU Lesser GPL](https://www.gnu.org/licenses/licenses.html#LGPL).
Finally, `liquid-dsp` makes extensive use of GNU
[autoconf](https://www.gnu.org/software/autoconf/),
[automake](https://www.gnu.org/software/automake/),
and related tools.
These are fantastic libraires with amazing functionality and their authors
should be lauded for their efforts.
In a similar vain, much the software I write for a living I give away for
free;
however I believe in more permissive licenses to allow individuals the
flexibility to use software with fewer limitations.
If these restrictions are not acceptible, `liquid-dsp` can be compiled and run
without use of these external libraries, albeit a bit slower and with limited
functionality.
Short version: this code is copyrighted to me (Joseph D. Gaeddert),
I give you full permission to do whatever you want with it except remove my
name from the credits.
Seriously, go nuts! but take caution when linking to other libraries with
different licenses.
See the [license](https://opensource.org/licenses/MIT) for specific terms.
Raw data
{
"_id": null,
"home_page": null,
"name": "liquid-dsp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "digital, signal, processing, DSP, software-defined radio, SDR",
"author": null,
"author_email": "\"Joseph D. Gaeddert\" <joseph@liquidsdr.org>",
"download_url": null,
"platform": null,
"description": "\nliquid-dsp\n==========\n\nSoftware-Defined Radio Digital Signal Processing Library -\n[https://liquidsdr.org](https://liquidsdr.org)\n\n[![Core CI](https://github.com/jgaeddert/liquid-dsp/actions/workflows/core.yml/badge.svg)](https://github.com/jgaeddert/liquid-dsp/actions/workflows/core.yml)\n[![Python CI](https://github.com/jgaeddert/liquid-dsp/actions/workflows/python.yml/badge.svg)](https://github.com/jgaeddert/liquid-dsp/actions/workflows/python.yml)\n[![codecov](https://codecov.io/gh/jgaeddert/liquid-dsp/branch/master/graph/badge.svg?token=ht8VIhp302)](https://codecov.io/gh/jgaeddert/liquid-dsp)\n[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://choosealicense.com/licenses/mit/)\n[![Packaging status](https://repology.org/badge/tiny-repos/liquid-dsp.svg)](https://repology.org/project/liquid-dsp/versions)\n\nliquid-dsp is a free and open-source digital signal processing (DSP)\nlibrary designed specifically for software-defined radios on embedded\nplatforms. The aim is to provide a lightweight DSP library that does not\nrely on a myriad of external dependencies or proprietary and otherwise\ncumbersome frameworks. All signal processing elements are designed to be\nflexible, scalable, and dynamic, including filters, filter design,\noscillators, modems, synchronizers, complex mathematical operations, and\nmuch more.\n\n```c\n// get in, manipulate data, get out\n#include <liquid/liquid.h>\nint main() {\n unsigned int M = 4; // interpolation factor\n unsigned int m = 12; // filter delay [symbols]\n float As = 60.0f; // filter stop-band attenuation [dB]\n\n // create interpolator from prototype\n firinterp_crcf interp = firinterp_crcf_create_kaiser(M,m,As);\n float complex x = 1.0f; // input sample\n float complex y[M]; // interpolated output buffer\n\n // repeat on input sample data as needed\n {\n firinterp_crcf_execute(interp, x, y);\n }\n\n // destroy interpolator object\n firinterp_crcf_destroy(interp);\n return 0;\n}\n```\n\nFor more information, please refer to the\n[documentation](https://liquidsdr.org/doc) online.\n\n## Installation and Dependencies ##\n\nliquid-dsp only relies on `libc` and `libm` (standard C and math)\nlibraries to run; however liquid will take advantage of other libraries\n(such as [FFTW](http://www.fftw.org)) if they are available.\n\nIf you build from the Git repository you will also need to install autotools\nfor generating the `configure.sh` script (e.g.\n`brew install autoconf automake` on macOS,\n`sudo apt-get install automake autoconf` on Debian variants).\n\n### Installation ###\n\nThe recommended way to obtain the source code is to clone the entire\n[repository](https://github.com/jgaeddert/liquid-dsp) from\n[GitHub](https://github.com):\n\n git clone git://github.com/jgaeddert/liquid-dsp.git\n\nBuilding and installing the main library is a simple as\n\n ./bootstrap.sh\n ./configure\n make\n sudo make install\n\nIf you are installing on Linux for the first time, you will also need\nto rebind your dynamic libraries with `sudo ldconfig` to make the\nshared object available.\nThis is not necessary on macOS.\n\nIf you decide that you want to remove the installed DSP library, simply\nrun\n\n sudo make uninstall\n\nSeriously, I won't be offended.\n\n### Run all test scripts ###\n\nSource code validation is a critical step in any software library,\nparticularly for verifying the portability of code to different\nprocessors and platforms. Packaged with liquid-dsp are a number of\nautomatic test scripts to validate the correctness of the source code.\nThe test scripts are located under each module's `tests/` directory and\ntake the form of a C source file. liquid includes a framework for\ncompiling, linking, and running the tests, and can be invoked with the\nmake target `check`, viz.\n\n make check\n\nThere are currently more than 110,000 checks to verify functional correctness.\nDrop me a line if these aren't running on your platform.\n\n### Testing Code Coverage ###\n\nIn addition to the full test suite, you can configure `gcc` to export symbol\nfiles to check for code coverage and then use `gcovr` to generate a full\nreport of precisely which lines are covered in the autotests. These symbol\nfiles aren't generated by default and need to be enabled at compile-time\nthrough a configure flag:\n\n ./configure --enable-coverage\n\nRunning the tests and generating the report through `gcovr` can be invoked\nwith the `coverage` make target:\n\n make coverage\n\n### Examples ###\n\nNearly all signal processing elements have a corresponding example in\nthe `examples/` directory. Most example scripts generate an output\n`.m` file for plotting with [GNU octave](https://www.gnu.org/software/octave/)\nAll examples are built as stand-alone programs and can be compiled with\nthe make target `examples`:\n\n make examples\n\nSometimes, however, it is useful to build one example individually.\nThis can be accomplished by directly targeting its binary\n(e.g. `make examples/modem_example`). The example then can be run at the\ncommand line, viz. `./examples/modem_example`.\n\n### Benchmarking tool ###\n\nPackaged with liquid are benchmarks to determine the speed each signal\nprocessing element can run on your machine. Initially the tool provides\nan estimate of the processor's clock frequency and will then estimate\nthe number of trials so that each benchmark will take between 50 and\n500 ms to run. You can build and run the benchmark program with the\nfollowing command:\n\n make bench\n\n### Linking the C Library to C++ Programs\n\nCompiling and linking to C++ programs is straightforward.\nJust include `<complex>` before `<liquid/liquid.h>` and use \n`std::complex<float>` in favor of `float complex`.\nHere is the same example as the one above but in C++ instead of C:\n\n```c++\n// get in, manipulate data, get out\n#include <complex>\n#include <liquid/liquid.h>\nint main() {\n unsigned int M = 4; // interpolation factor\n unsigned int m = 12; // filter delay [symbols]\n float As = 60.0f; // filter stop-band attenuation [dB]\n\n // create interpolator from prototype\n firinterp_crcf interp = firinterp_crcf_create_kaiser(M,m,As);\n std::complex<float> x = 1.0f; // input sample\n std::complex<float> y[M]; // interpolated output buffer\n\n // repeat on input sample data as needed\n {\n firinterp_crcf_execute(interp, x, y);\n }\n\n // destroy interpolator object\n firinterp_crcf_destroy(interp);\n return 0;\n}\n```\n\n### C++ Bindings ###\n\nWhile C is (mostly) a subset of C++, sometimes having a class structure\nis more convenient than using C-style structs. These bindings do two things:\n\n 1. Wrap the C-style functionality into a set of header-only C++ class libraries\n 1. Bind these C++ classes into python3\n\nThe original C example can be re-written in C++ as follows:\n\n```c++\n// get in, manipulate data, get out\n#include \"firinterp.hh\"\nint main() {\n unsigned int M = 4; // interpolation factor\n unsigned int m = 12; // filter delay [symbols]\n float As = 60.0f; // filter stop-band attenuation [dB]\n\n // instantiate interpolator object from prototype\n liquid::firinterp interp(M,m,As);\n std::complex<float> x = 1.0f; // input sample\n std::complex<float> y[M]; // interpolated output buffer\n\n // repeat on input sample data as needed\n {\n interp.execute(x, y);\n }\n return 0;\n}\n```\n\n### Python Bindings ###\n\nBuilding python bindings depends on\n[pybind11](https://pybind11.readthedocs.io/en/stable/),\nthe `python3` development libraries, and\na compatible C++14 compiler (e.g.\n`brew install pybind11` on macOS or\n`sudo apt-get install pybind11-dev` on Debian variants).\nThen install the python dependencies with\n`sudo -H python3 -m pip install pybind11 numpy matplotlib`.\n\nOnce these dependencies are installed, you can build the liquid-dsp python\nlibrary with\n\n pip install .\n\nFrom python3 simply use `import liquid as dsp`.\nOur interpolation example used throughout this document can be written\nin python3 as:\n\n```python\n# get in, manipulate data, get out\nimport liquid as dsp, numpy as np\n\n# create the interpolator\ninterp = dsp.firinterp(M=4, m=12, As=60.)\n\n# run on a single sample\nbuf = interp.execute(1+1j,)\n```\n\n### PlatformIO ###\n\nInstall [platformio](https://platformio.org)\n(`brew install platformio` on macOS,\n`sudo -H python3 -m pip install -U platformio` on Linux).\nAdd `liquid-dsp` to your `platform.io` list of dependencies:\n\n```ini\n[env:native]\nplatform = native\nlib_deps = https://github.com/jgaeddert/liquid-dsp.git\n```\n\n## Available Modules ##\n\n * _agc_: automatic gain control, received signal strength\n * _audio_: source audio encoders/decoders: cvsd, filterbanks\n * _buffer_: internal buffering, circular/static, ports (threaded)\n * _channel_: additive noise, multi-path fading, carrier phase/frequency\n offsets, timing phase/rate offsets\n * _dotprod_: inner dot products (real, complex), vector sum of squares\n * _equalization_: adaptive equalizers: least mean-squares, recursive\n least squares, semi-blind\n * _fec_: basic forward error correction codes including several\n Hamming codes, single error correction/double error detection,\n Golay block code, as well as several checksums and cyclic\n redundancy checks, interleaving, soft decoding\n * _fft_: fast Fourier transforms (arbitrary length), discrete sin/cos\n transforms\n * _filter_: finite/infinite impulse response, polyphase, hilbert,\n interpolation, decimation, filter design, resampling, symbol\n timing recovery\n * _framing_: flexible framing structures for amazingly easy packet\n software radio; dynamically adjust modulation and coding on the\n fly with single- and multi-carrier framing structures\n * _math_: transcendental functions not in the C standard library\n (gamma, besseli, etc.), polynomial operations (curve-fitting,\n root-finding, etc.)\n * _matrix_: basic math, LU/QR/Cholesky factorization, inversion,\n Gauss elimination, Gram-Schmidt decomposition, linear solver,\n sparse matrix representation\n * _modem_: modulate, demodulate, PSK, differential PSK, QAM, optimal\n QAM, as well as analog and non-linear digital modulations GMSK)\n * _multichannel_: filterbank channelizers, OFDM\n * _nco_: numerically-controlled oscillator: mixing, frequency\n synthesis, phase-locked loops\n * _optim_: (non-linear optimization) Newton-Raphson, evoluationary\n algorithms, gradient descent, line search\n * _quantization_: analog/digital converters, compression/expansion\n * _random_: (random number generators) uniform, exponential, gamma,\n Nakagami-m, Gauss, Rice-K, Weibull\n * _sequence_: linear feedback shift registers, complementary codes,\n maximal-length sequences\n * _utility_: useful miscellany, mostly bit manipulation (shifting,\n packing, and unpacking of arrays)\n * _vector_: generic vector operations\n\n### License ###\n\nliquid projects are released under the X11/MIT license.\nBy default, this project will try to link to [FFTW](http://www.fftw.org) if it\nis available on your build platform.\nBecause FFTW starting with version 1.3 is\n[licensed](http://www.fftw.org/faq/section1.html)\nunder the [GNU General Public License v2](http://www.fftw.org/doc/License-and-Copyright.html)\nthis unfortunately means that (and I'm clearly not a lawyer, here)\nyou cannot distribute `liquid-dsp` without also distributing the source code\nif you link to FFTW.\nThis is a similar situation with the classic\n[libfec](https://github.com/quiet/libfec)\nwhich uses the\n[GNU Lesser GPL](https://www.gnu.org/licenses/licenses.html#LGPL).\nFinally, `liquid-dsp` makes extensive use of GNU\n[autoconf](https://www.gnu.org/software/autoconf/),\n[automake](https://www.gnu.org/software/automake/),\nand related tools.\nThese are fantastic libraires with amazing functionality and their authors\nshould be lauded for their efforts.\nIn a similar vain, much the software I write for a living I give away for\nfree;\nhowever I believe in more permissive licenses to allow individuals the\nflexibility to use software with fewer limitations.\nIf these restrictions are not acceptible, `liquid-dsp` can be compiled and run\nwithout use of these external libraries, albeit a bit slower and with limited\nfunctionality.\n\nShort version: this code is copyrighted to me (Joseph D. Gaeddert),\nI give you full permission to do whatever you want with it except remove my\nname from the credits.\nSeriously, go nuts! but take caution when linking to other libraries with\ndifferent licenses.\nSee the [license](https://opensource.org/licenses/MIT) for specific terms.\n\n",
"bugtrack_url": null,
"license": "Copyright (c) 2007 - 2016 Joseph Gaeddert Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"summary": "software-defined radio digital signal processing library",
"version": "1.6.0",
"project_urls": {
"Changelog": "https://github.com/jgaeddert/liquid-dsp/blob/master/CHANGELOG.md",
"Documentation": "https://liquidsdr.org/doc",
"Homepage": "https://liquidsdr.org",
"Issues": "https://github.com/jgaeddert/liquid-dsp/issues",
"Repository": "https://github.com/jgaeddert/liquid-dsp"
},
"split_keywords": [
"digital",
" signal",
" processing",
" dsp",
" software-defined radio",
" sdr"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b8384d471bb380eb58889e69007551fb81f78779e63b7ba1406115d92d8f22be",
"md5": "d7b063b1584faea5f93feabc61ea81f9",
"sha256": "cb78a0cf1d673296c487d0caa43c4bd49abcc519387555d84fba839e81344558"
},
"downloads": -1,
"filename": "liquid_dsp-1.6.0-cp312-cp312-macosx_13_0_x86_64.whl",
"has_sig": false,
"md5_digest": "d7b063b1584faea5f93feabc61ea81f9",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.7",
"size": 1628607,
"upload_time": "2024-07-11T22:23:38",
"upload_time_iso_8601": "2024-07-11T22:23:38.454436Z",
"url": "https://files.pythonhosted.org/packages/b8/38/4d471bb380eb58889e69007551fb81f78779e63b7ba1406115d92d8f22be/liquid_dsp-1.6.0-cp312-cp312-macosx_13_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-11 22:23:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jgaeddert",
"github_project": "liquid-dsp",
"travis_ci": true,
"coveralls": false,
"github_actions": true,
"lcname": "liquid-dsp"
}