Audio analyzer provideing real-time notes detection for musicians. RecogNotes software will listen to your music through the microphone, and create your music sheets in the easiest way possible. Using our unique algorithm, this process is easy and reliable, and will serve your needs.
- Live Audio Recording
- Notes Detection and Music Sheets Generator
- Passive Noise Canceling
- Web / CLI Interfaces
- Metronome Beats while Recording Audio
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
Before you continue, read Running Options and decide which way you whould like to run the software.
Then, check Prerequisites for an early manual installations.
Recognotes runs on the python3.8, please make sure you have this or a newer version available on your machine.
Also, on an Ubuntu machine, download the following items using the commands below
$ sudo apt-get install lilypond
$ sudo apt-get install ffmpeg libav-tools
Recognotes software can be run in two main options.
Using your preferred Command Line Interface, you can start recognotes as a python module.
The CLI Tool will use python to record your audio, and to detect the notes sheets. It will create a pdf
file using lilypond and pop it to the screen when is ready.
To run the application, after cloning the repo, cd into '/recognotes' and start the main file using python.
Install every requiered python module to run the CLI software by using the following commands.
We recommend creating a new python virtual enviroment
# cd into cli directory
$ cd recognotes-cli/
# creating and activating python venv
$ python3 -m venv venv
$ source venv/bin/activate
# download required modules
$ pip install -r requirements.txt
After installing the needed dependencies, you can run the software on your machine
$ cd recognotes/
$ python main.py
Moreover, to get the full usage instructions, use may use the following command
user@recognotes:~$ python main.py -h
usage: main.py [-h] [-f FILE] [-s SAMPLE_RATE] [-p]
Analyze audio signals and notes detection.
optional arguments:
-h, --help show this help message and exit
-f FILE, --file FILE input wavfile
-s SAMPLE_RATE, --sample-rate SAMPLE_RATE
-p, --plot plot chunks output
In 'test-wavfiles' folder, you will find some unique-frequency .wav
file in different sample rates.
As we mentioned in the usage instructions, you can specify the file and sample rate you would like to try.
For example, run the software with the 1000.wav file in the 44.1kHz dir:
$ cd recognotes/
$ python main.py -f ../test-wavfiles/44.1kHz/1000.wav -s 44100
Recognotes also has a web application you can use.
The web application will record the audio at the client side, using JavaScript
, and then send it to a flask
server to analyze it and create the pdf
output file. When the file return to the web service, it will create a new blank tab and show it to the user.
In order to run it locally, you should run both backend and frontend at the same time.
Install every requiered python module to run the server side software by using the following commands.
We recommend creating a new python virtual enviroment
# backend directory
$ cd backend/
# creating and activating python venv
$ python3 -m venv venv
$ source venv/bin/activate
# download required modules
$ pip install -r requirements.txt
# deactivate venv
$ deactivate
# start server at loaclhost:5000 using our script
$ sudo chmod +x ./start-server
$ ./start-server
In order to install frontend dependencies, you just have to install the required npm
packages, then run the web client using npm start
# frontend directory
$ cd frontend/
# install npm packages
$ npm i
# start frontend at localhost:3000
$ npm start
RecogNotes will show a pdf file on screen that contains your musical sheet output. It will open automatically in a new blank tab.
- crepe - monophonic pitch tracker based on a deep convolutional neural network
- Abjad - wraps the LilyPond music notation package
- NumPy - package for scientific computing and audio reading
- scipy - wavfile I/O tool
- React - a JavaScript library for building user interfaces.
- Material-UI - React components for faster and easier web development.
- Axios - Promise based HTTP client for the browser and node.js
- argparse - Parser for command-line options, arguments and sub-commands.
- Or Gur Arie - Owner and Main Developer - orgurar
- Or Amit Landesman - Owner and Main Developer -oramit1
- Ofer Segev - Mentor and Contributor - segevofer
This project is licensed under the MIT License - see the LICENSE file for details