# Solo Tool

This tool is designed to facilitate learning songs, and solos in particular, by slowing down playback and automatically jumping to predefined points in the song.

## Dependencies

Python dependencies are listed in the pyproject.toml files of the different projects and should be automatically installed by `pip`.

Non-Python dependencies are listed in pacman.txt and should be manually installed before running `make`.

## Usage

To set up the environment and run the tests, run `make`:

```
make
```

The web GUI can also be run with `make`:

```
make gui
```

Alternatively, the tool can be executed in headless mode. In this case all it does is load the provided session and connect to the MIDI controller:

```
./venv/bin/solo_tool_cli
```

## MIDI

It is currently possible to control the tool with MIDI. With the device plugged in, a connection is automatically established by the CLI. Currently the only device supported is the Novation Launchpad Mini Mk II.

The MIDI device button mapping is documented in `doc/diagram.drawio`.

## Tests

For the automated tests, run:

```
make test
```

or just

```
make
```

## Architecture

More details on the architecture are available in `doc/diagram.drawio`.