|
|
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.