ashost.py | ||
readme.md | ||
start.sh |
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*