From 825d558a4cae575f2d85df5d11d45f9aac609c6a Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Tue, 20 Jul 2021 11:18:04 +0200 Subject: [PATCH] Added aliases for Cakewalk and RGC loop_oncc opcodes --- src/sfizz/OpcodeCleanup.cpp | 1591 ++++++++++++++++++++--------------- src/sfizz/OpcodeCleanup.re | 15 + src/sfizz/Region.cpp | 4 +- tests/RegionValuesT.cpp | 11 + 4 files changed, 949 insertions(+), 672 deletions(-) diff --git a/src/sfizz/OpcodeCleanup.cpp b/src/sfizz/OpcodeCleanup.cpp index 1d753161..6282c2d2 100644 --- a/src/sfizz/OpcodeCleanup.cpp +++ b/src/sfizz/OpcodeCleanup.cpp @@ -1,4 +1,4 @@ -/* Generated by re2c 2.0.3 on Sat Dec 12 13:32:03 2020 */ +/* Generated by re2c 1.3 on Tue Jul 20 11:23:08 2021 */ #line 1 "src/sfizz/OpcodeCleanup.re" /* -*- mode: c++; -*- */ // SPDX-License-Identifier: BSD-2-Clause @@ -219,7 +219,7 @@ end_region_oncc: yy19: ++YYCURSOR; yy20: -#line 195 "src/sfizz/OpcodeCleanup.re" +#line 210 "src/sfizz/OpcodeCleanup.re" { goto end_region; } @@ -685,39 +685,40 @@ yy80: yy82: yych = *++YYCURSOR; switch (yych) { + case '_': goto yy114; case 'e': yyt1 = YYCURSOR; - goto yy114; + goto yy115; case 'm': yyt1 = YYCURSOR; - goto yy115; + goto yy116; case 's': yyt1 = YYCURSOR; - goto yy116; + goto yy117; default: goto yy34; } yy83: yych = *++YYCURSOR; switch (yych) { - case 'y': goto yy117; + case 'y': goto yy118; default: goto yy34; } yy84: yych = *++YYCURSOR; switch (yych) { - case 'o': goto yy118; + case 'o': goto yy119; default: goto yy34; } yy85: yych = *++YYCURSOR; switch (yych) { - case 'i': goto yy119; + case 'i': goto yy120; default: goto yy34; } yy86: yych = *++YYCURSOR; switch (yych) { - case 'o': goto yy119; + case 'o': goto yy120; default: goto yy34; } yy87: @@ -729,13 +730,13 @@ yy87: yy88: yych = *++YYCURSOR; switch (yych) { - case 'p': goto yy120; + case 'p': goto yy121; default: goto yy34; } yy89: yych = *++YYCURSOR; switch (yych) { - case 'n': goto yy121; + case 'n': goto yy122; default: goto yy34; } yy90: @@ -743,88 +744,88 @@ yy90: switch (yych) { case 0x00: yyt2 = yyt3 = NULL; - goto yy122; + goto yy123; case '_': yyt3 = YYCURSOR; - goto yy124; + goto yy125; default: goto yy34; } yy91: yych = *++YYCURSOR; switch (yych) { - case '_': goto yy126; + case '_': goto yy127; default: goto yy34; } yy92: yych = *++YYCURSOR; switch (yych) { - case 'o': goto yy127; + case 'o': goto yy128; default: goto yy34; } yy93: yych = *++YYCURSOR; switch (yych) { - case 'o': goto yy128; + case 'o': goto yy129; default: goto yy34; } yy94: yych = *++YYCURSOR; switch (yych) { - case 't': goto yy129; + case 't': goto yy130; default: goto yy34; } yy95: yych = *++YYCURSOR; switch (yych) { - case 'p': goto yy130; + case 'p': goto yy131; default: goto yy34; } yy96: yych = *++YYCURSOR; switch (yych) { - case 'f': goto yy131; + case 'f': goto yy132; default: goto yy34; } yy97: yych = *++YYCURSOR; switch (yych) { - case 'u': goto yy132; + case 'u': goto yy133; default: goto yy34; } yy98: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy133; + case 'e': goto yy134; default: goto yy34; } yy99: yych = *++YYCURSOR; switch (yych) { - case 'w': goto yy134; + case 'w': goto yy135; default: goto yy34; } yy100: yych = *++YYCURSOR; switch (yych) { - case 'r': goto yy135; + case 'r': goto yy136; default: goto yy34; } yy101: yych = *++YYCURSOR; switch (yych) { - case 'a': goto yy136; + case 'a': goto yy137; default: goto yy34; } yy102: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy137; + case 'e': goto yy138; default: goto yy34; } yy103: yych = *++YYCURSOR; switch (yych) { - case 'y': goto yy138; + case 'y': goto yy139; default: goto yy34; } yy104: @@ -839,7 +840,7 @@ yy104: opcode = absl::StrCat("fil1_", group(1)); goto end_region; } -#line 843 "src/sfizz/OpcodeCleanup.cpp" +#line 844 "src/sfizz/OpcodeCleanup.cpp" yy106: yych = *++YYCURSOR; yy107: @@ -848,7 +849,7 @@ yy107: yy108: yych = *++YYCURSOR; switch (yych) { - case 'p': goto yy139; + case 'p': goto yy140; default: goto yy34; } yy109: @@ -863,17 +864,17 @@ yy109: opcode = absl::StrCat("volume", group(1)); goto end_region; } -#line 867 "src/sfizz/OpcodeCleanup.cpp" +#line 868 "src/sfizz/OpcodeCleanup.cpp" yy111: yych = *++YYCURSOR; switch (yych) { - case 'r': goto yy142; - default: goto yy141; + case 'r': goto yy143; + default: goto yy142; } yy112: yych = *++YYCURSOR; switch (yych) { - case 'l': goto yy143; + case 'l': goto yy144; default: goto yy34; } yy113: @@ -881,69 +882,76 @@ yy113: switch (yych) { case 'c': yyt2 = YYCURSOR; - goto yy144; + goto yy145; case 'o': yyt2 = YYCURSOR; - goto yy145; + goto yy146; case 'r': yyt2 = YYCURSOR; - goto yy146; + goto yy147; case 's': yyt2 = YYCURSOR; - goto yy147; + goto yy148; case 'w': yyt2 = YYCURSOR; - goto yy148; + goto yy149; default: goto yy34; } yy114: yych = *++YYCURSOR; switch (yych) { - case 'n': goto yy149; + case 'l': goto yy150; + case 's': goto yy151; default: goto yy34; } yy115: yych = *++YYCURSOR; switch (yych) { - case 'o': goto yy150; + case 'n': goto yy152; default: goto yy34; } yy116: yych = *++YYCURSOR; switch (yych) { - case 't': goto yy151; + case 'o': goto yy153; default: goto yy34; } yy117: - yych = *++YYCURSOR; - if (yych <= 0x00) goto yy152; - goto yy34; -yy118: yych = *++YYCURSOR; switch (yych) { - case 'd': goto yy154; + case 't': goto yy154; default: goto yy34; } +yy118: + yych = *++YYCURSOR; + if (yych <= 0x00) goto yy155; + goto yy34; yy119: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy155; - case 'h': goto yy156; + case 'd': goto yy157; default: goto yy34; } yy120: yych = *++YYCURSOR; switch (yych) { - case 'h': goto yy157; + case 'c': goto yy158; + case 'h': goto yy159; default: goto yy34; } yy121: yych = *++YYCURSOR; switch (yych) { - case 'a': goto yy158; + case 'h': goto yy160; default: goto yy34; } yy122: + yych = *++YYCURSOR; + switch (yych) { + case 'a': goto yy161; + default: goto yy34; + } +yy123: ++YYCURSOR; yynmatch = 2; yypmatch[0] = yyt1; @@ -955,63 +963,63 @@ yy122: opcode = absl::StrCat("pitch", group(1)); goto end_region; } -#line 959 "src/sfizz/OpcodeCleanup.cpp" -yy124: +#line 967 "src/sfizz/OpcodeCleanup.cpp" +yy125: yych = *++YYCURSOR; if (yych <= 0x00) { yyt2 = YYCURSOR; - goto yy122; + goto yy123; } - goto yy124; -yy126: + goto yy125; +yy127: yych = *++YYCURSOR; switch (yych) { case 'a': yyt2 = YYCURSOR; - goto yy159; + goto yy162; case 'd': yyt2 = YYCURSOR; - goto yy160; + goto yy163; case 'h': yyt2 = YYCURSOR; - goto yy161; + goto yy164; case 'r': yyt2 = YYCURSOR; - goto yy162; + goto yy165; case 's': yyt2 = YYCURSOR; - goto yy163; - case 'v': goto yy164; - default: goto yy34; - } -yy127: - yych = *++YYCURSOR; - switch (yych) { - case '_': goto yy165; + goto yy166; + case 'v': goto yy167; default: goto yy34; } yy128: yych = *++YYCURSOR; switch (yych) { - case 'w': goto yy166; + case '_': goto yy168; default: goto yy34; } yy129: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy95; + case 'w': goto yy169; default: goto yy34; } yy130: yych = *++YYCURSOR; - if (yych <= 0x00) goto yy167; - goto yy34; + switch (yych) { + case 'e': goto yy95; + default: goto yy34; + } yy131: + yych = *++YYCURSOR; + if (yych <= 0x00) goto yy170; + goto yy34; +yy132: yych = *++YYCURSOR; switch (yych) { case 0x00: yyt2 = yyt3 = NULL; - goto yy169; + goto yy172; case '0': case '1': case '2': @@ -1023,131 +1031,143 @@ yy131: case '8': case '9': yyt2 = YYCURSOR; - goto yy171; + goto yy174; case '_': yyt2 = yyt4 = NULL; yyt3 = YYCURSOR; - goto yy173; - default: goto yy34; - } -yy132: - yych = *++YYCURSOR; - switch (yych) { - case 't': goto yy174; + goto yy176; default: goto yy34; } yy133: yych = *++YYCURSOR; switch (yych) { - case 's': goto yy175; + case 't': goto yy177; default: goto yy34; } yy134: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy176; + case 's': goto yy178; default: goto yy34; } yy135: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy177; + case 'c': goto yy179; default: goto yy34; } yy136: yych = *++YYCURSOR; switch (yych) { - case 'i': goto yy178; + case 'e': goto yy180; default: goto yy34; } yy137: yych = *++YYCURSOR; switch (yych) { - case 'l': goto yy179; + case 'i': goto yy181; default: goto yy34; } yy138: yych = *++YYCURSOR; switch (yych) { - case 'p': goto yy180; + case 'l': goto yy182; default: goto yy34; } yy139: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy181; + case 'p': goto yy183; default: goto yy34; } yy140: yych = *++YYCURSOR; + switch (yych) { + case 'e': goto yy184; + default: goto yy34; + } yy141: + yych = *++YYCURSOR; +yy142: if (yych <= 0x00) { yyt2 = YYCURSOR; goto yy109; } - goto yy140; -yy142: - yych = *++YYCURSOR; - switch (yych) { - case 'a': goto yy182; - default: goto yy141; - } + goto yy141; yy143: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy183; - default: goto yy34; + case 'a': goto yy185; + default: goto yy142; } yy144: yych = *++YYCURSOR; switch (yych) { - case 'u': goto yy184; + case 'c': goto yy186; default: goto yy34; } yy145: yych = *++YYCURSOR; switch (yych) { - case 'f': goto yy185; + case 'u': goto yy187; default: goto yy34; } yy146: yych = *++YYCURSOR; switch (yych) { - case 'a': goto yy186; - case 'e': goto yy187; + case 'f': goto yy188; default: goto yy34; } yy147: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy188; + case 'a': goto yy189; + case 'e': goto yy190; default: goto yy34; } yy148: yych = *++YYCURSOR; switch (yych) { - case 'a': goto yy189; + case 'c': goto yy191; default: goto yy34; } yy149: yych = *++YYCURSOR; switch (yych) { - case 'd': goto yy190; + case 'a': goto yy192; default: goto yy34; } yy150: yych = *++YYCURSOR; switch (yych) { - case 'd': goto yy191; + case 'e': goto yy193; default: goto yy34; } yy151: yych = *++YYCURSOR; switch (yych) { - case 'a': goto yy192; + case 't': goto yy194; default: goto yy34; } yy152: + yych = *++YYCURSOR; + switch (yych) { + case 'd': goto yy195; + default: goto yy34; + } +yy153: + yych = *++YYCURSOR; + switch (yych) { + case 'd': goto yy196; + default: goto yy34; + } +yy154: + yych = *++YYCURSOR; + switch (yych) { + case 'a': goto yy197; + default: goto yy34; + } +yy155: ++YYCURSOR; yynmatch = 2; yypmatch[2] = yyt1; @@ -1159,92 +1179,92 @@ yy152: opcode = absl::StrCat("off_", group(1)); goto end_region; } -#line 1163 "src/sfizz/OpcodeCleanup.cpp" -yy154: - yych = *++YYCURSOR; - switch (yych) { - case 'e': goto yy117; - default: goto yy34; - } -yy155: - yych = *++YYCURSOR; - switch (yych) { - case 'c': goto yy193; - default: goto yy34; - } -yy156: - yych = *++YYCURSOR; - switch (yych) { - case 'd': goto yy194; - default: goto yy34; - } +#line 1183 "src/sfizz/OpcodeCleanup.cpp" yy157: yych = *++YYCURSOR; switch (yych) { - case 'o': goto yy195; + case 'e': goto yy118; default: goto yy34; } yy158: yych = *++YYCURSOR; switch (yych) { - case 'n': goto yy196; + case 'c': goto yy198; default: goto yy34; } yy159: yych = *++YYCURSOR; switch (yych) { - case 't': goto yy197; + case 'd': goto yy199; default: goto yy34; } yy160: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy198; + case 'o': goto yy200; default: goto yy34; } yy161: yych = *++YYCURSOR; switch (yych) { - case 'o': goto yy199; + case 'n': goto yy201; default: goto yy34; } yy162: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy200; + case 't': goto yy202; default: goto yy34; } yy163: yych = *++YYCURSOR; switch (yych) { - case 't': goto yy201; - case 'u': goto yy202; + case 'e': goto yy203; default: goto yy34; } yy164: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy203; + case 'o': goto yy204; default: goto yy34; } yy165: yych = *++YYCURSOR; switch (yych) { - case 'd': - yyt2 = YYCURSOR; - goto yy204; - case 'f': - yyt2 = YYCURSOR; - goto yy205; + case 'e': goto yy205; default: goto yy34; } yy166: yych = *++YYCURSOR; switch (yych) { - case 'n': goto yy130; + case 't': goto yy206; + case 'u': goto yy207; default: goto yy34; } yy167: + yych = *++YYCURSOR; + switch (yych) { + case 'e': goto yy208; + default: goto yy34; + } +yy168: + yych = *++YYCURSOR; + switch (yych) { + case 'd': + yyt2 = YYCURSOR; + goto yy209; + case 'f': + yyt2 = YYCURSOR; + goto yy210; + default: goto yy34; + } +yy169: + yych = *++YYCURSOR; + switch (yych) { + case 'n': goto yy131; + default: goto yy34; + } +yy170: ++YYCURSOR; yynmatch = 2; yypmatch[2] = yyt1; @@ -1256,8 +1276,8 @@ yy167: opcode = absl::StrCat("bend_", group(1)); goto end_region; } -#line 1260 "src/sfizz/OpcodeCleanup.cpp" -yy169: +#line 1280 "src/sfizz/OpcodeCleanup.cpp" +yy172: ++YYCURSOR; yynmatch = 2; yypmatch[0] = yyt1; @@ -1269,8 +1289,8 @@ yy169: opcode = absl::StrCat("cutoff1", group(1)); goto end_region; } -#line 1273 "src/sfizz/OpcodeCleanup.cpp" -yy171: +#line 1293 "src/sfizz/OpcodeCleanup.cpp" +yy174: yych = *++YYCURSOR; switch (yych) { case '0': @@ -1282,129 +1302,141 @@ yy171: case '6': case '7': case '8': - case '9': goto yy171; + case '9': goto yy174; case '_': yyt4 = YYCURSOR; - goto yy206; - default: goto yy34; - } -yy173: - yych = *++YYCURSOR; - switch (yych) { - case 'r': goto yy209; - default: goto yy208; - } -yy174: - yych = *++YYCURSOR; - switch (yych) { - case 'o': goto yy210; - default: goto yy34; - } -yy175: - yych = *++YYCURSOR; - switch (yych) { - case 'o': goto yy211; + goto yy211; default: goto yy34; } yy176: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy212; - default: goto yy34; + case 'r': goto yy214; + default: goto yy213; } yy177: yych = *++YYCURSOR; switch (yych) { - case 'q': goto yy134; + case 'o': goto yy215; default: goto yy34; } yy178: yych = *++YYCURSOR; switch (yych) { - case 'n': goto yy134; + case 'o': goto yy216; default: goto yy34; } yy179: yych = *++YYCURSOR; switch (yych) { - case '2': goto yy213; + case 'c': goto yy217; default: goto yy34; } yy180: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy214; + case 'q': goto yy135; default: goto yy34; } yy181: yych = *++YYCURSOR; - if (yych <= 0x00) goto yy215; - goto yy34; + switch (yych) { + case 'n': goto yy135; + default: goto yy34; + } yy182: yych = *++YYCURSOR; switch (yych) { - case 'n': goto yy217; - default: goto yy141; + case '2': goto yy218; + default: goto yy34; } yy183: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy218; + case 'e': goto yy219; default: goto yy34; } yy184: yych = *++YYCURSOR; - switch (yych) { - case 't': goto yy219; - default: goto yy34; - } + if (yych <= 0x00) goto yy220; + goto yy34; yy185: yych = *++YYCURSOR; switch (yych) { - case 'f': goto yy220; - default: goto yy34; + case 'n': goto yy222; + default: goto yy142; } yy186: yych = *++YYCURSOR; switch (yych) { - case 't': goto yy221; + case 'c': goto yy223; default: goto yy34; } yy187: yych = *++YYCURSOR; switch (yych) { - case 's': goto yy222; + case 't': goto yy224; default: goto yy34; } yy188: yych = *++YYCURSOR; switch (yych) { - case 'a': goto yy223; + case 'f': goto yy225; default: goto yy34; } yy189: yych = *++YYCURSOR; switch (yych) { - case 'v': goto yy224; + case 't': goto yy226; default: goto yy34; } yy190: yych = *++YYCURSOR; - if (yych <= 0x00) goto yy225; - goto yy34; + switch (yych) { + case 's': goto yy227; + default: goto yy34; + } yy191: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy190; + case 'a': goto yy228; default: goto yy34; } yy192: yych = *++YYCURSOR; switch (yych) { - case 'r': goto yy227; + case 'v': goto yy229; default: goto yy34; } yy193: + yych = *++YYCURSOR; + switch (yych) { + case 'n': goto yy230; + default: goto yy34; + } +yy194: + yych = *++YYCURSOR; + switch (yych) { + case 'a': goto yy231; + default: goto yy34; + } +yy195: + yych = *++YYCURSOR; + if (yych <= 0x00) goto yy232; + goto yy34; +yy196: + yych = *++YYCURSOR; + switch (yych) { + case 'e': goto yy195; + default: goto yy34; + } +yy197: + yych = *++YYCURSOR; + switch (yych) { + case 'r': goto yy234; + default: goto yy34; + } +yy198: yych = *++YYCURSOR; switch (yych) { case '0': @@ -1418,117 +1450,117 @@ yy193: case '8': case '9': yyt1 = YYCURSOR; - goto yy228; - default: goto yy34; - } -yy194: - yych = *++YYCURSOR; - switch (yych) { - case 'c': goto yy230; - default: goto yy34; - } -yy195: - yych = *++YYCURSOR; - switch (yych) { - case 'n': goto yy231; - default: goto yy34; - } -yy196: - yych = *++YYCURSOR; - switch (yych) { - case 'c': goto yy232; - default: goto yy34; - } -yy197: - yych = *++YYCURSOR; - switch (yych) { - case 't': goto yy233; - default: goto yy34; - } -yy198: - yych = *++YYCURSOR; - switch (yych) { - case 'c': - case 'l': goto yy234; + goto yy235; default: goto yy34; } yy199: yych = *++YYCURSOR; switch (yych) { - case 'l': goto yy235; + case 'c': goto yy237; default: goto yy34; } yy200: yych = *++YYCURSOR; switch (yych) { - case 'l': goto yy236; + case 'n': goto yy238; default: goto yy34; } yy201: yych = *++YYCURSOR; switch (yych) { - case 'a': goto yy237; + case 'c': goto yy239; default: goto yy34; } yy202: yych = *++YYCURSOR; switch (yych) { - case 's': goto yy238; + case 't': goto yy240; default: goto yy34; } yy203: yych = *++YYCURSOR; switch (yych) { - case 'l': goto yy239; + case 'c': + case 'l': goto yy241; default: goto yy34; } yy204: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy240; + case 'l': goto yy242; default: goto yy34; } yy205: yych = *++YYCURSOR; switch (yych) { - case 'a': goto yy241; - case 'r': goto yy242; + case 'l': goto yy243; default: goto yy34; } yy206: yych = *++YYCURSOR; switch (yych) { - case 'r': goto yy243; + case 'a': goto yy244; default: goto yy34; } yy207: yych = *++YYCURSOR; -yy208: - if (yych <= 0x00) { - yyt2 = YYCURSOR; - goto yy169; + switch (yych) { + case 's': goto yy245; + default: goto yy34; + } +yy208: + yych = *++YYCURSOR; + switch (yych) { + case 'l': goto yy246; + default: goto yy34; } - goto yy207; yy209: yych = *++YYCURSOR; switch (yych) { - case 'a': goto yy244; - default: goto yy208; + case 'e': goto yy247; + default: goto yy34; } yy210: yych = *++YYCURSOR; switch (yych) { - case 'f': goto yy245; + case 'a': goto yy248; + case 'r': goto yy249; default: goto yy34; } yy211: yych = *++YYCURSOR; switch (yych) { - case 'n': goto yy246; + case 'r': goto yy250; default: goto yy34; } yy212: yych = *++YYCURSOR; +yy213: + if (yych <= 0x00) { + yyt2 = YYCURSOR; + goto yy172; + } + goto yy212; +yy214: + yych = *++YYCURSOR; + switch (yych) { + case 'a': goto yy251; + default: goto yy213; + } +yy215: + yych = *++YYCURSOR; + switch (yych) { + case 'f': goto yy252; + default: goto yy34; + } +yy216: + yych = *++YYCURSOR; + switch (yych) { + case 'n': goto yy253; + default: goto yy34; + } +yy217: + yych = *++YYCURSOR; switch (yych) { case '0': case '1': @@ -1541,18 +1573,18 @@ yy212: case '8': case '9': yyt3 = YYCURSOR; - goto yy247; + goto yy254; default: goto yy34; } -yy213: +yy218: yych = *++YYCURSOR; yyt2 = YYCURSOR; - goto yy252; -yy214: + goto yy259; +yy219: yych = *++YYCURSOR; - if (yych <= 0x00) goto yy253; + if (yych <= 0x00) goto yy260; goto yy34; -yy215: +yy220: ++YYCURSOR; yynmatch = 1; yypmatch[0] = YYCURSOR - 8; @@ -1562,14 +1594,14 @@ yy215: opcode = absl::StrCat("fil1_type"); goto end_region; } -#line 1566 "src/sfizz/OpcodeCleanup.cpp" -yy217: +#line 1598 "src/sfizz/OpcodeCleanup.cpp" +yy222: yych = *++YYCURSOR; switch (yych) { - case 'd': goto yy255; - default: goto yy141; + case 'd': goto yy262; + default: goto yy142; } -yy218: +yy223: yych = *++YYCURSOR; switch (yych) { case '0': @@ -1583,46 +1615,58 @@ yy218: case '8': case '9': yyt1 = YYCURSOR; - goto yy256; - default: goto yy34; - } -yy219: - yych = *++YYCURSOR; - switch (yych) { - case 'o': goto yy258; - default: goto yy34; - } -yy220: - yych = *++YYCURSOR; - switch (yych) { - case 's': goto yy259; - default: goto yy34; - } -yy221: - yych = *++YYCURSOR; - switch (yych) { - case 'i': goto yy260; - default: goto yy34; - } -yy222: - yych = *++YYCURSOR; - switch (yych) { - case 'o': goto yy261; - default: goto yy34; - } -yy223: - yych = *++YYCURSOR; - switch (yych) { - case 'l': goto yy224; + goto yy263; default: goto yy34; } yy224: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy262; + case 'o': goto yy265; default: goto yy34; } yy225: + yych = *++YYCURSOR; + switch (yych) { + case 's': goto yy266; + default: goto yy34; + } +yy226: + yych = *++YYCURSOR; + switch (yych) { + case 'i': goto yy267; + default: goto yy34; + } +yy227: + yych = *++YYCURSOR; + switch (yych) { + case 'o': goto yy268; + default: goto yy34; + } +yy228: + yych = *++YYCURSOR; + switch (yych) { + case 'l': goto yy229; + default: goto yy34; + } +yy229: + yych = *++YYCURSOR; + switch (yych) { + case 'e': goto yy269; + default: goto yy34; + } +yy230: + yych = *++YYCURSOR; + switch (yych) { + case 'g': goto yy270; + default: goto yy34; + } +yy231: + yych = *++YYCURSOR; + switch (yych) { + case 'r': goto yy271; + default: goto yy34; + } +yy232: ++YYCURSOR; yynmatch = 2; yypmatch[2] = yyt1; @@ -1634,135 +1678,17 @@ yy225: opcode = absl::StrCat("loop_", group(1)); goto end_region; } -#line 1638 "src/sfizz/OpcodeCleanup.cpp" -yy227: - yych = *++YYCURSOR; - switch (yych) { - case 't': goto yy190; - default: goto yy34; - } -yy228: - yych = *++YYCURSOR; - switch (yych) { - case 0x00: goto yy263; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy228; - default: goto yy34; - } -yy230: - yych = *++YYCURSOR; - switch (yych) { - case 'c': goto yy265; - default: goto yy34; - } -yy231: - yych = *++YYCURSOR; - switch (yych) { - case 'y': goto yy266; - default: goto yy34; - } -yy232: - yych = *++YYCURSOR; - switch (yych) { - case 'e': goto yy267; - default: goto yy34; - } -yy233: - yych = *++YYCURSOR; - switch (yych) { - case 'a': goto yy268; - default: goto yy34; - } +#line 1682 "src/sfizz/OpcodeCleanup.cpp" yy234: yych = *++YYCURSOR; switch (yych) { - case 'a': goto yy269; + case 't': goto yy195; default: goto yy34; } yy235: yych = *++YYCURSOR; switch (yych) { - case 'd': goto yy270; - default: goto yy34; - } -yy236: - yych = *++YYCURSOR; - switch (yych) { - case 'e': goto yy271; - default: goto yy34; - } -yy237: - yych = *++YYCURSOR; - switch (yych) { - case 'r': goto yy272; - default: goto yy34; - } -yy238: - yych = *++YYCURSOR; - switch (yych) { - case 't': goto yy273; - default: goto yy34; - } -yy239: - yych = *++YYCURSOR; - switch (yych) { - case '2': goto yy274; - default: goto yy34; - } -yy240: - yych = *++YYCURSOR; - switch (yych) { - case 'p': goto yy275; - default: goto yy34; - } -yy241: - yych = *++YYCURSOR; - switch (yych) { - case 'd': goto yy276; - default: goto yy34; - } -yy242: - yych = *++YYCURSOR; - switch (yych) { - case 'e': goto yy277; - default: goto yy34; - } -yy243: - yych = *++YYCURSOR; - switch (yych) { - case 'a': goto yy278; - default: goto yy34; - } -yy244: - yych = *++YYCURSOR; - switch (yych) { - case 'n': goto yy279; - default: goto yy208; - } -yy245: - yych = *++YYCURSOR; - switch (yych) { - case 'f': goto yy280; - default: goto yy34; - } -yy246: - yych = *++YYCURSOR; - switch (yych) { - case 'a': goto yy281; - default: goto yy34; - } -yy247: - yych = *++YYCURSOR; - switch (yych) { - case 0x00: goto yy282; + case 0x00: goto yy272; case '0': case '1': case '2': @@ -1772,10 +1698,128 @@ yy247: case '6': case '7': case '8': - case '9': goto yy247; + case '9': goto yy235; + default: goto yy34; + } +yy237: + yych = *++YYCURSOR; + switch (yych) { + case 'c': goto yy274; + default: goto yy34; + } +yy238: + yych = *++YYCURSOR; + switch (yych) { + case 'y': goto yy275; + default: goto yy34; + } +yy239: + yych = *++YYCURSOR; + switch (yych) { + case 'e': goto yy276; + default: goto yy34; + } +yy240: + yych = *++YYCURSOR; + switch (yych) { + case 'a': goto yy277; + default: goto yy34; + } +yy241: + yych = *++YYCURSOR; + switch (yych) { + case 'a': goto yy278; + default: goto yy34; + } +yy242: + yych = *++YYCURSOR; + switch (yych) { + case 'd': goto yy279; + default: goto yy34; + } +yy243: + yych = *++YYCURSOR; + switch (yych) { + case 'e': goto yy280; + default: goto yy34; + } +yy244: + yych = *++YYCURSOR; + switch (yych) { + case 'r': goto yy281; + default: goto yy34; + } +yy245: + yych = *++YYCURSOR; + switch (yych) { + case 't': goto yy282; + default: goto yy34; + } +yy246: + yych = *++YYCURSOR; + switch (yych) { + case '2': goto yy283; + default: goto yy34; + } +yy247: + yych = *++YYCURSOR; + switch (yych) { + case 'p': goto yy284; + default: goto yy34; + } +yy248: + yych = *++YYCURSOR; + switch (yych) { + case 'd': goto yy285; default: goto yy34; } yy249: + yych = *++YYCURSOR; + switch (yych) { + case 'e': goto yy286; + default: goto yy34; + } +yy250: + yych = *++YYCURSOR; + switch (yych) { + case 'a': goto yy287; + default: goto yy34; + } +yy251: + yych = *++YYCURSOR; + switch (yych) { + case 'n': goto yy288; + default: goto yy213; + } +yy252: + yych = *++YYCURSOR; + switch (yych) { + case 'f': goto yy289; + default: goto yy34; + } +yy253: + yych = *++YYCURSOR; + switch (yych) { + case 'a': goto yy290; + default: goto yy34; + } +yy254: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy291; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy254; + default: goto yy34; + } +yy256: ++YYCURSOR; yynmatch = 3; yypmatch[2] = yyt1; @@ -1789,13 +1833,13 @@ yy249: opcode = absl::StrCat(group(1), "_velto", group(2)); goto end_region; } -#line 1793 "src/sfizz/OpcodeCleanup.cpp" -yy251: +#line 1837 "src/sfizz/OpcodeCleanup.cpp" +yy258: yych = *++YYCURSOR; -yy252: - if (yych <= 0x00) goto yy249; - goto yy251; -yy253: +yy259: + if (yych <= 0x00) goto yy256; + goto yy258; +yy260: ++YYCURSOR; yynmatch = 2; yypmatch[2] = yyt1; @@ -1807,17 +1851,17 @@ yy253: opcode = absl::StrCat("fil", group(1), "_type"); goto end_region; } -#line 1811 "src/sfizz/OpcodeCleanup.cpp" -yy255: +#line 1855 "src/sfizz/OpcodeCleanup.cpp" +yy262: yych = *++YYCURSOR; switch (yych) { - case 'o': goto yy284; - default: goto yy141; + case 'o': goto yy293; + default: goto yy142; } -yy256: +yy263: yych = *++YYCURSOR; switch (yych) { - case 0x00: goto yy285; + case 0x00: goto yy294; case '0': case '1': case '2': @@ -1827,38 +1871,50 @@ yy256: case '6': case '7': case '8': - case '9': goto yy256; + case '9': goto yy263; default: goto yy34; } -yy258: +yy265: yych = *++YYCURSOR; switch (yych) { - case 'f': goto yy287; + case 'f': goto yy296; default: goto yy34; } -yy259: +yy266: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy288; + case 'e': goto yy297; default: goto yy34; } -yy260: +yy267: yych = *++YYCURSOR; switch (yych) { - case 'o': goto yy262; + case 'o': goto yy269; default: goto yy34; } -yy261: +yy268: yych = *++YYCURSOR; switch (yych) { - case 'n': goto yy289; + case 'n': goto yy298; default: goto yy34; } -yy262: +yy269: yych = *++YYCURSOR; - if (yych <= 0x00) goto yy290; + if (yych <= 0x00) goto yy299; goto yy34; -yy263: +yy270: + yych = *++YYCURSOR; + switch (yych) { + case 't': goto yy301; + default: goto yy34; + } +yy271: + yych = *++YYCURSOR; + switch (yych) { + case 't': goto yy302; + default: goto yy34; + } +yy272: ++YYCURSOR; yynmatch = 3; yypmatch[4] = yyt1; @@ -1872,8 +1928,8 @@ yy263: opcode = absl::StrCat("start_", group(1), "cc", group(2)); goto end_region; } -#line 1876 "src/sfizz/OpcodeCleanup.cpp" -yy265: +#line 1932 "src/sfizz/OpcodeCleanup.cpp" +yy274: yych = *++YYCURSOR; switch (yych) { case '0': @@ -1887,115 +1943,115 @@ yy265: case '8': case '9': yyt1 = YYCURSOR; - goto yy292; + goto yy303; default: goto yy34; } -yy266: - yych = *++YYCURSOR; - switch (yych) { - case '_': goto yy294; - default: goto yy34; - } -yy267: - yych = *++YYCURSOR; - switch (yych) { - case 0x00: - yyt2 = yyt3 = NULL; - goto yy295; - case '_': - yyt3 = YYCURSOR; - goto yy297; - default: goto yy34; - } -yy268: - yych = *++YYCURSOR; - switch (yych) { - case 'c': goto yy299; - default: goto yy34; - } -yy269: - yych = *++YYCURSOR; - switch (yych) { - case 'y': goto yy270; - default: goto yy34; - } -yy270: - yych = *++YYCURSOR; - switch (yych) { - case 'c': goto yy300; - default: goto yy34; - } -yy271: - yych = *++YYCURSOR; - switch (yych) { - case 'a': goto yy301; - default: goto yy34; - } -yy272: - yych = *++YYCURSOR; - switch (yych) { - case 't': goto yy270; - default: goto yy34; - } -yy273: - yych = *++YYCURSOR; - switch (yych) { - case 'a': goto yy302; - default: goto yy34; - } -yy274: - yych = *++YYCURSOR; - yyt2 = YYCURSOR; - goto yy306; yy275: yych = *++YYCURSOR; switch (yych) { - case 't': goto yy307; + case '_': goto yy305; default: goto yy34; } yy276: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy308; + case 0x00: + yyt2 = yyt3 = NULL; + goto yy306; + case '_': + yyt3 = YYCURSOR; + goto yy308; default: goto yy34; } yy277: yych = *++YYCURSOR; switch (yych) { - case 'q': goto yy308; + case 'c': goto yy310; default: goto yy34; } yy278: yych = *++YYCURSOR; switch (yych) { - case 'n': goto yy309; + case 'y': goto yy279; default: goto yy34; } yy279: yych = *++YYCURSOR; switch (yych) { - case 'd': goto yy310; - default: goto yy208; + case 'c': goto yy311; + default: goto yy34; } yy280: yych = *++YYCURSOR; switch (yych) { - case 0x00: - yyt4 = yyt5 = NULL; - yyt3 = YYCURSOR; - goto yy311; - case '_': - yyt3 = yyt5 = YYCURSOR; - goto yy313; + case 'a': goto yy312; default: goto yy34; } yy281: yych = *++YYCURSOR; switch (yych) { - case 'n': goto yy315; + case 't': goto yy279; default: goto yy34; } yy282: + yych = *++YYCURSOR; + switch (yych) { + case 'a': goto yy313; + default: goto yy34; + } +yy283: + yych = *++YYCURSOR; + yyt2 = YYCURSOR; + goto yy317; +yy284: + yych = *++YYCURSOR; + switch (yych) { + case 't': goto yy318; + default: goto yy34; + } +yy285: + yych = *++YYCURSOR; + switch (yych) { + case 'e': goto yy319; + default: goto yy34; + } +yy286: + yych = *++YYCURSOR; + switch (yych) { + case 'q': goto yy319; + default: goto yy34; + } +yy287: + yych = *++YYCURSOR; + switch (yych) { + case 'n': goto yy320; + default: goto yy34; + } +yy288: + yych = *++YYCURSOR; + switch (yych) { + case 'd': goto yy321; + default: goto yy213; + } +yy289: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + yyt4 = yyt5 = NULL; + yyt3 = YYCURSOR; + goto yy322; + case '_': + yyt3 = yyt5 = YYCURSOR; + goto yy324; + default: goto yy34; + } +yy290: + yych = *++YYCURSOR; + switch (yych) { + case 'n': goto yy326; + default: goto yy34; + } +yy291: ++YYCURSOR; yynmatch = 4; yypmatch[2] = yyt1; @@ -2011,14 +2067,14 @@ yy282: opcode = absl::StrCat(group(1), "_", group(2), "_oncc", group(3)); goto end_region; } -#line 2015 "src/sfizz/OpcodeCleanup.cpp" -yy284: +#line 2071 "src/sfizz/OpcodeCleanup.cpp" +yy293: yych = *++YYCURSOR; switch (yych) { - case 'm': goto yy316; - default: goto yy141; + case 'm': goto yy327; + default: goto yy142; } -yy285: +yy294: ++YYCURSOR; yynmatch = 3; yypmatch[4] = yyt1; @@ -2032,26 +2088,26 @@ yy285: opcode = absl::StrCat(group(1), "hdcc", group(2)); goto end_region; } -#line 2036 "src/sfizz/OpcodeCleanup.cpp" -yy287: +#line 2092 "src/sfizz/OpcodeCleanup.cpp" +yy296: yych = *++YYCURSOR; switch (yych) { - case 'f': goto yy317; + case 'f': goto yy328; default: goto yy34; } -yy288: +yy297: yych = *++YYCURSOR; switch (yych) { - case 't': goto yy262; + case 't': goto yy269; default: goto yy34; } -yy289: +yy298: yych = *++YYCURSOR; switch (yych) { - case 'a': goto yy318; + case 'a': goto yy329; default: goto yy34; } -yy290: +yy299: ++YYCURSOR; yynmatch = 3; yypmatch[2] = yyt1; @@ -2065,11 +2121,23 @@ yy290: opcode = absl::StrCat(group(1), "_", group(2), "1"); goto end_region; } -#line 2069 "src/sfizz/OpcodeCleanup.cpp" -yy292: +#line 2125 "src/sfizz/OpcodeCleanup.cpp" +yy301: yych = *++YYCURSOR; switch (yych) { - case 0x00: goto yy319; + case 'h': goto yy330; + default: goto yy34; + } +yy302: + yych = *++YYCURSOR; + switch (yych) { + case 'c': goto yy331; + default: goto yy34; + } +yy303: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy332; case '0': case '1': case '2': @@ -2079,16 +2147,16 @@ yy292: case '6': case '7': case '8': - case '9': goto yy292; + case '9': goto yy303; default: goto yy34; } -yy294: +yy305: yych = *++YYCURSOR; switch (yych) { - case 'g': goto yy321; + case 'g': goto yy334; default: goto yy34; } -yy295: +yy306: ++YYCURSOR; yynmatch = 2; yypmatch[0] = yyt1; @@ -2100,39 +2168,39 @@ yy295: opcode = absl::StrCat("resonance1", group(1)); goto end_region; } -#line 2104 "src/sfizz/OpcodeCleanup.cpp" -yy297: +#line 2172 "src/sfizz/OpcodeCleanup.cpp" +yy308: yych = *++YYCURSOR; if (yych <= 0x00) { yyt2 = YYCURSOR; - goto yy295; + goto yy306; } - goto yy297; -yy299: + goto yy308; +yy310: yych = *++YYCURSOR; switch (yych) { - case 'k': goto yy270; + case 'k': goto yy279; default: goto yy34; } -yy300: +yy311: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy322; + case 'c': goto yy335; default: goto yy34; } -yy301: +yy312: yych = *++YYCURSOR; switch (yych) { - case 's': goto yy323; + case 's': goto yy336; default: goto yy34; } -yy302: +yy313: yych = *++YYCURSOR; switch (yych) { - case 'i': goto yy324; + case 'i': goto yy337; default: goto yy34; } -yy303: +yy314: ++YYCURSOR; yynmatch = 3; yypmatch[2] = yyt1; @@ -2146,37 +2214,37 @@ yy303: opcode = absl::StrCat(group(1), "_velto", group(2)); goto end_region; } -#line 2150 "src/sfizz/OpcodeCleanup.cpp" -yy305: +#line 2218 "src/sfizz/OpcodeCleanup.cpp" +yy316: yych = *++YYCURSOR; -yy306: - if (yych <= 0x00) goto yy303; - goto yy305; -yy307: +yy317: + if (yych <= 0x00) goto yy314; + goto yy316; +yy318: yych = *++YYCURSOR; switch (yych) { - case 'h': goto yy308; + case 'h': goto yy319; default: goto yy34; } -yy308: +yy319: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy325; + case 'c': goto yy338; default: goto yy34; } -yy309: +yy320: yych = *++YYCURSOR; switch (yych) { - case 'd': goto yy326; + case 'd': goto yy339; default: goto yy34; } -yy310: +yy321: yych = *++YYCURSOR; switch (yych) { - case 'o': goto yy327; - default: goto yy208; + case 'o': goto yy340; + default: goto yy213; } -yy311: +yy322: ++YYCURSOR; yynmatch = 4; yypmatch[2] = yyt1; @@ -2192,43 +2260,56 @@ yy311: opcode = absl::StrCat(group(1), "_", group(2), "1", group(3)); goto end_region; } -#line 2196 "src/sfizz/OpcodeCleanup.cpp" -yy313: +#line 2264 "src/sfizz/OpcodeCleanup.cpp" +yy324: yych = *++YYCURSOR; if (yych <= 0x00) { yyt4 = YYCURSOR; - goto yy311; + goto yy322; } - goto yy313; -yy315: + goto yy324; +yy326: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy328; + case 'c': goto yy341; default: goto yy34; } -yy316: +yy327: yych = *++YYCURSOR; - if (yych <= 0x00) goto yy329; - goto yy140; -yy317: + if (yych <= 0x00) goto yy342; + goto yy141; +yy328: yych = *++YYCURSOR; switch (yych) { case 0x00: yyt4 = yyt5 = NULL; yyt3 = YYCURSOR; - goto yy331; + goto yy344; case '_': yyt3 = yyt5 = YYCURSOR; - goto yy333; + goto yy346; default: goto yy34; } -yy318: +yy329: yych = *++YYCURSOR; switch (yych) { - case 'n': goto yy335; + case 'n': goto yy348; default: goto yy34; } -yy319: +yy330: + yych = *++YYCURSOR; + switch (yych) { + case '_': goto yy349; + case 'c': goto yy350; + default: goto yy34; + } +yy331: + yych = *++YYCURSOR; + switch (yych) { + case 'c': goto yy351; + default: goto yy34; + } +yy332: ++YYCURSOR; yynmatch = 3; yypmatch[4] = yyt1; @@ -2242,14 +2323,14 @@ yy319: opcode = absl::StrCat("start_", group(1), "hdcc", group(2)); goto end_region; } -#line 2246 "src/sfizz/OpcodeCleanup.cpp" -yy321: +#line 2327 "src/sfizz/OpcodeCleanup.cpp" +yy334: yych = *++YYCURSOR; switch (yych) { - case 'r': goto yy336; + case 'r': goto yy352; default: goto yy34; } -yy322: +yy335: yych = *++YYCURSOR; switch (yych) { case '0': @@ -2263,46 +2344,46 @@ yy322: case '8': case '9': yyt3 = YYCURSOR; - goto yy337; + goto yy353; default: goto yy34; } -yy323: +yy336: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy270; + case 'e': goto yy279; default: goto yy34; } -yy324: +yy337: yych = *++YYCURSOR; switch (yych) { - case 'n': goto yy270; + case 'n': goto yy279; default: goto yy34; } -yy325: +yy338: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy339; + case 'c': goto yy355; default: goto yy34; } -yy326: +yy339: yych = *++YYCURSOR; switch (yych) { - case 'o': goto yy340; + case 'o': goto yy356; default: goto yy34; } -yy327: +yy340: yych = *++YYCURSOR; switch (yych) { - case 'm': goto yy341; - default: goto yy208; + case 'm': goto yy357; + default: goto yy213; } -yy328: +yy341: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy280; + case 'e': goto yy289; default: goto yy34; } -yy329: +yy342: ++YYCURSOR; yynmatch = 1; yypmatch[0] = YYCURSOR - 12; @@ -2312,8 +2393,8 @@ yy329: opcode = "amp_random"; goto end_region; } -#line 2316 "src/sfizz/OpcodeCleanup.cpp" -yy331: +#line 2397 "src/sfizz/OpcodeCleanup.cpp" +yy344: ++YYCURSOR; yynmatch = 4; yypmatch[2] = yyt1; @@ -2329,30 +2410,35 @@ yy331: opcode = absl::StrCat(group(1), "_", group(2), "1", group(3)); goto end_region; } -#line 2333 "src/sfizz/OpcodeCleanup.cpp" -yy333: +#line 2414 "src/sfizz/OpcodeCleanup.cpp" +yy346: yych = *++YYCURSOR; if (yych <= 0x00) { yyt4 = YYCURSOR; - goto yy331; + goto yy344; } - goto yy333; -yy335: + goto yy346; +yy348: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy342; + case 'c': goto yy358; default: goto yy34; } -yy336: +yy349: yych = *++YYCURSOR; switch (yych) { - case 'o': goto yy343; + case 'o': goto yy359; default: goto yy34; } -yy337: +yy350: + yych = *++YYCURSOR; + switch (yych) { + case 'c': goto yy360; + default: goto yy34; + } +yy351: yych = *++YYCURSOR; switch (yych) { - case 0x00: goto yy344; case '0': case '1': case '2': @@ -2362,10 +2448,34 @@ yy337: case '6': case '7': case '8': - case '9': goto yy337; + case '9': + yyt1 = YYCURSOR; + goto yy361; default: goto yy34; } -yy339: +yy352: + yych = *++YYCURSOR; + switch (yych) { + case 'o': goto yy363; + default: goto yy34; + } +yy353: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy364; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy353; + default: goto yy34; + } +yy355: yych = *++YYCURSOR; switch (yych) { case '0': @@ -2379,32 +2489,71 @@ yy339: case '8': case '9': yyt3 = YYCURSOR; - goto yy346; + goto yy366; default: goto yy34; } -yy340: +yy356: yych = *++YYCURSOR; switch (yych) { - case 'm': goto yy348; + case 'm': goto yy368; default: goto yy34; } -yy341: +yy357: yych = *++YYCURSOR; - if (yych <= 0x00) goto yy349; - goto yy207; -yy342: + if (yych <= 0x00) goto yy369; + goto yy212; +yy358: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy317; + case 'e': goto yy328; default: goto yy34; } -yy343: +yy359: yych = *++YYCURSOR; switch (yych) { - case 'u': goto yy351; + case 'n': goto yy371; default: goto yy34; } -yy344: +yy360: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + yyt1 = YYCURSOR; + goto yy372; + default: goto yy34; + } +yy361: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy374; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy361; + default: goto yy34; + } +yy363: + yych = *++YYCURSOR; + switch (yych) { + case 'u': goto yy376; + default: goto yy34; + } +yy364: ++YYCURSOR; yynmatch = 4; yypmatch[2] = yyt1; @@ -2420,11 +2569,11 @@ yy344: opcode = absl::StrCat(group(1), "_", group(2), "_oncc", group(3)); goto end_region; } -#line 2424 "src/sfizz/OpcodeCleanup.cpp" -yy346: +#line 2573 "src/sfizz/OpcodeCleanup.cpp" +yy366: yych = *++YYCURSOR; switch (yych) { - case 0x00: goto yy352; + case 0x00: goto yy377; case '0': case '1': case '2': @@ -2434,13 +2583,13 @@ yy346: case '6': case '7': case '8': - case '9': goto yy346; + case '9': goto yy366; default: goto yy34; } -yy348: +yy368: yych = *++YYCURSOR; if (yych >= 0x01) goto yy34; -yy349: +yy369: ++YYCURSOR; yynmatch = 2; yypmatch[0] = yyt1; @@ -2452,14 +2601,49 @@ yy349: opcode = absl::StrCat("fil", group(1), "_random"); goto again_region; } -#line 2456 "src/sfizz/OpcodeCleanup.cpp" -yy351: +#line 2605 "src/sfizz/OpcodeCleanup.cpp" +yy371: yych = *++YYCURSOR; switch (yych) { - case 'p': goto yy354; + case 'c': goto yy379; default: goto yy34; } -yy352: +yy372: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy380; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy372; + default: goto yy34; + } +yy374: + ++YYCURSOR; + yynmatch = 2; + yypmatch[2] = yyt1; + yypmatch[0] = yyt1 - 12; + yypmatch[1] = YYCURSOR; + yypmatch[3] = YYCURSOR - 1; +#line 195 "src/sfizz/OpcodeCleanup.re" + { + opcode = absl::StrCat("loop_start_oncc", group(1)); + goto end_region; + } +#line 2640 "src/sfizz/OpcodeCleanup.cpp" +yy376: + yych = *++YYCURSOR; + switch (yych) { + case 'p': goto yy382; + default: goto yy34; + } +yy377: ++YYCURSOR; yynmatch = 4; yypmatch[2] = yyt1; @@ -2475,10 +2659,48 @@ yy352: opcode = absl::StrCat(group(1), "_", group(2), "_oncc", group(3)); goto end_region; } -#line 2479 "src/sfizz/OpcodeCleanup.cpp" -yy354: +#line 2663 "src/sfizz/OpcodeCleanup.cpp" +yy379: yych = *++YYCURSOR; - if (yych >= 0x01) goto yy34; + switch (yych) { + case 'c': goto yy383; + default: goto yy34; + } +yy380: + ++YYCURSOR; + yynmatch = 2; + yypmatch[2] = yyt1; + yypmatch[0] = yyt1 - 13; + yypmatch[1] = YYCURSOR; + yypmatch[3] = YYCURSOR - 1; +#line 200 "src/sfizz/OpcodeCleanup.re" + { + opcode = absl::StrCat("loop_end_oncc", group(1)); + goto end_region; + } +#line 2682 "src/sfizz/OpcodeCleanup.cpp" +yy382: + yych = *++YYCURSOR; + if (yych <= 0x00) goto yy384; + goto yy34; +yy383: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + yyt1 = YYCURSOR; + goto yy386; + default: goto yy34; + } +yy384: ++YYCURSOR; yynmatch = 1; yypmatch[0] = YYCURSOR - 16; @@ -2488,9 +2710,38 @@ yy354: opcode = "group"; goto end_region; } -#line 2492 "src/sfizz/OpcodeCleanup.cpp" +#line 2714 "src/sfizz/OpcodeCleanup.cpp" +yy386: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy388; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy386; + default: goto yy34; + } +yy388: + ++YYCURSOR; + yynmatch = 2; + yypmatch[2] = yyt1; + yypmatch[0] = yyt1 - 16; + yypmatch[1] = YYCURSOR; + yypmatch[3] = YYCURSOR - 1; +#line 205 "src/sfizz/OpcodeCleanup.re" + { + opcode = absl::StrCat("loop_end_oncc", group(1)); + goto end_region; + } +#line 2743 "src/sfizz/OpcodeCleanup.cpp" } -#line 199 "src/sfizz/OpcodeCleanup.re" +#line 214 "src/sfizz/OpcodeCleanup.re" end_region: @@ -2505,80 +2756,80 @@ end_region: YYCURSOR = opcode.c_str(); -#line 2509 "src/sfizz/OpcodeCleanup.cpp" +#line 2760 "src/sfizz/OpcodeCleanup.cpp" { char yych; yych = *YYCURSOR; switch (yych) { - case 's': goto yy361; - default: goto yy359; + case 's': goto yy394; + default: goto yy392; } -yy359: +yy392: ++YYCURSOR; -yy360: -#line 219 "src/sfizz/OpcodeCleanup.re" +yy393: +#line 234 "src/sfizz/OpcodeCleanup.re" { goto end_control; } -#line 2524 "src/sfizz/OpcodeCleanup.cpp" -yy361: +#line 2775 "src/sfizz/OpcodeCleanup.cpp" +yy394: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case 'e': goto yy362; - default: goto yy360; + case 'e': goto yy395; + default: goto yy393; } -yy362: +yy395: yych = *++YYCURSOR; switch (yych) { - case 't': goto yy364; - default: goto yy363; + case 't': goto yy397; + default: goto yy396; } -yy363: +yy396: YYCURSOR = YYMARKER; - goto yy360; -yy364: + goto yy393; +yy397: yych = *++YYCURSOR; switch (yych) { - case '_': goto yy365; - default: goto yy363; + case '_': goto yy398; + default: goto yy396; } -yy365: +yy398: yych = *++YYCURSOR; switch (yych) { - case 'r': goto yy366; - default: goto yy363; + case 'r': goto yy399; + default: goto yy396; } -yy366: +yy399: yych = *++YYCURSOR; switch (yych) { - case 'e': goto yy367; - default: goto yy363; + case 'e': goto yy400; + default: goto yy396; } -yy367: +yy400: yych = *++YYCURSOR; switch (yych) { - case 'a': goto yy368; - default: goto yy363; + case 'a': goto yy401; + default: goto yy396; } -yy368: +yy401: yych = *++YYCURSOR; switch (yych) { - case 'l': goto yy369; - default: goto yy363; + case 'l': goto yy402; + default: goto yy396; } -yy369: +yy402: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy370; - default: goto yy363; + case 'c': goto yy403; + default: goto yy396; } -yy370: +yy403: yych = *++YYCURSOR; switch (yych) { - case 'c': goto yy371; - default: goto yy363; + case 'c': goto yy404; + default: goto yy396; } -yy371: +yy404: yych = *++YYCURSOR; switch (yych) { case '0': @@ -2592,13 +2843,13 @@ yy371: case '8': case '9': yyt1 = YYCURSOR; - goto yy372; - default: goto yy363; + goto yy405; + default: goto yy396; } -yy372: +yy405: yych = *++YYCURSOR; switch (yych) { - case 0x00: goto yy374; + case 0x00: goto yy407; case '0': case '1': case '2': @@ -2608,24 +2859,24 @@ yy372: case '6': case '7': case '8': - case '9': goto yy372; - default: goto yy363; + case '9': goto yy405; + default: goto yy396; } -yy374: +yy407: ++YYCURSOR; yynmatch = 2; yypmatch[2] = yyt1; yypmatch[0] = yyt1 - 10; yypmatch[1] = YYCURSOR; yypmatch[3] = YYCURSOR - 1; -#line 214 "src/sfizz/OpcodeCleanup.re" +#line 229 "src/sfizz/OpcodeCleanup.re" { opcode = absl::StrCat("set_hdcc", group(1)); goto end_control; } -#line 2627 "src/sfizz/OpcodeCleanup.cpp" +#line 2878 "src/sfizz/OpcodeCleanup.cpp" } -#line 223 "src/sfizz/OpcodeCleanup.re" +#line 238 "src/sfizz/OpcodeCleanup.re" end_control: diff --git a/src/sfizz/OpcodeCleanup.re b/src/sfizz/OpcodeCleanup.re index d3bdb12e..27ea2e22 100644 --- a/src/sfizz/OpcodeCleanup.re +++ b/src/sfizz/OpcodeCleanup.re @@ -192,6 +192,21 @@ end_region_oncc: goto end_region; } + "loop_startcc" (number) END { + opcode = absl::StrCat("loop_start_oncc", group(1)); + goto end_region; + } + + "loop_lengthcc" (number) END { + opcode = absl::StrCat("loop_end_oncc", group(1)); + goto end_region; + } + + "loop_length_oncc" (number) END { + opcode = absl::StrCat("loop_end_oncc", group(1)); + goto end_region; + } + * { goto end_region; } diff --git a/src/sfizz/Region.cpp b/src/sfizz/Region.cpp index c4aba701..685e3811 100644 --- a/src/sfizz/Region.cpp +++ b/src/sfizz/Region.cpp @@ -128,13 +128,13 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode, bool cleanOpcode) case hash("loop_start"): // also loopstart loopRange.setStart(opcode.read(Default::loopStart)); break; - case hash("loop_start_oncc&"): // also loop_start_cc& + case hash("loop_start_oncc&"): // also loop_start_cc&, loop_startcc& if (opcode.parameters.back() > config::numCCs) return false; loopStartCC[opcode.parameters.back()] = opcode.read(Default::loopMod); break; - case hash("loop_end_oncc&"): // also loop_end_cc& + case hash("loop_end_oncc&"): // also loop_end_cc&, loop_lengthcc&, loop_length_oncc&, loop_length_cc& if (opcode.parameters.back() > config::numCCs) return false; diff --git a/tests/RegionValuesT.cpp b/tests/RegionValuesT.cpp index ab982531..15c7f860 100644 --- a/tests/RegionValuesT.cpp +++ b/tests/RegionValuesT.cpp @@ -356,6 +356,9 @@ TEST_CASE("[Values] Loop range") sample=kick.wav sample=kick.wav loop_start_cc12=10 loop_end_cc14=-100 sample=kick.wav loop_start_oncc12=-10 loop_end_oncc14=100 + sample=kick.wav loop_startcc12=-10 loop_lengthcc14=100 + sample=kick.wav loop_length_oncc14=100 + sample=kick.wav loop_length_cc14=100 )"); synth.dispatchMessage(client, 0, "/region0/loop_start_cc12", "", nullptr); synth.dispatchMessage(client, 0, "/region0/loop_end_cc14", "", nullptr); @@ -363,6 +366,10 @@ TEST_CASE("[Values] Loop range") synth.dispatchMessage(client, 0, "/region1/loop_end_cc14", "", nullptr); synth.dispatchMessage(client, 0, "/region2/loop_start_cc12", "", nullptr); synth.dispatchMessage(client, 0, "/region2/loop_end_cc14", "", nullptr); + synth.dispatchMessage(client, 0, "/region3/loop_start_cc12", "", nullptr); + synth.dispatchMessage(client, 0, "/region3/loop_end_cc14", "", nullptr); + synth.dispatchMessage(client, 0, "/region4/loop_end_cc14", "", nullptr); + synth.dispatchMessage(client, 0, "/region5/loop_end_cc14", "", nullptr); std::vector expected { "/region0/loop_start_cc12,h : { 0 }", "/region0/loop_end_cc14,h : { 0 }", @@ -370,6 +377,10 @@ TEST_CASE("[Values] Loop range") "/region1/loop_end_cc14,h : { -100 }", "/region2/loop_start_cc12,h : { -10 }", "/region2/loop_end_cc14,h : { 100 }", + "/region3/loop_start_cc12,h : { -10 }", + "/region3/loop_end_cc14,h : { 100 }", + "/region4/loop_end_cc14,h : { 100 }", + "/region5/loop_end_cc14,h : { 100 }", }; REQUIRE(messageList == expected); }