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