1pub const SFB_LONG_BANDS: [[usize; 23]; 9] = [
10 [
12 0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90, 110, 134, 162, 196, 238, 288, 342,
13 418, 576,
14 ],
15 [
17 0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88, 106, 128, 156, 190, 230, 276, 330,
18 384, 576,
19 ],
20 [
22 0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82, 102, 126, 156, 194, 240, 296, 364, 448,
23 550, 576,
24 ],
25 [
27 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,
28 522, 576,
29 ],
30 [
32 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 114, 136, 162, 194, 232, 278, 332, 394, 464,
33 540, 576,
34 ],
35 [
37 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,
38 522, 576,
39 ],
40 [
42 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,
43 522, 576,
44 ],
45 [
47 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,
48 522, 576,
49 ],
50 [
52 0, 12, 24, 36, 48, 60, 72, 88, 108, 132, 160, 192, 232, 280, 336, 400, 476, 566, 568, 570,
53 572, 574, 576,
54 ],
55];
56
57pub const SFB_SHORT_BANDS: [[usize; 40]; 9] = [
61 [
63 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 54, 60, 66, 74, 82, 90, 100, 110, 120,
64 132, 144, 156, 170, 184, 198, 216, 234, 252, 274, 296, 318, 348, 378, 408, 464, 520, 576,
65 ],
66 [
68 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 54, 60, 66, 72, 78, 84, 94, 104, 114, 126,
69 138, 150, 164, 178, 192, 208, 224, 240, 260, 280, 300, 326, 352, 378, 444, 510, 576,
70 ],
71 [
73 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 54, 60, 66, 74, 82, 90, 102, 114, 126,
74 142, 158, 174, 194, 214, 234, 260, 286, 312, 346, 380, 414, 456, 498, 540, 552, 564, 576,
75 ],
76 [
78 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 42, 48, 54, 60, 66, 72, 80, 88, 96, 106, 116, 126,
79 140, 154, 168, 186, 204, 222, 248, 274, 300, 332, 364, 396, 438, 480, 522, 540, 558, 576,
80 ],
81 [
83 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 42, 48, 54, 62, 70, 78, 88, 98, 108, 120, 132, 144,
84 158, 172, 186, 204, 222, 240, 264, 288, 312, 344, 376, 408, 452, 496, 540, 552, 564, 576,
85 ],
86 [
88 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 42, 48, 54, 62, 70, 78, 88, 98, 108, 120, 132, 144,
89 158, 172, 186, 204, 222, 240, 264, 288, 312, 342, 372, 402, 442, 482, 522, 540, 558, 576,
90 ],
91 [
93 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 42, 48, 54, 62, 70, 78, 88, 98, 108, 120, 132, 144,
94 158, 172, 186, 204, 222, 240, 264, 288, 312, 342, 372, 402, 442, 482, 522, 540, 558, 576,
95 ],
96 [
98 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 42, 48, 54, 62, 70, 78, 88, 98, 108, 120, 132, 144,
99 158, 172, 186, 204, 222, 240, 264, 288, 312, 342, 372, 402, 442, 482, 522, 540, 558, 576,
100 ],
101 [
103 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 84, 96, 108, 124, 140, 156, 176, 196, 216, 240, 264,
104 288, 316, 344, 372, 408, 444, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 524, 550,
105 576,
106 ],
107];
108
109pub const SFB_MIXED_BANDS: [&[usize]; 9] = [
110 &[
112 0, 4, 8, 12, 16, 20, 24, 30, 36, 40, 44, 48, 54, 60, 66, 74, 82, 90, 100, 110, 120, 132, 144, 156, 170, 184, 198, 216,
114 234, 252, 274, 296, 318, 348, 378, 408, 464, 520, 576,
115 ],
116 &[
118 0, 4, 8, 12, 16, 20, 24, 30, 36, 40, 44, 48, 54, 60, 66, 72, 78, 84, 94, 104, 114, 126, 138, 150, 164, 178, 192, 208,
120 224, 240, 260, 280, 300, 326, 352, 378, 444, 510, 576,
121 ],
122 &[
124 0, 4, 8, 12, 16, 20, 24, 30, 36, 40, 44, 48, 54, 60, 66, 74, 82, 90, 102, 114, 126, 142, 158, 174, 194, 214, 234, 260,
126 286, 312, 346, 380, 414, 456, 498, 540, 552, 564, 576,
127 ],
128 &[
130 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 80, 88, 96, 106, 116, 126, 140, 154, 168, 186, 204, 222, 248,
132 274, 300, 332, 364, 396, 438, 480, 522, 540, 558, 576,
133 ],
134 &[
136 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 62, 70, 78, 88, 98, 108, 120, 132, 144, 158, 172, 186, 204, 222, 240, 264,
138 288, 312, 344, 376, 408, 452, 496, 540, 552, 564, 576,
139 ],
140 &[
142 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 62, 70, 78, 88, 98, 108, 120, 132, 144, 158, 172, 186, 204, 222, 240, 264,
144 288, 312, 342, 372, 402, 442, 482, 522, 540, 558, 576,
145 ],
146 &[
148 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 62, 70, 78, 88, 98, 108, 120, 132, 144, 158, 172, 186, 204, 222, 240, 264,
150 288, 312, 342, 372, 402, 442, 482, 522, 540, 558, 576,
151 ],
152 &[
154 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 62, 70, 78, 88, 98, 108, 120, 132, 144, 158, 172, 186, 204, 222, 240, 264,
156 288, 312, 342, 372, 402, 442, 482, 522, 540, 558, 576,
157 ],
158 &[
164 0, 12, 24, 36, 40, 44, 48, 56, 64, 72, 84, 96, 108, 124, 140, 156, 176, 196, 216, 240, 264,
165 288, 316, 344, 372, 408, 444, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 524, 550,
166 576,
167 ],
168];
169
170pub const SFB_MIXED_SWITCH_POINT: [usize; 9] = [8, 8, 8, 6, 6, 6, 6, 6, 3];
173
174#[derive(Debug, PartialEq)]
175pub enum BlockType {
176 Long,
179 Start,
180 Short { is_mixed: bool },
181 End,
182}