gremlin/gremlin.in: Use `locale.getpreferredencoding'.
[autoys] / flaccrip / flaccrip-trackoffsets
1 #! /bin/bash
2
3 set -e
4 : ${JBDIR=/mnt/jb}
5
6 i0=0 zero_start=0 trim_end=0 span=$((588*5 - 1)) debug=""
7 while getopts flF:L:i:b:a:s:d opt; do
8 case "$opt" in
9 f) zero_start=$((588*5 - 1)) ;;
10 l) trim_end=$((588*5)) ;;
11 F) zero_start=$OPTARG ;;
12 L) trim_end=$OPTARG ;;
13 b) before=$OPTARG ;;
14 a) after=$OPTARG ;;
15 s) span=$OPTARG ;;
16 d) debug=-d ;;
17 *) exit 1 ;;
18 esac
19 done
20 shift $((OPTIND - 1))
21
22 case $# in
23 0 | 1)
24 echo >&2 "usage: $0 [-OPTIONS] FILE TARGET..."
25 exit 1
26 ;;
27 esac
28 file=$1; shift
29
30 ns=$(metaflac --show-total-samples "$file")
31
32 read ck tot < <(
33 {
34 if [ "${before+set}" ]; then
35 n=$(metaflac --show-total-samples "$before")
36 flac -d -s -o- --force-raw-format --sign=signed --endian=little \
37 --skip=$((n - span)) \
38 "$before"
39 else
40 $JBDIR/bin/cat-prefix $((4 * span)) </dev/zero
41 fi
42
43 flac -d -s -o- --force-raw-format --sign=signed --endian=little \
44 --until=$((ns - span - trim_end)) \
45 "$file"
46 } | {
47 if ((zero_start > 0)); then
48 $JBDIR/bin/cat-prefix $((4 * zero_start)) </dev/zero
49 $JBDIR/bin/cat-prefix $((4 * zero_start)) >/dev/null
50 fi
51 cat
52 } | $JBDIR/bin/flaccrip-compute -r
53 )
54
55 while read off ck; do
56 echo M $((off - span)) "$ck"
57 done < <(
58 $JBDIR/bin/flaccrip-slide \
59 -i "$zero_start" $debug \
60 $((ns - trim_end)) $ck $tot \
61 <(
62 if ((span > zero_start)); then
63 tail=$((span - zero_start))
64 if [ "${before+set}" ]; then
65 n=$(metaflac --show-total-samples "$before")
66 flac -d -s -o- --force-raw-format --sign=signed --endian=little \
67 --skip=$((n - tail)) \
68 "$before"
69 else
70 $JBDIR/bin/cat-prefix $((4 * tail)) </dev/zero
71 fi
72 fi
73 flac -d -s -o- --force-raw-format --sign=signed --endian=little \
74 --until=$((span + zero_start)) \
75 "$file"
76 ) \
77 <(
78 if ((span > trim_end)); then
79 flac -d -s -o- --force-raw-format --sign=signed --endian=little \
80 --skip=$((ns - span - trim_end)) \
81 "$file"
82 head=$((span - trim_end))
83 if [ "${after+set}" ]; then
84 flac -d -s -o- --force-raw-format --sign=signed --endian=little \
85 --until=$head \
86 "$after"
87 else
88 $JBDIR/bin/cat-prefix $((4 * head)) </dev/zero
89 fi
90 else
91 flac -d -s -o- --force-raw-format --sign=signed --endian=little \
92 --skip=$((ns - span - trim_end)) \
93 --until=$((ns + span - trim_end)) \
94 "$file"
95 fi
96 ) \
97 "$@"
98 )