Go to file
2024-07-01 10:08:24 +02:00
ashost.py - Added wait for devices if none connected 2024-07-01 10:08:24 +02:00
readme.md - Extended readme 2024-06-27 19:03:03 +02:00
start.sh added start.sh 2024-06-30 13:57:59 +01:00

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*