Annotation of hatari/tools/hatari-local-midi-ring.sh, revision 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.