Annotation of hatari/tools/hatari-local-midi-ring.sh, revision 1.1.1.1

1.1       root        1: #!/bin/sh
                      2: 
                      3: # argument checks
                      4: if [ $# -lt 1 ] || [ $1 -lt 2 ] || [ $1 -gt 16 ]; then
                      5:        echo "$# $1"
                      6:        echo "usage: ${0##*/} <MIDI ring Hataris, 2-16> [extra Hatari args]"
                      7:        exit 1
                      8: fi
                      9: count=$1
                     10: shift
                     11: args=$*
                     12: 
                     13: # open fifos
                     14: for i in $(seq $count); do
                     15:        mkfifo midi$i
                     16: done
                     17: 
                     18: # hatari command line
                     19: hatari="hatari $args"
                     20: 
                     21: # run MIDI ring Hatari instances
                     22: catpids=""
                     23: for i in $(seq $(($count-1))); do
                     24:        next=$(($i+1))
                     25:        echo $hatari --midi-in midi$i --midi-out midi$next &
                     26:        $hatari --midi-in midi$i --midi-out midi$next &
                     27:        # Without this Hataris would deadlock as fifos
                     28:        # block the process until both ends are opened.
                     29:        # Hatari opens midi output first (for writing),
                     30:        # so this needs to read it.
                     31:        cat midi$next >/dev/null &
                     32:        catpids="$catpids $!"
                     33: done
                     34: # and join the beginning and end of the MIDI ring
                     35: echo $hatari --midi-in midi$count --midi-out midi1 &
                     36: $hatari --midi-in midi$count --midi-out midi1 &
                     37: cat midi1 >/dev/null &
                     38: catpids="$catpids $!"
                     39: 
                     40: # after connections are open, fifo files can be removed
                     41: sleep 2
                     42: for i in $(seq $count); do
                     43:        rm midi$i
                     44: done
                     45: kill -9 $catpids

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.