AutoSyncHost/readme.md

2.6 KiB
Raw Permalink Blame History

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*