86 lines
2.6 KiB
Markdown
86 lines
2.6 KiB
Markdown
# AutoSyncHost
|
||
## Description
|
||
### An automatic midi host application that sends midi sync commands to other MIDI devices connected via USB.
|
||
|
||
This python script is intended to run headless on a raspberry pi but can run on any other python able device as well.
|
||
|
||
The output is filtered so the host doesn´t receive sync signals from the members and thus not causing midi loops.
|
||
|
||
*Notes,CCs and other messages are not handled currently.*
|
||
|
||
## Installation
|
||
- SSH into PI
|
||
|
||
### Get repository
|
||
- pull from repository with `git clone https://git.raise-uav.com/Hermes/AutoSyncHost.git`
|
||
- Alternatively download directly from page via download zip and extract into a folder.
|
||
|
||
### Preparation
|
||
Install Python and pip if they are not already installed. You can use the following commands to install them:
|
||
- `sudo apt-get update`
|
||
- `sudo apt-get install python3 python3-pip`
|
||
|
||
### Create Environment
|
||
Navigate to the directory where you cloned the repository. For example:
|
||
- One directory below the AutoSyncHost directorys like `/home/pi`
|
||
- `python3 -m venv AutoSyncHost`
|
||
- `source AutoSyncHost/bin/activate`
|
||
|
||
### Install Packages
|
||
- `pip install mido`
|
||
- `pip install python-rtmidi`
|
||
- 'sudo apt-get install libjack-jackd2-dev' (Might be necessary if error occurs)
|
||
|
||
### Start Program
|
||
- `cd AutoSyncHost`
|
||
- `python ashost.py`
|
||
|
||
App is running and waiting for a device playing. You need to restart the script if new devices have been connected.
|
||
If oyu got the systemd service running you need to restart the PI.
|
||
|
||
## Usage
|
||
- First MIDI device that sends a midi "start" command becomes the host everybody listens to.
|
||
- After hitting stop, ASH has an assigned host and all devices are in sync when pressing play again.
|
||
- Pressing "stop" three times will unbind the host from its duties and restart the app and assignment.
|
||
|
||
### Notes
|
||
It is especially interesting for devices that don´t have a physical MIDI port like the OP-Z or OP-1.
|
||
|
||
### Make it a service
|
||
This will start the script automatically after the pi has started and will restart it.
|
||
|
||
Create a ashost.service file in /etc/systemd/system
|
||
- `sudo nano /etc/systemd/system/ashost.service`
|
||
|
||
```
|
||
[Unit]
|
||
Description=AutoSyncHost service
|
||
Wants=network-online.target
|
||
After=network.target network-online.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
Restart=always
|
||
ExecStart=/bin/bash /home/maxi/Desktop/start.sh
|
||
RestartSec=5
|
||
TimeoutSec=60
|
||
RuntimeMaxSec=infinity
|
||
PIDFile=/tmp/mydaemon.pid
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
|
||
- Save and exit with CTRL -O, Enter, CTRL X
|
||
- `sudo systemctl daemon-reload`
|
||
- `sudo systemctl enable ashost.service`
|
||
- `sudo systemctl start ashost.service`
|
||
- `sudo systemctl status ashost.service`
|
||
|
||
The status command should show a running service*
|
||
|
||
|
||
|
||
|
||
|