From 3ff162e7800039bbcadad53ff3e987453572fbd2 Mon Sep 17 00:00:00 2001 From: bklronin Date: Thu, 27 Jun 2024 19:03:03 +0200 Subject: [PATCH] - Extended readme --- ashost.py | 5 +++-- readme.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 65 insertions(+), 6 deletions(-) diff --git a/ashost.py b/ashost.py index 123a48a..bb077d4 100644 --- a/ashost.py +++ b/ashost.py @@ -86,9 +86,9 @@ def relay_midi_host_to_out(host_name, devices_out): print(reset) while not reset: # Process all pending messages - #print("Entering loop", input_port.iter_pending() ) for message in input_port.iter_pending(): read_message = str(message) + #print(read_message) if 'start' in read_message or 'stop' in read_message: for dev in output_ports: @@ -105,6 +105,7 @@ def relay_midi_host_to_out(host_name, devices_out): # Check if the last 3 messages are all 'stop' if recent_messages[-3:] == ['stop time=0', 'stop time=0', 'stop time=0']: + print("Exiting", recent_messages) recent_messages.clear() reset = True @@ -133,10 +134,10 @@ def main_run(): # Retrieve the list of available input devices devices_in = mido.get_input_names() devices_out = mido.get_output_names() - print("Available MIDI input devices:", devices_in) devices_in = remove_through_ports(devices_in) devices_out = remove_through_ports(devices_out) + print("Available MIDI input devices:", devices_in) # Listen for devices that send start and return the host name midi_host_in = determine_host(devices_in) diff --git a/readme.md b/readme.md index 87e2527..77ac493 100644 --- a/readme.md +++ b/readme.md @@ -8,12 +8,35 @@ The output is filtered so the host doesn´t receive sync signals from the member *Notes,CCs and other messages are not handled currently.* -## Installation +## Installation +- SSH into PI + +### Get repository - pull from repository with `git clone https://git.raise-uav.com/Hermes/AutoSyncHost.git` -- `pip install mido` +- 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` -- `python ashost.py` in folder -- App is running and waiting for a device playing +- '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. @@ -23,5 +46,40 @@ The output is filtered so the host doesn´t receive sync signals from the member ### 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* + + +