Metadata-Version: 2.1
Name: loristrck
Version: 1.4.1
Summary: A wrapper around the partial-tracking library Loris
Home-page: https://github.com/gesellkammer/loristrck
Author: Eduardo Moguillansky
Author-email: eduardo.moguillansky@gmail.com
License: GPL
Download-URL: https://github.com/gesellkammer/loristrck
Platform: Linux
Platform: Mac OS-X
Platform: Windows
Requires-Python: >=3.8
License-File: LICENSE

LORISTRCK
=========

`loristrck` is a wrapper for the C++ partial-tracking library Loris.

It is written in cython and targets python 3 (>= 3.8 at the moment). The source of the library is included 
as part of the project and does not need to be installed previously.


C++ Library Dependencies:
  * fftw3_

.. _fftw3: http://www.fftw.org


Additional Python Module Dependencies:
  * Cython
  * NumPy
  * pysndfile + libsndfile
  * sounddevice to be able to play samples (see loristrck_play)


Optional dependencies:
  * csound (in order to play ``.mtx`` files, as generated by loristrck_pack)

--------------

Documentation
=============

https://loristrck.readthedocs.io

---------------

Installation
============

macOS
-----

::

    brew install fftw
    pip install loristrck


Linux
-----

::

    apt install libfftw3-dev libsndfile1-dev
    pip install loristrck


Windows
-------

::

    pip install loristrck


Install from source in Windows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You need to have Visual Studio installed

::

    # From a Developer Powershell
    python scripts/prepare_windows_build.py

    # From a normal prompt
    pip install .



Usage
=====

.. code-block:: python

   import loristrck as lt

   samples, sr = lt.sndreadmono("/path/to/sndfile.wav")
   partials = lt.analyze(samples, sr, resolution=60)
   # partials is a python list of numpy arrays
   # select a subset of most significant partials
   selected, noise = lt.select(partials, mindur=0.02, maxfreq=12000, minamp=-60, minbp=2)
   # print each partial as data
   for partial in selected:
       print(partial)
   # plot selected partials
   lt.plot_partials(selected)
   # now resynthesize both parts separately 
   lt.partials_render(selected, outfile="selected.wav")
   lt.partials_render(noise, outfile="noise.wav")
   

Each partial will be a numpy array of shape = (numbreakpoints, 5)
with the columns::

  time, frequency, amplitude, phase, bandwidth


See the example scripts in `bin` for more complete examples


See also
========

sndtrck: https://github.com/gesellkammer/sndtrck


Author
------

eduardo dot moguillansky @ gmail dot com


License
-------

GPL


