21M.385 - Linux Installation Package
====================================

A community-contributed Linux equivalent of the osx/ and win/ install
packages. It uses uv, a fast Python environment manager, in place of
Homebrew and Miniconda.

Full instructions are in the accompanying PDF. This file is a short
reference.

Contents
--------
  check_install.py    Python 3 port of the course test script
  check/              SoundFont used by check_install.py
  install_linux.sh    optional automated installer (steps 1, 3, 4)
  README.txt          this file

Why this differs from osx/ and win/
-----------------------------------
The original course bundles two Python 2 files, OSC.py and fluidsynth.py.
On Python 3 these are replaced by maintained PyPI packages, so they are
not included here:

  OSC.py         ->  python-osc     (imports as pythonosc)
  fluidsynth.py  ->  pyfluidsynth   (imports as fluidsynth)
  rtmidi_python  ->  python-rtmidi  (imports as rtmidi)

The course check_install.py is Python 2; the one here is a Python 3 port.

Install
-------
  1. Install uv:      curl -LsSf https://astral.sh/uv/install.sh | sh
                      (on Arch, sudo pacman -S uv also works)
  2. Create project:  uv init imc --python 3.11   &&   cd imc
  3. System libs:     ensure a working audio setup with dev libraries
  4. Python packages: uv add kivy numpy pyaudio pyfluidsynth python-rtmidi python-osc
  5. Copy check_install.py and the check folder into the project.
  6. Test:            uv run python check_install.py

install_linux.sh runs steps 1, 3, and 4 and detects the distribution
(pacman, apt, or dnf).

Leap Motion
-----------
The Leap Motion SDK 2.3.1 is available on Arch as the AUR packages
leap-motion-driver and leap-motion-sdk; the ksandom/installUltraleap
repository packages the same SDK with a systemd service. The SDK Python
binding (Leap.py) is Python 2 only and cannot be imported into the
Python 3 environment. check_install.py skips the Leap check when no
usable binding is present.
