|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.