File: gridgen.sh

package info (click to toggle)
x42-plugins 20161230-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 14,560 kB
  • ctags: 8,337
  • sloc: ansic: 93,211; cpp: 5,743; makefile: 3,113; objc: 948; sh: 75
file content (88 lines) | stat: -rwxr-xr-x 2,396 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/bash
NOTES=$1
STEPS=$2

MODICON=modgui/icon-stepseq.html
MODSTYLE=modgui/style-stepseq.css
IDX=11

function twelvetet {
	num=$(( $1 % 7 ))
	case $num in
		1) echo 1 ;;
		2) echo 3 ;;
		3) echo 5 ;;
		4) echo 6 ;;
		5) echo 8 ;;
		6) echo 10 ;;
		0) echo 11 ;;
	esac
}

for n in `seq 1 $NOTES`; do
	# TODO musical scale
	OCT=$(( ($n - 1) / 7 ))
	NOT=$(twelvetet $n)
	NN=$(( 70 - 12 * $OCT - $NOT ))
sed "s/@IDX@/$IDX/;s/@NOTE@/$n/g;s/@NN@/$NN/g" << EOF
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index @IDX@;
		lv2:symbol "note@NOTE@";
		lv2:name "Note @NOTE@";
		lv2:default @NN@;
		lv2:minimum 0;
		lv2:maximum 127;
		lv2:portProperty lv2:integer
EOF
	IDX=$(($IDX + 1))
done

cat misc/mod_icon.head > $MODICON

for n in `seq 1 $NOTES`; do
	echo '<tr><th><div class="mod-knob-16seg-image note" mod-role="input-control-port" mod-port-symbol="note'$n'" x42-role="seq-note"></div></th>' >> $MODICON
	for s in `seq 1 $STEPS`; do

		sed "s/@IDX@/$IDX/;s/@NOTE@/$n/g;s/@STEP@/$s/g" << EOF
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index @IDX@ ;
		lv2:symbol "grid_@STEP@_@NOTE@" ;
		lv2:name "Grid S: @STEP@ N: @NOTE@";
		lv2:default 0 ;
		lv2:minimum 0 ;
		lv2:maximum 127 ;
		lv2:portProperty lv2:integer;
EOF
		echo '<td><div class="togglebtn on" grid-col="'$s'" grid-row="'$n'" mod-widget="switch" mod-role="input-control-port" mod-port-symbol="grid_'$s'_'$n'">'$s'</div></td>' >> $MODICON
	  IDX=$(($IDX + 1))
	done
	echo '<td><div class="resetbutton row" grid-row="'$n'" title="Clear Note Row">C</div></td>' >> $MODICON
	echo '</tr>' >> $MODICON
done

echo '<tr><th></th>' >> $MODICON
for s in `seq 1 $STEPS`; do
	echo '<td><div class="resetbutton col" grid-col="'$s'" title="Clear Column Step:'$s'">C</div></td>' >> $MODICON
done
echo '<td><div class="resetbutton all" title="Clear Grid">C</div></td>' >> $MODICON
echo '</tr>' >> $MODICON

cat misc/mod_icon.tail >> $MODICON

WIDTH=$(( 250 + $STEPS * 46 ))
HEIGHT=$(( 192 + $NOTES * 46 ))

if test -f misc/box_s${STEPS}_n${NOTES}.png; then
	cp misc/box_s${STEPS}_n${NOTES}.png modgui/box.png
elif test -x misc/boxmaker; then
	misc/boxmaker modgui/box.png $STEPS $NOTES
else
	echo "*** NO BOX BACKGROUND FOR $STEPS steps, $NOTES notes" >&2
	echo "*** compile misc/boxmaker for this build-host" >&2
	echo "*** make -C misc boxmaker" >&2
	exit 1
fi

sed "s/@WIDTH@/$WIDTH/g;s/@HEIGHT@/$HEIGHT/g" misc/style.css.in > $MODSTYLE