<table border="0">
<tr>
<td><img src=docs/build/html/_static/libnmfd_logo.png alt="libsoni logo" width="1000"></td>
<td><h2>libnmfd: Music Processing Applications of Nonnegative Matrix Factorization</h2>
<br> <br>
</td>
</tr>
</table>
Nonnegative matrix factorization (NMF) is a family of methods widely used for information retrieval across domains
including text, images, and audio. Within music processing, NMF has been used for tasks such as transcription,
source separation, and structure analysis. Prior work has shown that initialization and constrained update rules can
drastically improve the chances of NMF converging to a musically meaningful solution. Along these lines we present the
libnmfd (NMF toolbox), which contains Python implementations of conceptually distinct NMF variants---in particular,
the repository includes an overview for two algorithms. The first variant, called nonnegative matrix factor
deconvolution (NMFD), extends the original NMF algorithm to the convolutive case, enforcing the temporal order of
spectral templates. The second variant, called diagonal NMF, supports the development of sparse diagonal structures in
the activation matrix. Our toolbox contains several demo applications and code examples to illustrate its potential and
functionality. See also the [AudioLabs webpage](https://www.audiolabs-erlangen.de/resources/MIR/NMFtoolbox).
## Installation Guide
We outline two primary methods for setting up ``libnmfd`` using pip and setting up a dedicated environment.
### Method I: Installing with pip
Utilize Python's package manager, pip, for a straightforward installation of ``libnmfd``:
```
pip install libnmfd
```
Note: We advise performing this installation within a Python environment (such as conda or a virtual environment)
to prevent any conflicts with other packages. Ensure your environment runs Python 3.7 or higher.
### Method II: Setting Up a Conda Environment
Alternatively, you can establish a conda environment specifically for ``libnmfd`` by employing the
``environment_libnmfd.yml`` file. This approach not only installs ``libnmfd`` but also includes necessary packages like
libnmfd and jupyter to facilitate running demo files. Run the following command:
```
conda env create -f environment_libnmfd.yml
```
## Running Example Notebooks
To explore ``libnmfd`` through example notebooks:
1. **Install ``libnmfd``:** Prior to cloning the repository and running the notebooks, ensure libnmfd and its dependencies are installed (as described above).
2. **Clone the repository:** Download the ``libnmfd`` repository to your local machine using the following git command:
```
git clone https://github.com/groupmm/libnmfd.git
```
3. **Install Jupyter:** If not already installed via the conda environment setup, install Jupyter to run the notebooks:
```
pip install jupyter
```
4. **Launch Jupyter Notebook:** Start the Jupyter notebook server by executing:
```
jupyter notebook
```
This will open a browser window from where you can navigate to and open the example notebooks.
## Licence
The code for this toolbox is published under an [MIT licence](LICENCE).
## References
[1] Patricio López-Serrano, Christian Dittmar, Yiğitcan Özer, and Meinard Müller\
**NMF Toolbox: Music Processing Applications of Nonnegative Matrix Factorization** \
In Proceedings of the International Conference on Digital Audio Effects (DAFx), 2019.
[2] Christian Dittmar and Meinard Müller \
**Reverse Engineering the Amen Break — Score-Informed Separation and Restoration Applied to Drum Recordings** \
IEEE/ACM Transactions on Audio, Speech, and Language Processing, 24(9): 1531–1543, 2016.
[3] Jonathan Driedger, Thomas Prätzlich, and Meinard Müller \
**Let It Bee — Towards NMF-Inspired Audio Mosaicing** \
In Proceedings of the International Society for Music Information Retrieval Conference (ISMIR): 350–356, 2015.
[4] Paris Smaragdis \
**Non-negative Matrix Factor Deconvolution; Extraction of Multiple Sound Sources from Monophonic Inputs** \
In Proceedings of the International Conference on Independent Component Analysis and Blind Signal Separation
(ICA): 494–499, 2004.
[5] Daniel D. Lee and H. Sebastian Seung \
**Learning the parts of objects by non-negative matrix factorization** \
Nature, 401(6755): 788–791, 1999.
Raw data
{
"_id": null,
"home_page": "https://github.com/groupmm/libnmfd",
"name": "libnmfd",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "audio music sound nmf decomposition",
"author": "Patricio L\u00f3pez-Serrano, Christian Dittmar, Yigitcan \u00d6zer and Meinard M\u00fcller",
"author_email": "christian.dittmar@iis.fraunhofer.de",
"download_url": "https://files.pythonhosted.org/packages/04/49/d07e42d9dc06ce10181a58e7fde23739c5ea480f4f453e49ec32b09282cb/libnmfd-1.0.0.tar.gz",
"platform": null,
"description": "<table border=\"0\">\n <tr>\n <td><img src=docs/build/html/_static/libnmfd_logo.png alt=\"libsoni logo\" width=\"1000\"></td>\n <td><h2>libnmfd: Music Processing Applications of Nonnegative Matrix Factorization</h2>\n<br> <br>\n</td>\n </tr>\n</table>\n\nNonnegative matrix factorization (NMF) is a family of methods widely used for information retrieval across domains\nincluding text, images, and audio. Within music processing, NMF has been used for tasks such as transcription,\nsource separation, and structure analysis. Prior work has shown that initialization and constrained update rules can \ndrastically improve the chances of NMF converging to a musically meaningful solution. Along these lines we present the \nlibnmfd (NMF toolbox), which contains Python implementations of conceptually distinct NMF variants---in particular,\nthe repository includes an overview for two algorithms. The first variant, called nonnegative matrix factor\ndeconvolution (NMFD), extends the original NMF algorithm to the convolutive case, enforcing the temporal order of \nspectral templates. The second variant, called diagonal NMF, supports the development of sparse diagonal structures in \nthe activation matrix. Our toolbox contains several demo applications and code examples to illustrate its potential and \nfunctionality. See also the [AudioLabs webpage](https://www.audiolabs-erlangen.de/resources/MIR/NMFtoolbox).\n\n## Installation Guide\nWe outline two primary methods for setting up ``libnmfd`` using pip and setting up a dedicated environment.\n\n### Method I: Installing with pip\nUtilize Python's package manager, pip, for a straightforward installation of ``libnmfd``:\n\n```\npip install libnmfd\n```\nNote: We advise performing this installation within a Python environment (such as conda or a virtual environment) \nto prevent any conflicts with other packages. Ensure your environment runs Python 3.7 or higher.\n\n### Method II: Setting Up a Conda Environment\nAlternatively, you can establish a conda environment specifically for ``libnmfd`` by employing the \n``environment_libnmfd.yml`` file. This approach not only installs ``libnmfd`` but also includes necessary packages like\nlibnmfd and jupyter to facilitate running demo files. Run the following command:\n\n\n```\nconda env create -f environment_libnmfd.yml\n```\n\n\n## Running Example Notebooks\nTo explore ``libnmfd`` through example notebooks:\n\n1. **Install ``libnmfd``:** Prior to cloning the repository and running the notebooks, ensure libnmfd and its dependencies are installed (as described above).\n2. **Clone the repository:** Download the ``libnmfd`` repository to your local machine using the following git command:\n \n```\ngit clone https://github.com/groupmm/libnmfd.git\n```\n\n3. **Install Jupyter:** If not already installed via the conda environment setup, install Jupyter to run the notebooks:\n\n```\npip install jupyter\n```\n\n4. **Launch Jupyter Notebook:** Start the Jupyter notebook server by executing: \n```\njupyter notebook\n```\nThis will open a browser window from where you can navigate to and open the example notebooks.\n\n\n## Licence\nThe code for this toolbox is published under an [MIT licence](LICENCE).\n\n## References\n\n[1] Patricio L\u00f3pez-Serrano, Christian Dittmar, Yi\u011fitcan \u00d6zer, and Meinard M\u00fcller\\\n**NMF Toolbox: Music Processing Applications of Nonnegative Matrix Factorization** \\\nIn Proceedings of the International Conference on Digital Audio Effects (DAFx), 2019.\n\n[2] Christian Dittmar and Meinard M\u00fcller \\\n**Reverse Engineering the Amen Break \u2014 Score-Informed Separation and Restoration Applied to Drum Recordings** \\\nIEEE/ACM Transactions on Audio, Speech, and Language Processing, 24(9): 1531\u20131543, 2016. \n\n[3] Jonathan Driedger, Thomas Pr\u00e4tzlich, and Meinard M\u00fcller \\\n**Let It Bee \u2014 Towards NMF-Inspired Audio Mosaicing** \\\nIn Proceedings of the International Society for Music Information Retrieval Conference (ISMIR): 350\u2013356, 2015. \n\n[4] Paris Smaragdis \\\n**Non-negative Matrix Factor Deconvolution; Extraction of Multiple Sound Sources from Monophonic Inputs** \\\nIn Proceedings of the International Conference on Independent Component Analysis and Blind Signal Separation \n(ICA): 494\u2013499, 2004.\n\n[5] Daniel D. Lee and H. Sebastian Seung \\\n**Learning the parts of objects by non-negative matrix factorization** \\\nNature, 401(6755): 788\u2013791, 1999. \n",
"bugtrack_url": null,
"license": "MIT",
"summary": "libnmfd: Music Processing Applications of Nonnegative Matrix Factorization",
"version": "1.0.0",
"project_urls": {
"Download": "https://github.com/groupmm/libnmfd",
"Homepage": "https://github.com/groupmm/libnmfd"
},
"split_keywords": [
"audio",
"music",
"sound",
"nmf",
"decomposition"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3f760b5c77e49ef93c33e00f498b7a00b370727e88d1a16609280c0441442056",
"md5": "4d37ff9712966c8d2d5599fc83aeb402",
"sha256": "71dda58bee10242027f233c2c744610d4fdb419bbf7b252b62bc21dd42b74c76"
},
"downloads": -1,
"filename": "libnmfd-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4d37ff9712966c8d2d5599fc83aeb402",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 29621,
"upload_time": "2024-08-09T13:34:05",
"upload_time_iso_8601": "2024-08-09T13:34:05.881388Z",
"url": "https://files.pythonhosted.org/packages/3f/76/0b5c77e49ef93c33e00f498b7a00b370727e88d1a16609280c0441442056/libnmfd-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0449d07e42d9dc06ce10181a58e7fde23739c5ea480f4f453e49ec32b09282cb",
"md5": "7f0ef1808d7ec3f3b11ef7fb4cb96d7c",
"sha256": "73ac4839af87b23ba0734aeba044034312ce4de0a1cfc7d0c43b292866cec9b7"
},
"downloads": -1,
"filename": "libnmfd-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "7f0ef1808d7ec3f3b11ef7fb4cb96d7c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 26297,
"upload_time": "2024-08-09T13:34:07",
"upload_time_iso_8601": "2024-08-09T13:34:07.393800Z",
"url": "https://files.pythonhosted.org/packages/04/49/d07e42d9dc06ce10181a58e7fde23739c5ea480f4f453e49ec32b09282cb/libnmfd-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-09 13:34:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "groupmm",
"github_project": "libnmfd",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "libnmfd"
}