From 6c85c7db6edf33f0da4283a0ed9fdced0cc9a218 Mon Sep 17 00:00:00 2001 From: akasaka Date: Sun, 29 Sep 2024 13:07:16 +0900 Subject: [PATCH 01/21] =?UTF-8?q?=D0=9F=D0=9F=D0=9A=20=D0=92=D0=BE=D1=81?= =?UTF-8?q?=D0=BA=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/music/034_ppk.pomf | Bin 0 -> 2738 bytes helper/chimes/ppk.mid | Bin 0 -> 9069 bytes helper/midi_to_chime.py | 5 +- helper/pwm.py | 2 +- src/main.cpp | 3 +- src/music/034_ppk.cpp | 3843 +++++++++++++++++++++++++++++++++++++++ src/sound/sequencer.cpp | 1 + 7 files changed, 3851 insertions(+), 3 deletions(-) create mode 100644 data/music/034_ppk.pomf create mode 100644 helper/chimes/ppk.mid create mode 100644 src/music/034_ppk.cpp diff --git a/data/music/034_ppk.pomf b/data/music/034_ppk.pomf new file mode 100644 index 0000000000000000000000000000000000000000..2be9bc492d0884da8e72f5510b19b76bbc2948d5 GIT binary patch literal 2738 zcmV;j3QhG;PiMxnu^J+=Rs~KU7EIT&%OyCG zV+}abw;3qt^m`PS%c9H;2-dKI)NUE=ktL9zMVL%!MXaV1ulNPMt+~Q6y;LaOB?WPM zuBB5Mhq$3kq!59^+Mlqz5B@7VnoF5JW;=C;+{K5Em4@e!=L=b(gQ(nR2NqxI8VoC8krEuW=GoCmxJe z6%s*{v6Grjy4jBvx?sy_o>O<$;lbY=M_nfpxRNi{IH^i6K{XlD>Xg+hP)YK^ds@hS%viFYImb1qsb03?RkJz-Q(kJjS$WfMI z$B;u~O2yt&?UFsg9kHrDV;|en8-xy+=@}Jf;$4}=upJ!N6Y+YICiCgY^}HB*QS5R8 z{VY=yn#)+zu;+NjVmvOvo+@qO zB7^O9`q@MjDhGylwTB&1E@DGUdQzuZWko!?GTq9i@^Q50969iM$BD;WWzaR&Lq9M- zed_t|y_(1#K6)SaVM}~+`7CwXIP2>4^Q-*_b75LqEdT%jGynhqbCBm@Qei*>>?}-- z65?`-Qfg{)nwlndMph2CZpkqLZ0PR~(Ya~S! zubF7n=)y!22;^Yz90no;Mu^N|AY={!BMTeYum{mYz(YV#nVaBY!J7xa!W?pxy=Onb z!Y(Z6O^_Tsc=j_`@745sU9YREt9xeB*`ylM)O5W+zkcu6uU~a{IuDfIwmV8~cJ<)l zdwTcT`+C=XspebvJJ`>(NcZ!Ob?nn_`It*?+i~oU+Pl!ZHTczC%PsfL-qAn*(!Y8r z@{I}^U`Ky~#x>|ZA>GZgZg23e{`r_ho{`!y9s9&qV^nWQ8`MoQ(120_hDMdt;GbNo_*M`nDRMTdj~Z^v36QWqFg94>d=- zf0M{pw#XkaaSbAn^K1%?0PbcevQEN4^bGm3L#DpSwN?Re#NMS+Dg1leQGQ5*4DXs3n*H?4&FnrRoOY*z@>9M2IbmZAKnZ53T8#2 zIO)v&npxMSJ0wSZT0Z)Lzz zja?S1o2^4P;jOK6yU`je`HWRS(Y0`3&t5qgcH%h3z48xwbcPczb5lK*8##1cOD!Sy zyB?kX2gknDr+SLV@Btl+&Oog5p_-rIrj}3-KT`9@pQr!As*M(-SVoKiSX*Uaba<>s zNB`&&hdJU4>Q zDq|4^8SELO-hxab654>|#Cr8g8|iBSG$}9MC%XAP(Uv zaPeITq)i_`j6Kq&$2@7?A6v)>rc_ntDUhWwtMx(8Z~@tBPmTfO;H~T@^sObn0={ zqvy{B%MrPRQh-|p&EQF8Q<`0>G8QI!UxiTF&7I%xbFcy(?eIXA)5AVQQn2+4J~fTG zBcc_UHCV(Qu^Fn^2Z$AS#4xm(4K0Eo!KaNCv0_F{R1WA|)rCQfkd7{Fqs_wZdJdc@ zFyC$!1tQvHEIguSgRr^S4^(9qe0P@^Mg)7&yU-@51y*8?WiL82%U)nPn1drppA|2# z_Q)molWi@qI3%2{f$fOeMq@Oh%Z)@D!8L!E%Y<`f@YXG`!qnR$Z!2D4G4)(*Uo@eM zQ;!4DC!@8f$06BO0i;W(-YB=+?gA@JvzaPmSI>lJm^ zX@Pa`DZp>4$&v9Zcz~9_R^`}(T1CxveHO4?eU^u$>kGTNZF`}4X%X>V!88}~(}Hhz zgWRYeDZJc8kpfazdbp{CW4IN9DELC}gmE^SG<)QOt1Tqi+?^YO6z{ehvMHD{lw;sV zZh35Kh-z^njdN4Ck3L|}09q#>E+WyF2u(rS^pP;^uAt!ZRj>fCBQTZG$hZvFrh2ay z_Q}yE8Fh8Oiz1ES8Yk2boL?<)2ED-Bq8{gbgM73=J-GG_3{G-e)Z=RABAmB)v`@Y2 zT89Vx}Fg$4mtaEL_e)2CqX$_CkxIrQOYbXPS|R*O>$2Jxk0HFi@xi0+nZ zV@VY7z_3?i{*v)rsX#FYjUH)abj)h*u&CB;kB4sS%&6dmgjGS|r s>ij3VpCA*J(}K?2I0A|qHKr&(`s436rn%Ao0cCGyAVqIRAVp6`AYKSY<^TWy literal 0 HcmV?d00001 diff --git a/helper/chimes/ppk.mid b/helper/chimes/ppk.mid new file mode 100644 index 0000000000000000000000000000000000000000..b5ed566c37e1c3c6f931a3fab6eae7a1f9eb00ee GIT binary patch literal 9069 zcmeI2-)<9E5XMh!SVI#dxrLI%7A81UMJS}THnPvb-V!;9AlPvrA;eVTPZw0^QqsnX zD2i<25Xx04c7Y2n`V5r5K*dF$q&Jn?XK;UOdmT4TSn(%BLB25KZ)Wy8vvbaTCqc>Mb#@r^^{lp;>rCBRc+hxZ1&`1qpJDrFC*i_zk93NuF0Xy zM0zCo?d+ASm#$yCcZ|GrHaj7zT1O*fT{A6F9T0U|?MLy{;};L2<8m=N9)2KC<`(72 z@B<^ATQt((3^)@eo~y^R;4JY8;uFMAflm>iBt8kA0#6Y?L;MVQ8az$>Eb+788So78 z9Pu3Z9QYjZ^Tf}Cu@Y-wjTXGo@qX6pXFVOOx2)@6xA;ca=f>|=pIiK}nOi(;vJcoO zHinJ0;Ej$SVZ9@)H;5g?Dy(Y3Zt;z-&yC-$zJA`PpZC$RI#yz36EBCKdOEy~A?Rrj z!7GY@+aY(0yKVAD$K4K*TYRJIbK`fb@5MvVaw(k^zj{3PFP6tlqcmogZj{qzS1E1w zl{4nvQpP+8-VOeQgrj!CcQ`)6@i7TqB=j}$82&N*EAejPktQA^f2@{YC(J;cfjDh` z2;U(VaN-XC>i8hfr^+Md=cN%-mXDj4O2^F~E^Ot}N6l<$)VxA3v-ILnIcs*8vh*y2 zt@o~*-q_dzmxf-DP=8>3g4c}?Qb3B$I!ZywMuFSGc7fa3gObMX+%1;hwO3l&$4Sd^ z((d_qOQvOeZBVZB>g_>UIj8lRU76uGJmc@$sd|?O<<8FL?>rs5#WRoZmrx~U2A5){ zw<681C296y_hNmOSOk9re?&+#V7p{QBkJdC054e)Uqwd2Q5%yI@ngY}fr<=Z16Cy# zhb0b69QHWuah{9A9>gES9~3gqqj8@M!XD?TIBY?(g0Kg{K^v12guRAg@5JBv6ZBiT zcuDb+&MP{v=)9uyiq6X@{wV&aP;?%bifTmtd=20wE9%37={z5-zkvrTsvCc|MK58Y z^NP+ZI&OZ-w8a{=3BNR6nUuK~PdNgoz0ZA^;vH}F8kU@0SH zwb|G0Of1jvUKJnVU%%fp_)pQy9vc{E>VpXI697WNc4Wn)s<)%r-o-iyDt zy{nsb-na6Zkrt9=Az2nuW+7!3B4u%sb^JPhT__8kvV2NM$}A+xLb`OabfioN>oz7u zN6KorMJQ1*iHa$vNij`|X;Ms+WSS(?q@+-&7%s&$DO3!Imn^19p<)UZ zCNjL0+0hw^&b+8I=!}}LcLtqN=uERS=!`;V6gs2O89rD#gU%>)Mxrwkol)qFLT3~@ zqtF?N&Pa5|?mIeztJZgPMxirJc63IeGtIu&E-={98HLWY&rGv3Z}&tN*u4U~x4^D0 zu&WE~>H@o(#Gk~U6spLs7JVwoG!@ycBD3fxV{@E^mU6tcj@Q}9XHCF9e-c+>`*`Vn8uwRbMx#T*5AYWuWGk?{bAle%=>SaJ;3@0SpQY+ zX4UPi>sEI!@7K%wt!-ESJ969fKRpjm4+oY{4uc2H_#GYxzfA3|yTAH5hu5)gaVPI}t-a22yz#=}N2%dJia%O${@O%n Tr9Z~sE_!~Wb-m}=|Dk^Yh8RwO literal 0 HcmV?d00001 diff --git a/helper/midi_to_chime.py b/helper/midi_to_chime.py index 0b03e23..82574d2 100644 --- a/helper/midi_to_chime.py +++ b/helper/midi_to_chime.py @@ -62,7 +62,10 @@ def prev_note_off_event(chan): for msg in mid: print(msg) - if msg.time >= 0.01: + if msg.time > 0: + if len(evts) > 0 and evts[-1].kind == "DELAY": + evts[-1].arg += int(msg.time * 1000) + else: evts.append(Event("DELAY", 0, int(msg.time * 1000))) if msg.type == "note_on" or msg.type == "note_off": if msg.type == "note_on" and msg.velocity > 0: diff --git a/helper/pwm.py b/helper/pwm.py index c567148..67eb5bc 100644 --- a/helper/pwm.py +++ b/helper/pwm.py @@ -57,4 +57,4 @@ def median(data): i += 1 print(f"static const uint8_t {sname}_rle_data[] = {{" + str(rle_buf)[1::][:-1:] + "};") -print(f"static const rle_sample_t {sname} = {{ .sample_rate = 8000, .root_frequency = 524 /* C5 */, .rle_data = {sname}_rle_data, .length = {len(rle_buf)}, .mode = MIX_MODE_ADD }};") \ No newline at end of file +print(f"static const rle_sample_t {sname} = {{ .sample_rate = 8000, .root_frequency = 524 /* C5 */, .length = {len(rle_buf)}, .mode = MIX_MODE_ADD, .rle_data = {sname}_rle_data }};") \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 0e15cd1..16f8f4a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -313,11 +313,12 @@ void setup() { xTaskCreate( boot_task, "BOOT", - 4096, + 6000, nullptr, configMAX_PRIORITIES - 1, &bootTaskHandle ); + vTaskResume(bootTaskHandle); ESP_LOGI(LOG_TAG, "setup end."); } diff --git a/src/music/034_ppk.cpp b/src/music/034_ppk.cpp new file mode 100644 index 0000000..160fbb8 --- /dev/null +++ b/src/music/034_ppk.cpp @@ -0,0 +1,3843 @@ +#include +extern "C" const POMFHeader POMF_HEAD = { + POMF_MAGIC_FILE, + POMF_CURVER, + "Воскрешение", + "ППК - Воскрешение (Артемьев)", +}; + +static const uint8_t kick_rle_data[] = {0, 7, 4, 2, 1, 24, 23, 30, 33, 26, 38, 38, 30, 41, 41, 52, 62, 50, 58, 64, 61, 70, 99, 92, 80, 119, 102, 119, 119, 142, 146, 117, 160, 119, 154, 5}; +const rle_sample_t kick = { .sample_rate = 8000, .root_frequency = 524 /* C5 */, .length = 36, .mode = MIX_MODE_ADD, .rle_data = kick_rle_data }; + +static const uint8_t poehali2_rle_data[] = {0, 4, 1, 1, 2, 3, 1, 2, 3, 2, 3, 1, 3, 4, 5, 4, 4, 1, 1, 4, 3, 2, 3, 1, 3, 2, 3, 2, 1, 1, 1, 1, 3, 2, 1, 3, 2, 3, 1, 2, 3, 1, 3, 2, 3, 3, 1, 4, 3, 2, 2, 3, 3, 1, 3, 2, 3, 2, 2, 3, 3, 2, 2, 2, 4, 6, 3, 2, 2, 3, 3, 1, 3, 2, 3, 1, 3, 2, 2, 2, 2, 2, 3, 2, 3, 2, 2, 2, 8, 3, 3, 1, 2, 3, 7, 6, 3, 7, 3, 2, 1, 4, 6, 3, 3, 1, 3, 3, 2, 2, 3, 2, 3, 1, 2, 10, 5, 3, 1, 2, 3, 3, 1, 2, 3, 2, 2, 3, 2, 4, 3, 2, 2, 2, 2, 2, 3, 2, 2, 2, 4, 2, 2, 3, 3, 2, 2, 3, 2, 2, 2, 2, 2, 3, 2, 2, 2, 3, 2, 1, 4, 2, 1, 1, 1, 2, 3, 3, 1, 2, 3, 1, 1, 4, 1, 1, 3, 2, 1, 3, 1, 6, 1, 3, 1, 2, 3, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 3, 2, 2, 3, 2, 2, 2, 3, 1, 3, 2, 3, 1, 3, 3, 2, 2, 3, 5, 1, 1, 4, 6, 4, 6, 4, 6, 3, 2, 1, 3, 3, 6, 5, 6, 4, 4, 1, 1, 2, 7, 2, 1, 2, 3, 2, 2, 2, 2, 1, 4, 1, 3, 1, 3, 2, 1, 2, 3, 1, 2, 3, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 1, 2, 3, 2, 3, 1, 2, 3, 1, 2, 1, 1, 4, 1, 1, 1, 1, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 2, 4, 2, 1, 2, 4, 1, 1, 2, 4, 1, 3, 2, 2, 2, 1, 3, 4, 3, 1, 3, 3, 1, 3, 2, 2, 2, 3, 2, 3, 1, 2, 2, 1, 2, +3, 2, 2, 2, 2, 2, 2, 3, 3, 1, 4, 2, 3, 2, 3, 2, 2, 2, 3, 2, 1, 1, 2, 2, 3, 2, 1, 1, 1, 2, 2, 3, 2, 2, 2, 2, 2, 1, 1, 2, 3, 2, 1, 1, 1, 2, 2, 3, 2, 2, 2, 2, 2, 1, 1, 3, 2, 2, 2, 2, 3, 1, 4, 1, 4, 1, 2, 4, 2, 2, 3, 2, 3, 1, 4, 1, 4, 2, 3, 2, 3, 1, 3, 2, 1, 1, 1, 1, 1, 2, 1, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 3, 1, 3, 2, 1, 3, 1, 2, 2, 3, 3, 2, 3, 2, 3, 1, 3, 2, 2, 2, 2, 2, 3, 2, 3, 2, 1, 4, 2, 2, 2, 2, 2, 2, 2, 3, 3, 1, 3, 2, 2, 3, 2, 2, 3, 2, 2, 2, 2, 2, 2, 3, 3, 2, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 5, 1, 3, 1, 2, 3, 1, 3, 1, 2, 2, 2, 2, 2, 4, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 5, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 5, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 1, 2, 1, 3, 1, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, +1, 2, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 1, 3, 1, 3, 2, 1, 3, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 1, 3, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 3, 1, 3, 2, 2, 2, 2, 3, 1, 2, 3, 3, 2, 1, 4, 3, 2, 2, 2, 2, 2, 2, 3, 1, 3, 3, 1, 2, 3, 1, 3, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 3, 1, 3, 2, 2, 2, 2, 2, 3, 2, 2, 3, 2, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 1, 3, 2, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 3, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 1, 3, 2, 2, 2, 3, 2, +3, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 3, 3, 2, 2, 2, 1, 3, 2, 2, 2, 2, 2, 3, 1, 3, 3, 2, 3, 1, 2, 2, 2, 2, 3, 1, 3, 2, 3, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 1, 3, 2, 3, 1, 3, 2, 1, 3, 2, 2, 2, 2, 3, 2, 3, 1, 3, 2, 2, 2, 1, 3, 2, 2, 2, 2, 3, 2, 3, 2, 2, 2, 2, 2, 1, 2, 3, 2, 2, 2, 3, 2, 3, 2, 2, 2, 2, 2, 1, 2, 3, 2, 2, 2, 3, 2, 3, 2, 2, 2, 3, 1, 1, 2, 1, 1, 1, 2, 3, 2, 3, 2, 3, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 3, 2, 3, 2, 2, 2, 2, 2, 1, 2, 3, 2, 2, 2, 3, 2, 3, 2, 3, 1, 3, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 1, 2, 2, 2, 3, 3, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 2, 1, 2, 1, 1, 1, 2, 3, 2, 3, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 3, 2, 3, 2, 2, 1, 1, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 3, 4, 1, 3, 2, 3, 2, 2, 1, 1, 1, 3, 2, 3, 2, 2, 1, 1, 2, 3, 2, 2, 3, 2, 3, 3, 2, 3, 2, 2, 2, 1, 1, 3, 2, 3, 2, 4, 1, 2, 3, 3, 2, 2, 2, 2, 2, 1, 6, 1, 3, 2, 2, 1, 3, 4, 1, 3, 3, 2, 1, 1, 1, 4, 1, 4, 1, 3, 2, 3, 2, 2, 2, 1, 1, 3, 3, 1, 1, 1, 2, 1, 1, 2, 1, 3, 2, 3, 2, 2, 1, 1, 2, 2, 4, 3, 1, 2, 1, 1, 2, 3, 2, 2, 2, 3, 1, 1, +1, 3, 1, 1, 3, 2, 1, 2, 1, 1, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 3, 2, 3, 1, 3, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 1, 3, 4, 1, 3, 2, 2, 3, 2, 3, 2, 3, 2, 3, 1, 1, 1, 1, 1, 1, 2, 3, 1, 2, 3, 2, 2, 2, 3, 2, 3, 1, 1, 3, 6, 3, 1, 1, 3, 2, 2, 2, 3, 2, 2, 3, 2, 2, 3, 3, 2, 3, 2, 2, 2, 3, 1, 2, 3, 6, 6, 2, 2, 4, 7, 3, 6, 3, 5, 2, 2, 2, 3, 2, 6, 6, 7, 6, 7, 2, 6, 2, 12, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 10, 2, 2, 2, 2, 2, 3, 6, 6, 1, 2, 3, 2, 2, 2, 2, 3, 2, 7, 3, 7, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 2, 19, 1, 3, 2, 2, 2, 14, 2, 7, 2, 7, 5, 6, 2, 3, 1, 3, 2, 2, 2, 3, 2, 2, 6, 2, 3, 48, 1, 3, 1, 3, 2, 3, 2, 2, 2, 3, 2, 2, 3, 7, 2, 6, 1, 3, 2, 2, 2, 7, 3, 2, 2, 2, 3, 2, 3, 2, 2, 2, 3, 2, 2, 2, 2, 6, 3, 6, 2, 3, 1, 10, 2, 2, 2, 2, 2, 8, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 3, 1, 7, 2, 6, 3, 3, 1, 3, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 3, 2, 2, 3, 2, 3, 2, 2, 5, 3, 1, 2, 3, 3, 4, 1, 4, 1, 3, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 3, 6, 4, 3, 1, 3, 2, 2, 3, 1, 3, 2, 2, 2, 8, 3, 3, 1, 3, 2, 2, 2, 3, 1, 3, 2, 2, 2, 3, 2, 1, 3, 4, 1, 1, 4, 3, 2, 1, 3, 8, 2, 2, 2, 3, 1, 3, 5, 3, 2, 2, 2, 2, 3, 5, +1, 1, 3, 2, 3, 2, 3, 2, 1, 3, 2, 2, 2, 3, 2, 3, 3, 1, 3, 2, 3, 1, 3, 5, 2, 3, 1, 2, 3, 1, 1, 3, 2, 1, 3, 2, 2, 2, 2, 3, 1, 3, 2, 2, 2, 2, 3, 2, 2, 1, 2, 1, 3, 2, 3, 1, 2, 3, 2, 1, 3, 2, 3, 1, 3, 2, 3, 1, 1, 3, 1, 2, 3, 6, 2, 3, 2, 2, 2, 2, 3, 3, 1, 1, 1, 2, 3, 1, 3, 2, 2, 3, 2, 2, 2, 2, 3, 2, 2, 3, 4, 1, 3, 2, 3, 1, 1, 1, 1, 4, 1, 1, 2, 2, 2, 2, 3, 2, 4, 1, 3, 3, 3, 2, 2, 3, 3, 2, 3, 2, 3, 2, 2, 1, 1, 1, 3, 2, 2, 1, 1, 2, 2, 2, 3, 2, 3, 2, 3, 2, 2, 1, 1, 2, 3, 2, 3, 2, 2, 2, 2, 3, 3, 2, 2, 1, 1, 1, 4, 2, 1, 1, 1, 2, 3, 2, 2, 3, 1, 1, 1, 2, 3, 2, 3, 2, 2, 1, 1, 1, 2, 1, 1, 2, 3, 2, 1, 1, 1, 2, 3, 1, 4, 3, 3, 1, 3, 2, 1, 3, 2, 1, 3, 1, 2, 3, 2, 2, 2, 4, 1, 1, 1, 2, 5, 1, 1, 1, 1, 2, 3, 1, 3, 1, 2, 3, 2, 2, 2, 2, 3, 1, 2, 3, 3, 1, 3, 3, 1, 4, 3, 4, 1, 3, 3, 2, 3, 3, 3, 2, 4, 1, 3, 2, 2, 1, 1, 2, 3, 2, 3, 2, 2, 1, 1, 1, 2, 1, 1, 2, 4, 1, 4, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 4, 1, 2, 1, 1, 2, 3, 2, 2, 3, 3, 2, 2, 2, 3, 2, 2, 4, 2, 3, 2, 10, 1, 2, 3, 3, 1, 4, 1, 1, 1, 4, 2, 2, 2, 6, 1, 4, 3, 1, 3, 2, 2, 12, 2, 2, 2, 3, 1, 7, 2, 1, 4, 2, 1, 2, 3, 2, 2, 3, 7, 11, 3, 1, 3, 2, 3, 11, 2, 2, 2, 6, 1, 4, 2, 2, 3, 2, 2, 3, 2, 4, 2, 1, 6, 11, 7, 2, 3, 2, 3, 3, 1, 1, 2, 1, 4, 2, 3, 2, 1, 1, 1, 2, 4, 1, 3, 3, 2, 3, 2, 2, 3, 1, 2, 2, 3, 7, 2, 1, 6, 5, 3, 4, 2, 1, 3, 2, 3, 5, 1, 2, 4, 2, 2, 6, 1, 5, 2, 1, 3, 2, 3, 3, 1, 3, 3, 1, 3, 2, 1, 5, 3, 4, 7, 3, 2, 7, 4, 3, 2, 2, 2, 3, 3, 1, 4, 2, 3, 2, 1, 4, 2, 1, 1, 1, 4, 1, 2, 3, 3, 2, 4, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 1, 1, 2, 2, 2, 1, 2, 1, 1, 3, 2, 4, 1, 3, 2, 2, 1, 1, 2, 3, 2, 1, 4, 3, 2, 2, 1, 1, 2, 3, 1, 2, 1, 1, 2, 1, 4, 3, 2, 2, 1, 1, 2, 2, 2, 2, 3, 3, 2, 3, 2, 2, 1, 1, 2, 3, 2, 3, 1, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 3, 2, 2, 4, 2, 2, 2, 3, 2, 3, 2, 2, 2, 3, 2, 3, 3, 2, 3, 3, 2, 2, 3, 2, 2, 4, 1, 3, 2, 3, 1, +4, 2, 2, 3, 3, 2, 3, 1, 3, 2, 4, 1, 3, 1, 4, 1, 1, 1, 1, 3, 2, 3, 3, 2, 3, 2, 3, 2, 4, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 1, 3, 2, 2, 1, 1, 1, 2, 4, 1, 4, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 2, 2, 3, 2, 1, 1, 1, 2, 3, 2, 3, 2, 3, 2, 1, 1, 1, 2, 2, 3, 2, 2, 3, 1, 2, 4, 1, 2, 3, 2, 2, 1, 1, 2, 2, 3, 1, 2, 1, 1, 3, 1, 2, 3, 1, 3, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 2, 1, 1, 3, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 2, 3, 1, 4, 1, 3, 2, 3, 2, 3, 2, 2, 2, 2, 3, 2, 2, 1, 1, 1, 2, 3, 2, 2, 1, 1, 2, 3, 2, 1, 1, 1, 2, 2, 2, 2, 3, 2, 2, 3, 1, 3, 2, 3, 2, 3, 2, 3, 2, 1, 1, 1, 2, 3, 2, 2, 2, 3, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 3, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 1, 3, 2, 2, 2, 3, 2, 3, 1, 2, 3, 2, 1, 1, 1, 3, 2, 2, 2, 3, 2, 3, 2, 2, 3, 1, 3, 4, 6, 3, 2, 2, 3, 2, 2, 2, 3, 2, 2, 2, 2, 2, 3, 1, 2, 3, 2, 2, 2, 3, 2, 2, 3, 2, 2, 3, 2, 2, 3, 2, 2, 3, 2, 3, 2, 2, 2, 2, 1, 1, 1, 3, 3, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 3, 3, 2, 2, 4, 2, 2, 3, 7, 3, 7, 3, 2, 2, 3, 2, 3, 2, 2, 6, 1, 3, 3, 2, 3, 2, 3, 2, 4, 2, 2, 3, 3, 1, 3, 3, 2, 2, 3, 2, 2, 3, 2, 3, 2, 2, 3, 2, 2, 3, 3, 2, 2, +3, 3, 2, 2, 3, 2, 3, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 3, 3, 2, 2, 3, 2, 2, 3, 2, 2, 3, 2, 2, 2, 3, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 3, 2, 2, 3, 2, 2, 3, 1, 2, 3, 2, 2, 2, 4, 1, 3, 2, 2, 2, 3, 2, 1, 1, 1, 2, 3, 2, 2, 2, 3, 2, 2, 2, 3, 1, 3, 3, 2, 1, 3, 2, 4, 1, 4, 1, 3, 2, 3, 2, 2, 3, 2, 2, 2, 3, 3, 2, 1, 3, 3, 2, 3, 2, 3, 2, 2, 3, 2, 3, 4, 1, 3, 3, 2, 3, 2, 2, 3, 3, 7, 3, 4, 1, 3, 2, 3, 2, 2, 3, 2, 3, 3, 4, 6, 5, 5, 4, 3, 1, 3, 2, 3, 2, 2, 3, 3, 2, 3, 2, 3, 2, 3, 2, 2, 3, 2, 3, 5, 6, 3, 3, 2, 2, 3, 2, 2, 3, 7, 4, 6, 8, 2, 16, 2, 7, 3, 7, 2, 6, 3, 6, 3, 6, 3, 12, 3, 3, 2, 2, 2, 3, 2, 2, 3, 8, 6, 6, 7, 8, 3, 16, 3, 6, 1, 8, 3, 3, 2, 7, 2, 3, 7, 4, 3, 1, 1, 4, 2, 5, 4, 6, 4, 3}; +static const rle_sample_t poehali = { .sample_rate = 8000, .root_frequency = 485, .length = 2976, .mode = MIX_MODE_ADD, .rle_data = poehali2_rle_data }; + +extern "C" const melody_item_t POMF_TUNE[] = { + {DUTY_SET, 0, 13}, + {FREQ_SET, 0, 277}, + {DUTY_SET, 1, 2}, + {DUTY_SET, 2, 7}, + {DUTY_SET, 3, 8}, + {DELAY, 0, 197}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 554}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 554}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 554}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 554}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 104}, + /* HOOK */ + {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_START}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 215}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 93}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 554}, + {DELAY, 0, 208}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 83}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 79}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 128}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 69}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 31}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 204}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 104}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 554}, + {DELAY, 0, 208}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 76}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 83}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 76}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 76}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 131}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 76}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 76}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 83}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 69}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 31}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 69}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 138}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 65}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 83}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 76}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 69}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 138}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 65}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 184}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 830}, + {DELAY, 0, 218}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 90}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 207}, + {FREQ_SET, 1, 988}, + {DELAY, 0, 208}, + {FREQ_SET, 2, 370}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 311}, + {DELAY, 0, 104}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 370}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 163}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 207}, + {DELAY, 0, 208}, + {FREQ_SET, 2, 370}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 311}, + {DELAY, 0, 104}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 370}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 163}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 97}, + /* HOOKEND */ + {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_END}, + {DELAY, 0, 10}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 215}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 93}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 554}, + {DELAY, 0, 208}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 83}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 79}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 128}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 69}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 31}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 204}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 104}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 554}, + {DELAY, 0, 208}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 76}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 83}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 76}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 76}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 131}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 76}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 76}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 83}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 69}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 31}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 69}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 138}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 65}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 83}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 76}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 69}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 138}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 65}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 184}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 830}, + {DELAY, 0, 218}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 90}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 207}, + {FREQ_SET, 1, 988}, + {DELAY, 0, 208}, + {FREQ_SET, 2, 370}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 311}, + {DELAY, 0, 104}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 370}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 163}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 207}, + {DELAY, 0, 208}, + {FREQ_SET, 2, 370}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 311}, + {DELAY, 0, 104}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 370}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 163}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 880}, + {DELAY, 0, 274}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {DELAY, 0, 208}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 100}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 370}, + {DELAY, 0, 65}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 142}, + {FREQ_SET, 1, 1480}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 277}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 370}, + {DELAY, 0, 208}, + {FREQ_SET, 1, 1480}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1480}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 370}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1480}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1480}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 370}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 184}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 204}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 104}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 1108}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 329}, + {DELAY, 0, 104}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 48}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 329}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 163}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 208}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 329}, + {DELAY, 0, 104}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 329}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 163}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 880}, + {DELAY, 0, 274}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {DELAY, 0, 208}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 100}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 370}, + {DELAY, 0, 65}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 142}, + {FREQ_SET, 1, 1480}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 277}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 370}, + {DELAY, 0, 208}, + {FREQ_SET, 1, 1480}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1480}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 370}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1480}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1480}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 370}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 184}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 204}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 104}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 100}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 329}, + {DELAY, 0, 256}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 52}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 329}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 207}, + {FREQ_SET, 1, 988}, + {DELAY, 0, 111}, + /* SAMPLE=poehali */ + {SAMPLE_LOAD, 5, (int) &poehali}, + {DELAY, 0, 197}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 311}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 415}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 311}, + {DELAY, 0, 309}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 427}, + {FREQ_SET, 5, 494}, + {DELAY, 0, 1354}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 104}, + /* LOOP */ + {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_LOOP}, + /* SAMPLE=kick */ + {SAMPLE_LOAD, 5, (int) &kick}, + {DUTY_SET, 0, 11}, + {FREQ_SET, 1, 1108}, + {DUTY_SET, 1, 5}, + {DUTY_SET, 2, 12}, + {DUTY_SET, 3, 8}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 10}, + {FREQ_SET, 0, 277}, + {DELAY, 0, 59}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 131}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 13}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 69}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 4, 2489}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 128}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 31}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 38}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 159}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 131}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 1108}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 31}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 138}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 48}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 1108}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 79}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 830}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 163}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 10}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 207}, + {FREQ_SET, 1, 988}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 173}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 65}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 207}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 104}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 65}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 38}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 163}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 6}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 52}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 4, 2489}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 128}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 31}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 38}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 159}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 131}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 1108}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 31}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 138}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1108}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 124}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 1108}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 79}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 554}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 1, 830}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 159}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 69}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 10}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 207}, + {FREQ_SET, 1, 988}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 159}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 24}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 65}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 207}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 104}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 65}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 52}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 880}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 104}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 370}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1480}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 1318}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 104}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 370}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1480}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1480}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 370}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1480}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1480}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 370}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 159}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 52}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 1108}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 329}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 48}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 329}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 65}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 104}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 329}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 329}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 65}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 880}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 173}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 370}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1480}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 173}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 370}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1480}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 52}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1480}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 370}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1480}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 185}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 52}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 121}, + {FREQ_SET, 1, 1480}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 370}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 79}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 1244}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 159}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 92}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 1318}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 52}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 1244}, + {DELAY, 0, 86}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 17}, + {FREQ_SET, 1, 1108}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 59}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 329}, + {FREQ_SET, 4, 2489}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 62}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 48}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 10}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 6}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 72}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 329}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 4, 2489}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 76}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 86}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 13}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 41}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 107}, + {FREQ_SET, 0, 207}, + {FREQ_SET, 1, 988}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 201}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 104}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 311}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 104}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 6}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 20}, + {FREQ_SET, 0, 415}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 79}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 104}, + {DELAY, 0, 45}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 55}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 2, 415}, + {DELAY, 0, 59}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 45}, + {FREQ_SET, 0, 311}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 6}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 38}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 65}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 2, 415}, + {FREQ_SET, 3, 104}, + {DELAY, 0, 10}, + {FREQ_SET, 5, 740}, + {DELAY, 0, 34}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 24}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 31}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 114}, + {FREQ_SET, 3, 0}, +}; diff --git a/src/sound/sequencer.cpp b/src/sound/sequencer.cpp index 77e41f0..2aaa039 100644 --- a/src/sound/sequencer.cpp +++ b/src/sound/sequencer.cpp @@ -41,6 +41,7 @@ static void serMidiTask(void * pvParameters) { ESP_LOGV(LOG_TAG, "MIDI recv"); seq->midi_task(); } + taskYIELD(); } } From 35b7b048950460cb3553a6adb25954f70153a8e3 Mon Sep 17 00:00:00 2001 From: akasaka Date: Mon, 30 Sep 2024 18:59:29 +0900 Subject: [PATCH 02/21] Fix most old tunes being out of tune; try fix the occasional hang on boot --- data/music/001_caramelldansen.pomf | Bin 746 -> 746 bytes data/music/002_duvet.pomf | Bin 541 -> 541 bytes data/music/003_haruhi_no_omoi.pomf | Bin 286 -> 286 bytes data/music/004_hishoku.pomf | Bin 466 -> 466 bytes data/music/005_like_the_wind.pomf | Bin 681 -> 686 bytes data/music/006_waiting_freqs.pomf | Bin 381 -> 391 bytes data/music/007_the_way.pomf | Bin 1036 -> 1031 bytes data/music/008_guitar_hero.pomf | Bin 3146 -> 3146 bytes data/music/009_shabon.pomf | Bin 2256 -> 1546 bytes data/music/010_steiner.pomf | Bin 1461 -> 1466 bytes data/music/011_towa.pomf | Bin 2586 -> 2596 bytes data/music/012_mermaid_girl.pomf | Bin 1466 -> 1466 bytes data/music/013_eye_opener.pomf | Bin 1591 -> 2386 bytes data/music/014_truth.pomf | Bin 1051 -> 1051 bytes data/music/015_wpip.pomf | Bin 606 -> 616 bytes data/music/016_am_arise.pomf | Bin 561 -> 561 bytes data/music/017_bouken.pomf | Bin 1116 -> 1121 bytes data/music/018_gentle_jena.pomf | Bin 2116 -> 2161 bytes data/music/019_gammapolisz.pomf | Bin 1276 -> 1276 bytes data/music/021_skibidi.pomf | Bin 3891 -> 3901 bytes data/music/024_in_the_80s.pomf | Bin 1571 -> 1561 bytes helper/chimes/arise.mid | Bin 701 -> 697 bytes helper/chimes/ark.mid | Bin 1772 -> 1827 bytes helper/chimes/bouken.mid | Bin 893 -> 901 bytes helper/chimes/caramelldansen.mid | Bin 680 -> 680 bytes helper/chimes/duvet.mid | Bin 499 -> 499 bytes helper/chimes/eye_opener.mid | Bin 1365 -> 1365 bytes helper/chimes/gammapolisz.mid | Bin 758 -> 777 bytes helper/chimes/gentlejena.mid | Bin 901 -> 912 bytes helper/chimes/gtrhero.mid | Bin 1473 -> 1473 bytes helper/chimes/haruhi_no_omoi.mid | Bin 363 -> 363 bytes helper/chimes/inthe80s.mid | Bin 1081 -> 1081 bytes helper/chimes/kamippoina.mid | Bin 8326 -> 8369 bytes helper/chimes/like_the_wind.mid | Bin 473 -> 484 bytes helper/chimes/resublimity.mid | Bin 6135 -> 6155 bytes helper/chimes/shakeit.mid | Bin 10507 -> 10523 bytes helper/chimes/skibidi_toilet.mid | Bin 1703 -> 1743 bytes helper/chimes/steiner.mid | Bin 1306 -> 1306 bytes helper/chimes/syabon.mid | Bin 1232 -> 1240 bytes helper/chimes/the_way.mid | Bin 701 -> 709 bytes helper/chimes/towa.mid | Bin 1564 -> 1585 bytes helper/chimes/truth.mid | Bin 519 -> 519 bytes helper/chimes/waiting_freqs.mid | Bin 332 -> 332 bytes helper/chimes/when_present_is_past.mid | Bin 464 -> 464 bytes include/sound/yukkuri.h | 2 + src/main.cpp | 12 +- src/music/001_caramelldansen.cpp | 114 +++--- src/music/002_duvet.cpp | 42 +-- src/music/003_haruhi_no_omoi.cpp | 30 +- src/music/004_hishoku.cpp | 56 +-- src/music/005_like_the_wind.cpp | 62 ++-- src/music/006_waiting_freqs.cpp | 28 +- src/music/007_the_way.cpp | 153 ++++---- src/music/008_guitar_hero.cpp | 288 +++++++-------- src/music/009_shabon.cpp | 479 +++++++++---------------- src/music/010_steiner.cpp | 264 +++++++------- src/music/011_towa.cpp | 430 +++++++++++----------- src/music/012_mermaid_girl.cpp | 142 ++++---- src/music/013_eye_opener.cpp | 443 +++++++++++++++-------- src/music/014_truth.cpp | 92 ++--- src/music/015_wpip.cpp | 52 +-- src/music/016_am_arise.cpp | 94 ++--- src/music/017_bouken.cpp | 219 +++++------ src/music/018_gentle_jena.cpp | 241 +++++++------ src/music/019_gammapolisz.cpp | 131 +++---- src/music/021_skibidi.cpp | 442 ++++++++++++----------- src/music/024_in_the_80s.cpp | 208 ++++++----- src/sound/generators.cpp | 4 +- src/sound/yukkuri.cpp | 8 +- 69 files changed, 2039 insertions(+), 1997 deletions(-) diff --git a/data/music/001_caramelldansen.pomf b/data/music/001_caramelldansen.pomf index aea34e7750f55b9b06469260bce6642a0acc4a22..c49f89dcff453f84f8e8a2ddeb5c39acc4361220 100644 GIT binary patch literal 746 zcmWIW&rM@wbWSWv%uUV7NlDBrPR(P$0EFZ*G@uETl=`{mFflNIFoPHi0|V1mkcxFc z3}HQBgRvCgtWs8(7(yLL7eog_T{Bz^p#vd{O$;IX0B#$?lxcAHA#6jaL+C}AJQ?l+ z1Ph_A1TKrvfsn;!GC~%i17XUb3%_hepbvF9U@?OTH4k=}7{ZqbA0c8DA%^fdHd%xz b2o_ie*aZkv;4VnbPg8KscT;fncT)fWMYUJ@ literal 746 zcmWIW&rM@wbWSWv%uUV7NlDBrPR(P$0EFZ*G@uETl=`{mFflNIFhc<|0|V1mkP1~s z80$DIjHL!=O=E$HA=H6%LG&Wj-GPfCbRcB0i6LYW_99HV4R;^HHiSBaUWCct;4VP0 z5b6%YWf3|Mve-;U$RczgOc`|Hmko?Yh6il0m_dY^JX{RnON5UQv5F8w_#B%o!W0Ax ZtOM)ae?0C1cir~m)} literal 541 zcmWIW&rM@wbSW)MEn&b7obnwNbQK7x!mYog)X#N3BLf2nGX;Ru@iPNi_DoPMOs*it zE+Cgl2B-uKm{dU&H!d+Wy=dxIflLP5fo9$ivjY(ZX#Twf3Q07-VG~0O7qEHYFaU>; eHz;(?*}&lqWIbVFU`WkRQ*h09Q*iZnQvd*)_Z)Ko diff --git a/data/music/003_haruhi_no_omoi.pomf b/data/music/003_haruhi_no_omoi.pomf index 3325befc698696a156861c86fb8bf56126cdb5a9..91069423358175230f945c1f196ccd1570ed1417 100644 GIT binary patch literal 286 zcmWIW&rM@w^hhi!&B#>9%U8(H&Cg`O0N(kOF*m;MxZHRbzm046tEp= irhs*T#lWWgWe4g70jA%)3=FCHX$r3SZVImcZVCVnmMGZ( delta 126 zcmbQoG>>UQvHT@Q1_q{;ObiSRc|d|Gm=(zK2C=|mOD4XNn7EJ27tGlOSHRB+Q9~ab%15TVqhImQzkPq$^rla;1MnW diff --git a/data/music/004_hishoku.pomf b/data/music/004_hishoku.pomf index c8b2c6534ccb059cc258018652d9073281a110ea..b460390b29d32f90d857a53465554b28006f81dd 100644 GIT binary patch literal 466 zcmWIW&rM@w^vEpE$j>fS$jes<&M!)2KnLE5<%ubY3ciWCnF_iJgjA#JW?(2O^>Ynj zWMBYchCC()2BvEuMU&yICm_}ukSu~_#|%>k7Ha}30RyH;pajDmkStio5;zN?7i2w9Mh Q)ciCB*L*hxSARDJ0IGOF(EtDd literal 466 zcmWIW&rM@w^vEpE$j>fS$jes<&M!)2KnLE5<%ubY3ciWCnF_iJgjA#JW?(2O^>Ynj zWMBYc1~C=}2BvEuMImt39S~~`NEX2=VTGv!i#0KUv;YB9Br}k#WrOLEhqDlR!FGVv zfpvgQUINqxu@@|hFb^z?(^X)Xf=vdq?BJ$=Szx^gI}ox6w;;rb&;hms>?1VSBSHi0 VbA&8NM{0hWf@{8;f~&uq0swQTI}-o^ diff --git a/data/music/005_like_the_wind.pomf b/data/music/005_like_the_wind.pomf index 3be3cc4036f153c8a61fa76a2ed17ad1a7c9a0ed..6b52c9c8931de82b2d26996c40d8f4dab1717fb5 100644 GIT binary patch literal 686 zcmWIW&rM@w^vTRlRS3yQRS3__OHt4W@%0VXWIzI_^3fobzWK!^3ci)aC83v9m|+Ps0|V1>m=u#7h=o(knh~myX%dK$ z2Q&a(FHSKuy_bMS5u?`*}fr05bOo~Yk#KI|N%?MS diff --git a/data/music/006_waiting_freqs.pomf b/data/music/006_waiting_freqs.pomf index 493648d200ce7f73e3185ac0858a087f40412256..c989de1d03806e6dd19d5c153584897062614ffd 100644 GIT binary patch literal 391 zcmWIW&rM@w3{T7~$;?Yva4SkJEM~w2ewpbRB|(WPnfVI33WOA6YG)`Z^>gK9WMBYc zCJvB-X)Hk2PiClECQ%S01SG}`mIm^ew1J8l?f{iA@q$<&z$6JG3qWGVa4|uU*b^q8 zm>OIRXc7a%WRMsOTuceBZX4VVYmnGGpc1D4a51nt0gxR9U}JzPm=JcDbAz-10TU01 o1p7l2Zif~~4D1hto6X_sKEdtS#m2ypnxCfNn(wCI>hGoi08I%bLI3~& literal 381 zcmWIW&rM@w3{T7~$;?Yva4SkJEM~w2ewpbRB|(WPnfVI33WOA6YG)`Z^>h6X6bE4@ z4v>Pkj6l{;W)Kqym_$M3C6E|1SQ;dz4dgP+2Z`~5SRlY82_g$YV#aVWL6Dd^NK6eR zCJJJ)z-5)-vfJP$TZ6>T12NNoxENTSCrEDr3rHFWm=GqLb3=p}n0P=8ub;@6hyz*kPtyZks<}fRuo9NLON4L21Q6|LBftL5!r>2NRb0@GY*i_1w{^! zBj6drT3YRjo|P<(-p(KYo%!rD4T43M==ar^_)eUEWYybhofrC9Uo$&Gs%;$YLlJy3 zQ6g%6aj8eBU$Bi~1E`nAZ2L;E()fB%i%!Fq5C2ddgGL>?4Ws(LyC||J*v7aWLDiV0 zVv3lQA#d@wALQYvcB@z8WgUo$*o8XR#U!F^`2Y&&xPV z9~FHTW1Uu>m$_zL%$4Wzc^P_8?Je`jsMsVGYi9>!oFJoWS)1pby{SB_1M6*UW7!u; Nid09%R7bO^J^|pEXMX?y literal 1036 zcmdszJx&8L5QV*7Ap8{+DJUp>fj!1XDNuq?q_l~YghUEjibWy?SKt&hIYLgr1t=+K z={N#2Ux-&Sw$fv1SI?i{Jk88a|9+NbgZb1A$19UMy~W+Uz8y~%l`Gsnb0nmG?3FLM zG5VQT`Ps?NW!tJg4umZ|J6Ba7{`I{nd+@$vRo#}b(aA5gpP8tQT(|1$bf;jKYFkq$ z!g4L-YOnNxDC46plszBG>$`^Pu}y2&-p2@xRZB0NTnn~lLcf(V5&b3EllP(U1&oHs zV{7Ck8MXLO_yWdGgS;e*)y7yXFXl@!-Ggmj$%CQTB#O1O0~i%BRKuFQWbMDo3w999 T#x_Q0#!Rc3E31wx`yKZKIx2LK diff --git a/data/music/008_guitar_hero.pomf b/data/music/008_guitar_hero.pomf index 455d48efb0b202cb5a80714b697fd94240dc2011..b4e5ce64e884c8f81b2116479d3619e380ba687c 100644 GIT binary patch literal 3146 zcmd^BJ5Iwu6kKok=Mr0`;|f$bNdrj%R5UJ}2noxQiAzqwArJ)>MU)#*aDcImyc{R@rek_ZmZgO`HGhq$ zs!Ynu_@k|q`>D>pQhNAJ(Dq5G>7kFk9QoMn*vG)Tu_7&KGAS1F@xYg2yj{~{wliPq z`q#AHChEa*{mUWgvXidwQ5 ztp8ZthS#;0cH8INp563ywAxAa+YiPP|6I|OesFhBRzbV-AFkz{nBc8@B?=1cUp$c? z^wt>8u~&PQc>r6u{9auKcq?Xvtz4*_IX5suZ1l)^?qaOZ&%o;PP-GDe7|Tjvm~YkR NG#{Bb@0xhfHDAUQr`iAj literal 3146 zcmd^ByH3L}6m?umk=R-B#DLUa=tSC1v;%bNk|C{-2$4cE@;69`fr+i(z$dWt8`!50 zl$%pE$WezjQY-7^_}t@rZ)}f8$t(y4#X}xtW*BFwV$V%l%%ewhWd>1_#F^=uT{Frm zd2t(loh#*j>h44-Jzf)Z+l^jMtJttp#kyxz47`aIX+e`ov5>h9ENw8}vFWk2v%J*J zU(RyS00{a(F_=Dab zhI{O5c^$x>oWBp}0B^;LaFh#`#b$;$=;8UIe8B)#mxm&YXuy~&fnmMnJjdzGglXS| HqrUkC^eUB` diff --git a/data/music/009_shabon.pomf b/data/music/009_shabon.pomf index 29864c46a005d3485d619ebf47daaf8e328926d0..11688b4b5d23de981cbccb7e7f69d6b74eaae6fe 100644 GIT binary patch literal 1546 zcmd6mO-jR16op?}|5513@f$hIGE$t_3a%iEB^}rZ+JT6=0cS$?;1Zm<5C?9-sfd{O zg}h@fRS_H*D4g8;&bjBFm+p^GCP{KoN5%9a_oIB4pA}P|`kxqGsq^_L zyIpoJ{M>2Zx!!v?uv5P_s9LJgO}9pu8eJIM@f_$X36%P2RQ^Vpxo=S!2Y0=8#vr<9 znjCOW4)BNPr!IqJCFY!ZEkADmF6x=l1!PaG*p92S2cav>Q*r|)l63ZBtKk{Bu))tOWhHO zeNBz5?!)cD0HFthVY-Ha-s@(2`;S{Sx(<3Ey5X()Hug4Jl&-hvAtIei*V?XX&nunU R%c^t7<-}*@&}ZYJ{{TPHscZlM literal 2256 zcmds3J5Iwu5M4X`1eb6fDOaF#M3o@O1q>o`3SuOnNP##41rm4Q1RQ}w&>&G!(j&y~ z8|;@Ije~^{1(p&`-p;&v^Rb=%@#!>44$I=Gn!DC(uQ)Deiy|8p^WwamWrOUyh?wf) za+DuzITt?eC3PNxP3H; z>+!ejIy!{WV!cnP0+z}{ zuS^y4K+sKCtR-un`rcLud_>PZsyr<9eX0=ZaX&LbygIhwv%v*cAgCfPSC)~9GioG+ z1$eSW|AE+W3k_nWU(b8|Q$G~ayv%`*Zm^oBsn~0BRY5hdyS^jpp+@QKl_%`j{7C~L zYMU-CB~6Z|;#Wh^cgwZMf{Qa~+8Y8i6u@F-B3X-yq=;)ke6=bd@DZgl3oV@i#|%rp zpINQhok_!pX`C}3RbD)bMHRZW?7$@7-NM9roHq+r2v#6RFyD%O!a{YKbg0E|wL0kP zq4l5!eW_AO=*(VOU1~vAM+BDWX#@*c zn0rQ_u}}wsZo(2RnII41qCk-2^gf=dj!1o93WR#xOyr2uaf>SPZfKzg2w0@$!798o z<3@(C10Fvc|3Iw72oFNxU;7{a;j`|`J;>1wRiiwWdfi+sxCZty&KEx1NTYhy3HxsO z%mX1xlTNK9yE&dpUkO3qVKG&-L8C^SFrd17BN{Z5_=bm*STPI}bMPO{xB-R^Xo?N*iyo~>qM zYqPPpx0cSO-`Ng)-v2+!R%+LiNn(G=WhqI@8>W6Nq`pZD<&PM4v$>*tnwuntW{1=+ zu$Mx*GwI$UgCPkc3fN+05ap?mu1uP-9B7dgg>0{Rc%D${Kk1`Cp4W6Xkyj5_R$$;@ zeQXFr+slo;9UM5{>aZQ!=iwYT`PZDYK{i-}U6@27vcqHtr)V`9H&wJ?>;~D86lK(G zss&y`ea4WcdTZ_cJo2Y~sCp!~O|GLSs|7n(pT}%Z!PL1TQ@uJmFvi?`mm(N*B;JE* z?I~An+r^r)k%KcREN1t$mK^jks;@j^kz-n6${{QkC5FkD$seYonmOX%&~KDnRgO;Y5G;*Qncn+11b#qQ5=gt#)G1c^kf z{JZsztTOGpW^^ggv}=Ln@*o>gQ~`Nit9Zn+xdvS}qJYsGl18RlM2K2D`ln;};5c@CU|w z3yhJ0F?cZg_|$HM98)$kvW0kdk~xzSQBVZJf`IKNDq`uKH2&0yLHqL{YXX{EJJ JJ*}I+qE#v?I literal 2586 zcmd6pJud`N6o&8aB0-^3DW+0LL@65GY6uD~$;$4EU^ikX5`KVAqm^isT8%_aqfz?} zTCF+HWaqWV#V8~uu}IfA=qEotb|bAGWA&@U755{{fuGvY}(W8C(IYpcxIeq zokChR>E0rPAqgW2*j?eVSnEfbFlov-&>|@cY;TzxPoC*NspEAx%c+1AjDqZ{-NWc4!|4Ic`Qm$Qb%;bPZoRsmKnK9X&;>$$&9w*L!vYHY7zU z%SM&3(HEpit5Q?FwQ_zR`O7-skoNnE$R(Da!&HYVS7fqRMTgcgH{az!j3`fr*;Adi z9glGknaPMZX7{}o4k{|^E00*@m{yoLgvFx7F!{1CR8ABmY2{m@Lor`4`MO!sEA58c zShUWAc+LY%b-3)gL8$HAez}$BOj6{T;%3!8n*}#v&2G*7;BZmU5+sN?usU>(oDwMC z6{D+wVq6K3%L6u|CMKHVjJxC9*pl2>}WO^Z!0iH2FBpQsN+k!5*%YT wF4&02@^da7_Q+T>+x%-J)<4cK2ZH?grXgo{T`r1Xv}SKmfPj@+b%cY;FdJ!DLidVG9?q*Z_nd*v)9}Lkm;1P!q!v z3)o^N1dBSbUNqaV#r{C0I&kbGQWKibvH21$tkBXQHh*9f8%=c#4A{~YSPU&!U{eQ9 z#YCvndPmIbR@0uloO+CT)<)j5Po1cqqz?)OwmH^ z0g*A|0ZaqvDF>_<%{FYYKTxR-9Q%mWgywV7(;qf}U=tfnbqoyH(iK6|Ie{#M>=R&tlA52U;F|BI;Og(D007C0U^xH) diff --git a/data/music/013_eye_opener.pomf b/data/music/013_eye_opener.pomf index 30f82d814a34db6d86bfa8499a6d317203f818bf..930d8d3d0f055ff881017bf9d30c0b480b6337b3 100644 GIT binary patch literal 2386 zcmWIW&rM@wbgfKP@GnTsOD$r+3S7JtoQg7wvlY}7LW(jgDk>Fp6$t4;HmIc3&-Dri z0|N*%++ks0V3Gw%=P?0UlR>OfR+!i>xR?SPOiX|ohdO6Qpk7uW!L$x!3J5T51d(WB zAY}}-aP#co<`H2B*nMc~K7$Oz<_|P6u=~yf)uOv^3CIN-K&}G2B>`j}*q2}yI1Ion za0ns9z&a4>%t1Z}i=o*|oiGKP400pH4se))#RfDa(Okt1N-tnBw6Fq)8qUx~=nw=N zzyOY4L>dC87co#e4FmZf1em~Ll&GUbFR^X`#|)Z3z-a@`AC#!0L@%*!@n8prI1&D! zL>(o1vH1g=dEj!52!BwbjuO4t{DI9pdZb-?*g=o9OAkA+r8R7ENr^g2^b+e9Y-tUf cUP{zaqL&D_90t}OsrhLNuK8{XuKsQc0H*k#kpKVy literal 1591 zcmc&zK}rKb5S*PDFCHWpZ<0CX<|ow6LBaJPp1o`!h$gHFB<~318KO7!>Nos_AF#U? zrlpy5G9b7x%TV22Ra3ijT|JD7qFmOYn%0kXfiJ9ql>ikGXu{X}99tI%1a*8&GrGw~CnRJ1c1Rir!^yEjE`nh~`nojMvMAlZNfK)8vDHA5 z!2UH!E40q4rrxUX$fEV3*;KiW>@SpVQa8)^GEmA-?WR)MP$_fN9c`w5v2b6^ zwJRwz@vGKzr=F9VaG;%y{^Rb16D>P;-uE*0E8(Cf{XtE<;eOs5^!zm6enks@g##_i zg>ftw(L#T6F8By~Lyp|rp7=czzpdxMuW;a(<-$0YOYlCx2hG6u2b_3={NzpE94zDg lc7q&f**joaF^>H+axP@bw37X&mxpUTFAE!&iH+05z5t{ZL~Z~8 literal 1051 zcma)*F$%&!6hwEU2!gfs)dpFCb4n$59rvHOL}L+WOkTn5I3W&JYd>fh1HwsbTJn@8kp zx3*-WaoA0VzIN_7)WDH8|C4(O4qA2Zyz6BYcHpRn{-_3TblyVv-3!0al3#G-SLLEO zl?$}gAMPa|z21m}H#+Yfyiw0H;TKx+3y!oZ7saVudcOzxP#K^<;^2+^VkYkxZ9ggB j+3n>>tL8vur8xD^;9km9Y3aK?ed9${x}-{7lBMng_ya!C diff --git a/data/music/015_wpip.pomf b/data/music/015_wpip.pomf index 876928990c9ba239af13e03d313728a7b3d5025c..f05b3ee6f2352195762b72a6ed4de0731f4b0ccf 100644 GIT binary patch literal 616 zcmaiwO-lk{5XYY#Edo6Vbqz)$!Go8Mb`o46f?Oinz>|j+FTUh%AH!48xkF!~Z_p{i zQ=pKGp1LJ<>)`VrWmdd2un)7p`Om9Y@3b7pZwFoW20<8fBR&h+Yle~8Fu!u`a-rGj zpK|rGa>FJ5FJmLwy3yT*`{fve&*W0Z&@HVMbPh+@5uz~K!#jcQNm&EzF>Tp{G9Qe0 zEt@IJg1zoo_NMF@tN=DvCOWA%P&S0_-i}85%0xE@ixGv1%c2AA?P6D1g%_*v~e_NdW=@}04;ino}gVs zt3V-#o*=263-A92XWaF}+&O&bKj+?ag3f5@dEs>wOE8U+C{E=fkzkOdWRmC+Z2WynJI7bn?L=UAbFZ~jIW`kUhk zZ+_N(C&-k+-n6y?#(uf)7>s)1Y|L70kRlE zSb$tDAd9IH$YPiblJ$hk-eCrE-+{PQAjKdc03w(yK_o)<8Hif|QoIAC7|gW;ap!}$ zUqL2=07P#wh>4H|D@M2q%mrB~@ExcO;z*GD1Vlkbf!&O7j_V00T?_J5cO^d4b4!{`vN&c5F158A{>AwNE;5;es6}Q0e zjdtv~p`gXmj>hXZZ$8hyo~;*Ebsn~NZRaoAhhSnXO zYQ6@};j51E@1%C_^e8&@Qx)xH+}7_n=*)XFPhyxX0R}{#;oU~Vr5^a?BmPjxFp`!K zvM`n`24*e72v$(wEU!aBnmpkW%L|G$mJG+RghPV~$Ide_S`zf8ee8QrlOwMle8U5d zOFaxxEJ6q_AfItA!dSMz(o)1Yl9Ar+L1o!A`J4>He$Q xD^p1JXH|=d7pk7&rSLLPa}zJqjc+T-ZG7pT@)8PceKT~f4GZ6diEm~T{{tk0hA{vD literal 1116 zcmWIW&rM@wbjmNyPR&zrNiELEhmZ^?z$3FLF)v@iu`*FXSAmdX6rB)GNvWUfJ!S?5 z5EcYt28IG4$<)CJWZed_j)26(SYWJaaF!Y?1A{;~P!g;}pb5lE0x1Ro2n%GCz&a2Y zWQxEYxCD>^RRT5ztQV{Vt{ChLhz^hh1DZOxy$m1+K`ck8Lzp7Z2D2AzJlrCPHiSBm z2a#+8`5ehmkOKsQfCR)J)i4&slqE2(z+n&zEeya$!F33L6{9KP2iXSJ3vwjHP=pS1 znDGoDAVae?0AqHFlmGw# diff --git a/data/music/018_gentle_jena.pomf b/data/music/018_gentle_jena.pomf index faaa6511aa7f0b124c5f4cf0d4d43cff1f08c218..583b93968e508a6740183f6661c92c54a741678a 100644 GIT binary patch literal 2161 zcmZvdziU)M5Xaw51T8F{Xk#J16oQIrEDTr#5fVv)o|<%ua>XS%N$x^Cu?S*eAt-_p z3lR|u6%@q6LQ+}y2iOW)+SmwUAy_%z&xGB_BLlZ@cXod5%y;I_w^tTgtux*JaJgH} zbo-rRJ38B09ISM!`N87g`cm&$HMi93U+Y!vwcc=0ja4=E>hS7vr{5iR)_R?O)t;L_ zB74Id=O+K`EDHTvJH$C^MNwY%%^qhJcBkb>@$HZ=``sCLu7*oCA!IXc-y62!`_E<`%k-zzJwJbRrFcc@BDVmmvUXZcj=Z){_-P{malaCINd5k z#jK*@<>(&tTgaCE6Fy`))|{X%s|NbC)r5 zNV@_GVRrO>o=y2y&P&ROd3s-SD0DN%6>fnQ(4>?7)+%DwQO2lXj+tgc1XGP#^72O8 zEB8=s%n_~zK+FyGWu#b;f=qLW-Y>^}Q>!Xf$YV)j_ERf$V`RWn#-r`8`XoFVFly<3WfTSW!gYyZ^#Fc?c2%5)=m z$sKxH8vHrD^!UP_)__H>2k(%Rs2eeFmp|TtkIiInRQ8w_-+WHuLzW7g@&EVkV4<2E KOjVQZsp>yI{+Hqa literal 2116 zcmZvdyK7WY5XNsNz6y&Q)WSl%iwG*Fu~4uGA|ygYS4lcwY_UmJl3j@_79m(z2#TO! zAu4JS1O>6MP%8^TOItzz0ZSVTE9d)7_MFR-fjxW9yw04NZ|0tBF3pXMoN9Obi|uN< z-E9>c(V5nKZ>e3)_U3!n7dnTlnT1aGYNu*0cly0*ysDX32d*u)y6t{zxzp-a&6(MQ z^4Gs{cJk}iqR?-2#2F)-d>Pv!+1hAPluvzQw_Q?-W&3?8e`|MH+9EsZOGvlt{B5)I zc8Yh*RqS!H-7OxrcarUKS@hi^95ke|;)|V6W>ZoTncSBjwL|-thiW&Ip4>xm`Csj4 zrE)Lbw#Qj<(KhXdT)j`yf7;#kh0sjlW;3x18~3IBuHD;#w3zUO5n8#+dG=@^AfV!> z(uu`h7eKb?f8kmFP>EMw^i%C^=tv{prqJw%&Z-dw(4nv+S_$K{cB1gdPQ?q0{QMl` zgbR7J-Itz-J0dn2o}Opl=idqME1d#utf?OGC*FY@7CI7fd0O)0PVBc}%@(YN7Iw`R>_3z0YP1q)QhZ&OrSD;Bc_9s+*M^}Ii3Yr6_nNY^x zP-$^J)bT0+R0}t^y;?E^0vBYOIWZaN_*B}cAR|Z`rkqCmF(}|E+0pD*d{cWWQqGKr zl#St8%zHIn!&Y7(+o5-0OLGok0|-#$H|qxVK|y@Lf_s5V8j%JM+rHbzy9ZsV>|#Zd4X)&zvAuQTs7I7 JswSIL)qkOlqzM23 diff --git a/data/music/019_gammapolisz.pomf b/data/music/019_gammapolisz.pomf index 7246c13d3666833235e374666d0d365379e26e23..6701d0739a902c5e23be3aa4854db8751b02fc8f 100644 GIT binary patch literal 1276 zcmah|Jxc>Y5WU-|g(92?3RY(!Hd;aQ!HjG<(=)lL$8yim*dHW za5DUl*C`fQwU&w>cX=K@Up{Z3M;3#{8A0YGON7%Y-6&r*HX2!(py-FAp zXzZtr?I#I5Mg*~lmj(82c~jt3toIV$x@`3{oDmSqi9@jooC{NjOEnA7r7FqJG=beA zeM5dU0j05CX3pRY&!evh<{nuPY@8Nk{x!Qe zlBPUffGcLvisYTMb!nk1c^-m@eMMO~KI+XOEeDArSw8O#xEaNYk@~x*S9U7b(B8MS}*uF57yvsmY*bOffF?z}5og#CsTQC*_uHnS8tS0s_^NiIU*)~`1 rO<#kYwSp25L~KbMDhL=&WzgGaBXCjrOix;-eXE=g literal 1276 zcmaizziU)M5Xbi>#v&p<5foBAiMoRbu5IpkU>EzQgUt5OLrwyWg4l?ssPA-EMam8jZMM4U2K+!1l>VBd4xCF1t8_b1*rXaUz9m9RNK1~$RHSU3vR zRlq{E=_lI;JLP<~<(nXoG}SBS4pkCn(n4_6=Xgklu+oS?2c@h^C1`R)btTKaN5*F^dYN+>ff$f)j>+uuU*04Z$xv>QrhD~*A7LTc ziWUu5nO&}wMVua>6muhs)SLIAYWotw*AOJ^_kcy?6W%#!B|{=rzTOSo&a)!p-#y)N zZ_v|ISul^Y=Rd0S@b8HOvU3O$_RNogJ;H+--AEUPeJ4SRdkgcbQ<;h(!ZfjccH5jW z`^s9bJTzD3pB{ETo6Uk+2og5s`5_2Q7Bb{Lku!Lx_)TB=z(odKo9`{u&0ec+wp;Zd D;>};j diff --git a/data/music/021_skibidi.pomf b/data/music/021_skibidi.pomf index 97c9a42c7075a5fca77c3bcf8db6c63cb97e9004..c5792491469c3e540fc296b3c63ea81a97fa290b 100644 GIT binary patch literal 3901 zcmeHJv2GJV5IvuXgi@eGLexufrRa*LzuinugIljA!B1H0-^3S0B}r z+Wyuj)A_?J8`q~thbM>cC*g7UnQhkc%s;*!e!G)pczb;qe6aEEmI)8GZFq9qhCJH9 zC$I1WlY9wj*9=pXI-*~18Ttiwc=8EG>dqkH$)97q54#8nkLKvqwfVa4o&^|;5pNH% zI-^9OcvfcP+Ng8iHr;}bHVhi$;@re?WJ3@`dSg{x#u;L^oeKgA!!`qRfRlt^+!STAH$WizPgQjwT+86LAR% zQPB)V5984dQs088kp2RqxVGOxPl5GnuUN6ZotHDiqK5BEDOdKF@m#lYW;jPuB_x@N zGa={PflVKrC6;=_huH7u>vhmZzzs83J}GAxwU%Bn(Ez_#bn>V(z4~cj!)uB^5QsJs zV5_IDTn9>epnDVLEiMn#eb_;dtxS>|nq^?$Ma$3~uz=3qEcZqMNl{=I>|MPu&h4-I z1^`}*3J*8lu<2C^5A_$nYk40rlouiL+fXP5O~SA1G?6F7$vbbH%2G?H;2ucli9-tZ zYKK-(66NRuc1>HNhZ2ex!1bxc@)gwQb!xdHv)B~1(Lxo7$AU}iz>5pHq-euTS|tGd zJF(NPt>9J)vmtq4;lxb$30;~A50193*(Rr3%s3F?@gH#s2DLfYKJg9lzsew4xSTwt q#?JMpnrhq0<0m#h%K5zpldE=76kK8NKY7%qv*R$F?T6vPe)tZ`trN}w literal 3891 zcmeHJO=}cE5bd4StBj!c_8`QdFy8mDmyL*M2HayV8+HSON!G(Ef`7puF+UOB3F8p}zU(fv3+jrG| zHLdKkI-D(@I5)12_9usvl^w7c6hQWM(R!=;mHOV-@~qkghz8M)phws-2)3S{E2v5h_y6I z4HQpnHr7U6^zG7}(b0xsFwRd+EI!+i0WAoi@|+T~68gy`%g%uBHn4n|pb^x`m!Ghc z35<(9e3mxIqlN^4I=MxZQglOBazkzTIouN6!``Y;K#K|77}Nw28iNW&fyxSW7qmn9 zvI}T&Y`Tn}GzmbfCCIcDAe0)XRKpmm!5oiK!c%0*pabYAF+591II0a6GwchEOB+=} z3_uAPq>&@AXDF%Aly!)LcyfazloI37Eun(+G%&siQkX$u(X}{ROo1?Z9Yyw^6IUsgo(X6G_{hkbo+KzJHKsXJS)7Z zWJiDtmO8oBhPFJgXA|YIEsqAeU)WholjMfQ?qA_*fO)m^V-NH8x-9kplA^%Q+xy3u zJI$$m@|?~AaOYQexbaABod$yoo%WY_xFYA&82MdOs4#C=F0GtnLY#c*Ia69{2^H*t zbTM&A-d=U6h4R3N=o#$5`3+KwtzPYn^G0e}5i)Jv0M?p ze+htiFA%D!7*uoCUh#qWt1?IyR+FdH hxN~i4Q|)4l7wd_&PWR{kd#TOl2Yxi)@uS@x{~KkXLo5IQ diff --git a/data/music/024_in_the_80s.pomf b/data/music/024_in_the_80s.pomf index 51d99e9e4e136cd22326355abcc5b81eeba236cf..3875a0458a3dba95a93ec7489602eefa4ddbf307 100644 GIT binary patch literal 1561 zcmWIW&rM@wbWBc8EhtG$%1Kr5%u@)-NL8>fC}uza=fs?{%sd5;#G<0iVg+3VLh2DZ zA*_;8KiAo;3=AO5$O00}V`5+sWCJn;{D6ca50EefNjRJUDq&Iwv4EI?=@^g@0JF+L zERbR*5X-@X9Yvi#NEV18vLFUj@jDm`x5*$S=;nd!WzYgTQXm}209(mm#|&dV0ZGJw zwBdIyND0x-1uF(S7r)6MCE)NwcQYsq&>h(Y6oR-O6ygF&aPAVIX9TK&TmoJIDIwYm zV8viB;5QlUg%DtT3xM2*?vE{uKtZtkN(j3Tq=abq!4(UjvJ^mpgEb&fBL$)kE$JbW zC_HAs=~MyeGVF$eB*1PSP0zr9fQK4-Iv7pQ$R#1R5)L&LLy{CIaUrGCc|fiMNQ}uA Xn5}S2fRv=>rzyDRyD7N(yD0zwY@L`2 literal 1571 zcmeHFOHRW;4D}434M+?pz^qsy!Hx}5Bb16RAQj>Qp-Q1rNl_c%Hmu+VtT+G%V9gmg z1Ab1Gl+n;+jffP>_B_9N_PC$i4vmQhgY2$Iuf`eoa=yID_~>9p^>>nvA4WN!rqk(Y z#{1lauPaNhxId3y)`;+%Rmp9yi*b>d-Ayrv$aOwpH!P9eLnuGl1m;nU(@;H>X|A&) zG#)sFL+P9awR+J)*}LS*vM-!^q&TGyBaogrdM~{}B(zX2o;wrgcT&|1NDIxNEcq<7 zG%y3A1M@XwYQD%qQl(~$*j-fN){2DJ5;n8|Nb439tSu~O))tZ{EI-W&i*H diff --git a/helper/chimes/arise.mid b/helper/chimes/arise.mid index 461f3e50c81e4f9eede8daf737248aa0243bd6a2..4768ba5e5b9b5e1edd69f9e5b49cff0dffa24fcd 100644 GIT binary patch literal 697 zcmd5(!Ab&A6g}!#5rPCEtp;1T3o>yK2i#82jad)y=`!iVA1`35p=7=^C zuo?dgd5?#t2jo5{GYpe^((y=`vt<Kid^2Y7x2D7Pt_Cj z7Okf94T-gO)9U=@o0;>SZ)QBb)c|&o!9Et_X?)Ms0qjLSpRMe|p67~tpKq7;7(aVo zu({IYbv}Q(d$_5d%`|MjGI*OnMc|b zlMzgP^8g=6TiiA+AnkHC!#HVEDop~D)=dD9pr}YY)DE@H*-RTgK~cp-IggrLt+CJ$ sXb_ru;k?+U%p?9*ZPxwe30)w0LYJBUQ8eM7*$VI8X3)a#Z~vEzZ;N`vJOBUy diff --git a/helper/chimes/ark.mid b/helper/chimes/ark.mid index ac37e1a934572f8c637aa1deec7b3bcecc978d0a..686735691c9515da508d854f444c7852c70493de 100644 GIT binary patch delta 153 zcmaFEyO?i+sJ#)xe`W@T|AEYGyCWF>N3gIkNpLXyk7QzCm|yUpjm5*?-+Laze>Qdy z!`07);lDnEZ%9!#0|QeB!v-d%i8lY(fHX(Ngw58B?Tq3R7&bC7&10BopWRqs&%mIO z0OWI2Ox%2dsgY42iD45H)BJ)-h6z9hN5!Pg5iC)R+)EiYgG8D5ClqYn%4*IC0GhHb AX8-^I delta 97 zcmV-n0G|J&4(tt(6(=45{{sL3|4{=5yI27KSOf$D7zhCWSpon6gJAzJ08LbKYXATO zf00!F0eG`m0fzwzhn@hDKWl+-Ka-~eaI;|p76AuYpKy{fV0g2K1X=+Dov>iD>;*Rg D!X+Pp diff --git a/helper/chimes/bouken.mid b/helper/chimes/bouken.mid index e74ee41eb54413ce10c73a3747b30a0bfb439b4d..151b626a9b46be1549b15c0f4e63cfbf5f46ffb4 100644 GIT binary patch literal 901 zcmd6lp>6^}5Qcwf4^`7T%mtDXAUSe@)G?dmE}NhbO;D#QDo991RIM4&B5TSE@C@)i zeUl2hFxgUrI74td|Ni^$H?upNFJ1vOP{TdkZ2q?N)gAWFH_^}c>Sdoowb}!=^#;C- zI0Ixt888u=0EJKiSSc-HBc(xX#aX}zd8e*}hrB)&Hw~vW;h5$MDGS7zlo{f&(D>kS zJ~kP!Qk(L8we@?0B2wE}KwMm{471VPRr2h1E7wD21*50e_kQ z!~z#4D>f9@7`vUfZ{L11yQ}rXJ%CfRaDlK|KRw3k4BOk2?CW!Lx4njGt#iCN4Gt)j z1+Y*qfJ#{bUTcrsY3-1E4IXgH=(Kh6FzQPU%XG>T_GzKgx)ePuK&7!eLU3&2ntFDNj>>Q+}f|!kKWE=4p!cVxE2S=JMw`kbNB92HCIg H`#+0se;BxT diff --git a/helper/chimes/caramelldansen.mid b/helper/chimes/caramelldansen.mid index 73568b5d90a6668f5777e0f2d935493a85ac0d91..ad24e0ea3c83af31fa0ca97b0bfe6c84c2547b77 100644 GIT binary patch literal 680 zcmdT>I|_qP5F82Gr^pFJ1e;u7FCd~AKYapQ1kxD`OCfCv&yow8C65Wl^no;QnAzQV z`^lTL0tnz?iy?2ii?JQ%!^Xc~F$aF#pSu2bocC}+?|~^*8B<_NR1%;vRv9Y|OT)sj zU{t6^DiOdK)itM1Pgj+hV+NV1GKI|_qP5F82Gr^pFJ1e;u7MG#ReEJ8d$0$T*q84Jrm+7zB87c@&A6O8EtY2Gli zyYu$bv?m1+z{46t({^WL8%(>Ef4^V~{C$7y`rBdJ!Ueqt##H5+0%M|*0Hv|gSYcQg z=7u?=LN!u}0LG{;Idyuvs>~cS$Vio0td3P;z`cxxD&hBkO9y7t$yNPgzTvgA+9s=Q ivdXZsov}am<2FpjZa-Dl5DOhwH#j)(LizO*+=1fmKym7*1K9&K mKZRF)f*sIcJD|ZZ8s-4kl==o&2ZjkwDNPy;PLs76PXGYE2|Vfm delta 178 zcmey&{F!+|YrS%@&472;Y^ z#nvyvJMbvHiTO_xmrG;`7VKD!Xa1Rg&iRhyPJiqXkw$w|+56V%%PF##l<#xLGOc%p zoXn?u$bC7vx>|CbTT8*OL*WZaxx0UG{)O_l)oSJG1Ik~}X8eFKPW08G%#L*%nf6eP z@G`iRES6$USu;-CO`>kBcZrNu+BS%sM0beHByF2ek~<|?A46$)sejX;RA$?+O0GTb z3BiNejH9vOS+Ed1@%chf<|evJ)PhZ`#PgSJw>q}ji8^N!GdNU{tdEh@vAT}Ux%R}W zVaX_nSop!^Xw1VviUl}iXGt2Ksg>*ZSZN}_(m=q`n+UKm(1L8M9U(hXTppQ$UyJx0 zHyO&o#4CvXB_7y;PT07Muzl7aOgC_VoP8lY9?Ib2U*N$?;0bf>`77V!Sk&+$xXwJ1 zfj{CX7zw-&7@fpvcmf>p1_uIgv=9_A1Vs!jidcN>fLN|o-&m)olsW40oe!1F`nb5U z5S{CyaQ$21hf=hDDq2_D*44J)st*@#HWVANyil&}%=Qwv_LOU~aV;;DD?77Y<=Xwp cwY*TS6t4Fj|GD0y*kQ9%_~X{k2L6NJ0d~vA2mk;8 literal 1365 zcmeH{%WB(D5QZm?Bf3g2^d!<1XLj<_QEu2z38rWs^bfGByp@*F=?#` z6S~!l^d0&rc@yP7v6Wtopj~v=)oA9Q`RAPPfZCmbOGFxNP-)|~-H{_?uPEE(cFS&k zu;g$u;yv!j;pOFwU$8S1{3Z~dkd&QnZk>Ij?0vahdisd6m$V$;B8(G#KcUo&bQ77j ztwwm}Uq}`+F`={;CCwU<73mgHeV#PyM0Tv(L`Ix64Jh%w5-$uW6*uv&E0oA|^;OEW z$M1yT?s&}MK=9a~3LbiVE+}f zgwpr=9Qu8M_W`5*C<*p~BU<7>0FDNNB8H%dp+ymkZcacf)5>pKM@N*}>hbMQrS$Og z^!gCdzRC+%zZHHcdFz+Fb-rqyuL_R(aNuS_F%gRk#md_3aSYdEjR24Hfx1HZvATEKX?a0leo|T diff --git a/helper/chimes/gammapolisz.mid b/helper/chimes/gammapolisz.mid index 95408232567d40b9d498aedc6e08a2c1935a7e7a..b2233f56fc4d6534372dbac713f591afa5c7b78a 100644 GIT binary patch delta 283 zcmWNLF-yZx6ot=AnmCB=B~qsjLO~EgiWNfpl4qKjb`S?gC&9rW3fb;`-CX2}f286s z@=v(dGky1-k9#?P$$J`3DX+TZ-JExG3d=i--b$vHaX}WOlc~Bq;l4R%a3-9NI7BoVAI1DUWsw2* z%_V~ghas6zWE63zb!?vZu}k-^SF5^c?azmKH2)S6R`vh@ delta 271 zcmWNLu}%U}5Jl&)E*O>lM=kvAG;Y6)MOq%e<8eG+Ss+eW$uBW*-1kb#Vd8mR;FD}!rW z;!~HroAYi?;d$q!^QhD_uF0AVs5PXL`{9AXJ%<}`=+RVsRPb}nB3IlGfx(o+kSr-G zio#ZS)RpwvG(WTI(6(6UmYvpkS<5J4kwhq4%H00VWcRfH5OH_zXN)$FWkU|gTXIkS L&fMGS=-%BwBU@5s diff --git a/helper/chimes/gentlejena.mid b/helper/chimes/gentlejena.mid index d1b994f7c9fd9d55428f94aa167013693d34fb92..584c4415ce7e9183a70346d2beb5ab1936862cec 100644 GIT binary patch delta 48 zcmZo=pTIsrlU0&o0~5PU<{Jau9hKai-uyrv^ly{BY9Li|T1OVCQ3u6EP diff --git a/helper/chimes/gtrhero.mid b/helper/chimes/gtrhero.mid index a7b3d923316b8a6c1f95d5875bf08e29148b6344..d8c04fe2b60222f08cd0a3a818886793325d955f 100644 GIT binary patch literal 1473 zcmchX%}T>S5XVQ`=B#%KJ$myVN=dE78XC4SA*44C9t3Yfx5a*_5#<&iU+v$9++# zSE1e*8bgJ}UwGek$wT@nbqH74vz5nl6hDa*{}JjKp$=iGLsb}o%5n^4 zyDse+)Z`IC&HGBACQsoid#3HYzr>0E2;X_$P_7fo@4e*0an7%=E-rhN_s4qO_uF}Y z;z4oqWQa^o^Nw~qqNH*H?vv1LR@h*ne0^#?P(4sc3Wx4J|Dw$f0%(p+^< zw|Ye7n`!0)?BoDv#!J%^FlJ;pnQQJrvhY~rrDuEQDsngfHEO)Jx8UU$u=SUu#=pV` D+6v4} literal 1473 zcmchX%}T>S5XVQ`=B#%KJ$mz0N<#>#Ye)M~*s#r4C{7uj}_;+a;g6`*+#D z<+rf=3gx|r^4`zw-a~os=XTy;o;Q@|Z8@D8fAwhXP_|o6r`8VTcqrQ^hEr(u&XnaC z%64t+8MMkHf>!SrRW6Ow+5Ur+~>knpn9pIF%_Pay@wz8slrMc>! z_IpI;&9sXUI~n54cvGXsNDNQDyvgBOtF1)?f|qz91W0pqv=Ij#&0?jbhr qAQ>C51X!_iNCi+oRIz(V1yJ5Kr76Rep`~oHBcs-20mf(`b_4(?uO0mW delta 117 zcmaFO^qOgcbCOX=g%JaTc}Qb{IRk@PNQD^#gB_4#2cjx~qz#Z`1LIf%IhG6z)*&|5 qAQ>C51X!_oNCi+oRIznP1yJ5Hr76Rbp`~oHBcs-20mf(`b_4*!egu*I-)PG*=W qAI`9miFI=!_asiXrwp5zIOk0cm)^2@r>HSI>vx9DK&iJfGnoMt`Yt8_ delta 86 zcmdn!*ycDvRFsF|e;_kkKw@*ke|-kukfLk`25#$(QO{U};{UVpy8DNOD0l{kD1-nR qjGG-gVG4U!MUg{f1$J zd%a16I|Bz29R%d7O>h8;I{?KIbP$lQHo+PwZVeK5gvh(r7c{s6`OZMv8Av+;X(tqZ zBS?S&s6ft{fx)R>4#;t+Z_EIi=7MA^%oWtOy-5XVdy@&m&#bc)kT}f=Lx}?bHrk36 literal 473 zcmeYb$w*;fU|?flWDsPi@C_--2J(0q{s%I%b3JNK_^;0Z6??-l!Mfh0!J2^si4Fqt z)h3t##Z7?X2s#MJSDT;@6xRodJ3{0w>kAqzfqZiyZ4RW(fV3G3zY!$B08}7n&cI++ pF9+n9)Hh}TO>;rA73KE}&|n?(900W>garTq diff --git a/helper/chimes/resublimity.mid b/helper/chimes/resublimity.mid index f12be9ebffa53d829996ed94154f5e475f400659..bb657baadf66c809580ae6e1a019738eb0d6c6ae 100644 GIT binary patch delta 65 zcmeya-)*oVheIfhVIz~s9RB}oEI$7J0gM}&*d}l0Fx$MDV-GV215nh%-`{(2J`WQ& Rki!n*xca$l&gbjk1OTkX6W{;< delta 70 zcmeA+_^!VpheJGwVIz~s904XahKVW>&GG-)SbY5b0~jao;xO2}g<}u%$LnTWHii1^f5zl3l{` zPQ7lmcCfrv+rAAfub@ml&Gj3rhNFQ=)BtgJVA5~^1f&6JKpFrele9*NJ>qnP$Y<7P zb_1vWDqO;;EGwaXQ$lL{n5$)@eq%h=AHah*9*@59uw5Lk-@LZo&-$3_x7LM)dgz#} z=OAeb6A47sH|`1~N^l>+eS}GE0o^C`p(Ue|QE4*BRaHD=)l8TQk2@7TG^L>cT$5>+ zHPRe(3vD%LU74IQE$jnlO!K%K_x)d|&6QhR%fU?InRbkJc%P1m97GQ7MCMiO$FbCQ z@X9_dR-3Kvz`0ZoseNvX$VKnC=taoJ-PM~YS|sO>Uu$2MbAL`0&rbf@>g4*pwX;x--ao;POH}8JZkJ SB%jrAGFL-q0$5!lyl%|D}gf2Rqd(XM&y~owg-gpF{f;CjuzwGS2+$Vd2 z>5Fo?RC|o+v-L;Mf$0_&EpsGqdM4F9BzDhaVGkIP4oC;21E6oxS|7=fIPN13*bUfS z!Eta|Ucj|3m5{(JAhQBY^t4iby1OgOW0cM>thbKITMp8iGOVH3C^ZOF6n zy#H(3M7L+pauB&V5yyzb_jF9`Aa=MkWW$2}x|UfEK3UhzdUe!&HNRe4{zu=^&)z$q zYwmLoS8zyP^SOFH(BYzVfG)SS3-L!ucXY!h4sE6nbqKZiD85PR8?|R$*Xc0&TvDr?G4_)z`EqEI(c0Vw~6Dw@Pj`6 jfc4<=fq_M_Iboy4BNhN! C91hU{ delta 46 zcmbQmHH&M4sImaVe`W@T|AEZhd(Jf{{MTpj4JpcIU|`W~R+(T>Z_{AFz_8Kc5eooQ Cy$)yq diff --git a/helper/chimes/syabon.mid b/helper/chimes/syabon.mid index afd5c91bd5bdea94afd592512e8efc31bc64eca8..11ff5beef80c9540798c91e0ef9906414f62f5dd 100644 GIT binary patch literal 1240 zcmcgry-pl45FT`aNY_P5k;<=-K62rcR@PdU4{-tkD{)FefkbmU$jMonC3ykA0WXq@ z7vWJZ-^_S9phQus@%(?^%s3riT@uj&?a?R7>3Dq&?F(%uMBAgu$H#9EtL?#u_V6&$ z_A9A>^7QMf_>E1sX7J9Gn9YzJm9#NKbVi=pM0gXt0p92+ARydyLvU7dZ)z@bBw@YF z-Ixfk^nSrW75m>0|>W@Xrlr@*~6m38%n)sE$=^UzSrqc+b8+;-J~07x;X5`{Y^B-{~- z`e4bSAzRfHugB0BVdCLQ6jffD)$nj(=Z1`uX(+zu`R}UVFOVyQc^n+Z;YzNnZMs@! z)NPH^^3iqU(uICDb;-2}i0euO(%T+X=1P3dXz%R29!kRE<{+qxQ9@jv7s%Jc3k6Xb zDvsc%4pps6Q`#bm`Lwk+BjYm|dFrs0FNR%saS2k#HtPR~FBpvn)0+Sdw<8~+H+;N! z3Y*^W(bgx>g0tw;dg9Z7wmqWlymzv(?>E~EQhV?7?Jn81s~$~j zgGpsHZ51e0Ytxp&$TOM}-U?n1ZyCrVz(3Tj4^DC)axQWtVYSO$n-X5hm5QkRWRO_1 zX&7Ar?+{Phn6?OxA=v1AuIOO(Y(jqrS)f0M451g06?D$d_y8@HjZ>6S5~JgoJ!TTK zG;GCF;69qnI{W-`$8uR)Xeeb-o96^>yJ|oHq?l7Gg*zrB+!2cUV9B9AI@J`f#n2dG z#lw>*%DgnI;Nil~4H+fVP<-F>-&KEIAXf>Mm0X?M)VWNjyBw$G%TRYq7y8lU zCFdp}t}78pKYLIbDe)1beQ~3FC>0hr0zqAj65{f_K)xPcD2U2XaRkpgRJAHiX^SZ4 z<8p6C#%Iv+)L|=M3_J1SDo7n$r~eUOFzODbF&-LjM?OMh_;~RYHjUw<%}<~OXVC}w z#0QCUZ5SjyZnZn;hjEnVIHfuA7pno{&lmDE?E(Xs!8L<^1$hNIg`C1Zft)~&A;)3w Vn^S*t`Tggq|1tg_tQ((V39sT^Y+w9*${iE6L z>~2Cc0j4xlz|yC7I2f^KbTi@b47Tm<8LdR-bU9Gcl|aFD5j<=0 zXkvfM zY1?^&t^SNwuqvhwcfcwL(tzOcY^_((RzNM7YkYhCc*bGB&|5t{Z*A9_wg$SogB{PW z8M$=Lan=&>qWzu}oEPwK;#l3*F$YH;VRB$7`fHDDjg0*V9CysP3NEhs&?GL}Ot3Yk z!xy%vd?>@V`w;}#{ctT^(yU+cZd2fV%0%R@33J+c$F_*0Y?^mI6?K?a9j2YZry>uf z{cz|ogqBf})a*OTJVpf574m6>X3*K;4B>uN)N%C&^|-C-p}kr6b|G4nqPl{D5^7as zO4NdG5&DZ*hai6|8T;|m05gBT_!mgS$dN4WZJq4T;0mjD!bIMsIk&Q$Ze3g9(=w4~ zDd$!|&6voOQ*bLCGbTb_$*pWE_CJ*CUrBP#M7}l8MIxQ;Kh|=$;}z=?Gp?n0!JvkA Vq0uXfvHvl=slS~@ao~S>_yvQQVKe{$ literal 1564 zcmd5+yKdV+5FEpiS|(kJ;3}sGY(;`_vQ2P7P%!Muh7-V*DkYdALK-90wT$us{*3%f zK1$i+isUIW3>Pla5PN(3n%Uvq+?uVfbA}uc1_25#is)IW z$09xJdym?`c+>S#dtB08LQ1+4?t<)?!q1bZGj{vM-sb6eYr0mH3TW&0b~?Xh z_IoR_klRZPpt?bzrnfiA)ZkY)sLR#~&NkX!jXj@E+ zFK*BHFovbQhyrXcLPM7}>sGv878s40soX7LMwxBdj%#&|C|uLJ_NoeFdw15@+pgQ!f(h?zb?Gp=+G?PgZW;e?sKKsi?mWXeommx3$p=$R>D z!j*0(^*@$dzt`lPnSLvdR1K|Nf2ov_bgi~H&xIB*7!}YgF?ldCtbg~<=Rc=G8u(ux F{sPd&M!5h0 diff --git a/helper/chimes/truth.mid b/helper/chimes/truth.mid index 8c8c70c66b9521545ccbd0e34ba691aa685b60de..d28a7ac8b1f5b6f9eb41d58053370cd06438df47 100644 GIT binary patch literal 519 zcmd6jL5cz~5JkV8^sHuMFTH`QS!XpgO@|N?MDPH!7|@TqApzHV0Z-u3yox3k?RW%t z?|;ZkRmIKj7r+N*nBx#PfBTX?aa*hQx;_2ez98LffwO1w&?C(V6_^9m$TUJn<~Z?+ zc?A_|N)y-xG?86IBkXBBlw)$x1I+;CnM*S;4bb8g7H6O-zj${3-%#1nI4H|xp?jLX zI&*1yrXE_H!s49%?Hn4hIaanbwoZOrmX)SZ*OTEyEi7wW=JG(A#}MDo3!%N>CA{1Y H?c0Yt_>O!U literal 519 zcmd6jF>V4e5Jf+0Zz`H>$qiDaTCK*ij4f)4NE{$Vq~wbZ*;49o0Zx#kaTTx`E#V01 z-v5%HXJ)(m`T+2R1)lM}-5vHdEpd4>{rU6wetCsU1<(&JsnQf%DT2=sSmWd4Y9so2>mY}!o%&* H|NC$SMPGNy diff --git a/helper/chimes/waiting_freqs.mid b/helper/chimes/waiting_freqs.mid index dadecd5340b72dc0b28e8b28f4cd243093b915b4..093148b52511cfecdcfe576ebd0733dee88b0d01 100644 GIT binary patch delta 99 zcmX@ZbcShyL6~=OW1cqyt5;%kf)|6EM}@ry1Djj9hZ_TnbGfTC1EXW9ts?`6b4d%A zGXtMZdW*CT1BXjO6PF86L2RpnGXt}CiK90Imsg3s7Xz<%NsELxL$mP2huIT1L<0aF C_8MjY delta 99 zcmX@ZbcShyL6~uIW1cYst5ITef)Rt8L4~~m1DjsChaLlqcDbuI1EXfCttJD9c1a7D zHUpnZdW*CQ1BXsR6PFH9L2RpnHUqP9iK8(Cmr;qm5d*JrNsELrL$mP2huIT1L<0b! CXBYMW diff --git a/helper/chimes/when_present_is_past.mid b/helper/chimes/when_present_is_past.mid index 5f829e579548bfdbdd54b1efb80caf94bf91fd0d..e670c32a2f697ad55786db38104b0eec8341be16 100644 GIT binary patch delta 213 zcmXAj!3u&<5Jgi7Euuw`AJD#Cx+n-#Kp%yqvfw|VWOASveT%^KCOLS5)7dY~Np$T@9FsFzm z#fH^JY+eMd334?@D>QCr>e;fW!EC2ui diff --git a/include/sound/yukkuri.h b/include/sound/yukkuri.h index 8174505..bce3b72 100644 --- a/include/sound/yukkuri.h +++ b/include/sound/yukkuri.h @@ -60,4 +60,6 @@ class Yukkuri: public WaveGenerator { void _finish_current(); void _start_next_utterance_if_needed(); void _stop_speech(); + + SemaphoreHandle_t aqtkSemaphore = NULL; }; \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 16f8f4a..dd882cc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -191,6 +191,7 @@ void bringup_hid() { #endif } +static TaskHandle_t bootTaskHandle = NULL; void boot_task(void*) { ESP_LOGI(LOG_TAG, PRODUCT_NAME " v" PRODUCT_VERSION " is in da house now!!"); bringup_sound(); @@ -264,6 +265,7 @@ void boot_task(void*) { alarm_init(sensors); ESP_LOGI(LOG_TAG, "Shut up and explode!"); + bootTaskHandle = NULL; vTaskDelete(NULL); } @@ -271,6 +273,7 @@ void setup() { vTaskPrioritySet(NULL, configMAX_PRIORITIES - 2); // Set up serial for logs Serial.begin(115200); + while(!Serial); #ifdef BOARD_HAS_PSRAM heap_caps_malloc_extmem_enable(16); #endif @@ -309,16 +312,17 @@ void setup() { con->set_active(false); fb->clear(); - TaskHandle_t bootTaskHandle; - xTaskCreate( + if(xTaskCreate( boot_task, "BOOT", 6000, nullptr, configMAX_PRIORITIES - 1, &bootTaskHandle - ); - vTaskResume(bootTaskHandle); + ) == pdFALSE) { + ESP_LOGE(LOG_TAG, "Boot task creation failure"); + ESP.restart(); + } ESP_LOGI(LOG_TAG, "setup end."); } diff --git a/src/music/001_caramelldansen.cpp b/src/music/001_caramelldansen.cpp index c2b6e4b..ef0eaed 100644 --- a/src/music/001_caramelldansen.cpp +++ b/src/music/001_caramelldansen.cpp @@ -8,127 +8,127 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 181}, - {FREQ_SET, 0, 293}, + {FREQ_SET, 0, 174}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 1760}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, - {FREQ_SET, 0, 293}, + {FREQ_SET, 0, 174}, {DELAY, 0, 181}, {FREQ_SET, 0, 0}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 220}, + {FREQ_SET, 0, 131}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 1760}, {DELAY, 0, 181}, - {FREQ_SET, 0, 220}, + {FREQ_SET, 0, 131}, {DELAY, 0, 181}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 181}, {FREQ_SET, 0, 0}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 1760}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, - {FREQ_SET, 0, 246}, + {FREQ_SET, 0, 147}, {DELAY, 0, 181}, - {FREQ_SET, 0, 246}, + {FREQ_SET, 0, 147}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 195}, + {FREQ_SET, 0, 116}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 1760}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, - {FREQ_SET, 0, 195}, + {FREQ_SET, 0, 116}, {DELAY, 0, 181}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 181}, - {FREQ_SET, 0, 293}, + {FREQ_SET, 0, 174}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 1760}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, - {FREQ_SET, 0, 293}, + {FREQ_SET, 0, 174}, {DELAY, 0, 181}, {FREQ_SET, 0, 0}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 220}, + {FREQ_SET, 0, 131}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1479}, - {DELAY, 0, 363}, {FREQ_SET, 0, 1760}, + {DELAY, 0, 363}, + {FREQ_SET, 0, 2093}, {DELAY, 0, 181}, {FREQ_SET, 0, 0}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 1760}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, - {FREQ_SET, 0, 293}, + {FREQ_SET, 0, 174}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 181}, - {FREQ_SET, 0, 293}, + {FREQ_SET, 0, 174}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 1760}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 1760}, {DELAY, 0, 181}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 363}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 181}, {FREQ_SET, 0, 0}, {DELAY, 0, 181}, diff --git a/src/music/002_duvet.cpp b/src/music/002_duvet.cpp index cf1da07..f239904 100644 --- a/src/music/002_duvet.cpp +++ b/src/music/002_duvet.cpp @@ -9,85 +9,85 @@ extern "C" const POMFHeader POMF_HEAD = { extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 575}, {FREQ_SET, 0, 0}, {DELAY, 0, 69}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 575}, {FREQ_SET, 0, 0}, {DELAY, 0, 69}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 682}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 575}, {FREQ_SET, 0, 0}, {DELAY, 0, 69}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 682}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 575}, {FREQ_SET, 0, 0}, {DELAY, 0, 69}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 575}, {FREQ_SET, 0, 0}, {DELAY, 0, 69}, - {FREQ_SET, 0, 466}, + {FREQ_SET, 0, 554}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 466}, + {FREQ_SET, 0, 554}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 284}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 682}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 1591}, {FREQ_SET, 0, 0}, {DELAY, 0, 1252}, diff --git a/src/music/003_haruhi_no_omoi.cpp b/src/music/003_haruhi_no_omoi.cpp index 2aaf14f..73d665c 100644 --- a/src/music/003_haruhi_no_omoi.cpp +++ b/src/music/003_haruhi_no_omoi.cpp @@ -8,35 +8,35 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 466}, + {FREQ_SET, 0, 554}, {DELAY, 0, 681}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 1363}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 681}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 1363}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 681}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 1363}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 681}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 1363}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 340}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 340}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 1363}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 681}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 1363}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 681}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 2045}, {FREQ_SET, 0, 0}, {DELAY, 0, 3579}, diff --git a/src/music/004_hishoku.cpp b/src/music/004_hishoku.cpp index 5f0848f..080b0ac 100644 --- a/src/music/004_hishoku.cpp +++ b/src/music/004_hishoku.cpp @@ -8,71 +8,71 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 622}, {DELAY, 0, 214}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 659}, {DELAY, 0, 214}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 428}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 428}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 214}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 642}, {FREQ_SET, 0, 0}, {DELAY, 0, 857}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 428}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 428}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 428}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 622}, {DELAY, 0, 857}, {FREQ_SET, 0, 0}, {DELAY, 0, 428}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 214}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 622}, {DELAY, 0, 642}, {FREQ_SET, 0, 0}, {DELAY, 0, 428}, - {FREQ_SET, 0, 1046}, - {DELAY, 0, 214}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 622}, {DELAY, 0, 214}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 659}, {DELAY, 0, 214}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 214}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 740}, + {DELAY, 0, 428}, + {FREQ_SET, 0, 494}, {DELAY, 0, 214}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 428}, {FREQ_SET, 0, 0}, {DELAY, 0, 428}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 214}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 428}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 214}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 428}, {FREQ_SET, 0, 0}, {DELAY, 0, 428}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 214}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 214}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 857}, {FREQ_SET, 0, 0}, {DELAY, 0, 428}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 214}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 857}, {FREQ_SET, 0, 0}, {DELAY, 0, 214}, diff --git a/src/music/005_like_the_wind.cpp b/src/music/005_like_the_wind.cpp index 443a8f6..bdc1fab 100644 --- a/src/music/005_like_the_wind.cpp +++ b/src/music/005_like_the_wind.cpp @@ -8,114 +8,116 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 315}, {FREQ_SET, 0, 0}, {DELAY, 0, 146}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 315}, {FREQ_SET, 0, 0}, {DELAY, 0, 146}, - {FREQ_SET, 0, 391}, + {FREQ_SET, 0, 466}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 430}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 430}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 430}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 430}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 923}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 115}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 115}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 892}, {FREQ_SET, 0, 0}, + {DELAY, 0, 11}, + /* HOOKEND */ {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_END}, - {DELAY, 0, 261}, - {FREQ_SET, 0, 783}, + {DELAY, 0, 249}, + {FREQ_SET, 0, 932}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 315}, {FREQ_SET, 0, 0}, {DELAY, 0, 146}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 315}, {FREQ_SET, 0, 0}, {DELAY, 0, 146}, - {FREQ_SET, 0, 391}, + {FREQ_SET, 0, 466}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 430}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 430}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 430}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 430}, {FREQ_SET, 0, 0}, {DELAY, 0, 30}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 1123}, {FREQ_SET, 0, 0}, {DELAY, 0, 1184}, diff --git a/src/music/006_waiting_freqs.cpp b/src/music/006_waiting_freqs.cpp index b35c003..f881826 100644 --- a/src/music/006_waiting_freqs.cpp +++ b/src/music/006_waiting_freqs.cpp @@ -9,53 +9,55 @@ extern "C" const POMFHeader POMF_HEAD = { extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 8}, - {FREQ_SET, 0, 493}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 1017}, {FREQ_SET, 0, 0}, {DELAY, 0, 21}, - {FREQ_SET, 0, 466}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 2051}, {FREQ_SET, 0, 0}, {DELAY, 0, 299}, - {FREQ_SET, 0, 415}, + {FREQ_SET, 0, 988}, {DELAY, 0, 269}, {FREQ_SET, 0, 0}, {DELAY, 0, 25}, - {FREQ_SET, 0, 369}, + {FREQ_SET, 0, 880}, {DELAY, 0, 307}, {FREQ_SET, 0, 0}, {DELAY, 0, 17}, - {FREQ_SET, 0, 311}, + {FREQ_SET, 0, 740}, {DELAY, 0, 294}, - {FREQ_SET, 0, 277}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 4}, + {FREQ_SET, 0, 659}, {DELAY, 0, 260}, {FREQ_SET, 0, 0}, {DELAY, 0, 34}, - {FREQ_SET, 0, 311}, + {FREQ_SET, 0, 740}, {DELAY, 0, 2230}, {FREQ_SET, 0, 0}, {DELAY, 0, 59}, - {FREQ_SET, 0, 207}, + {FREQ_SET, 0, 494}, {DELAY, 0, 2303}, {FREQ_SET, 0, 0}, {DELAY, 0, 34}, - {FREQ_SET, 0, 329}, + {FREQ_SET, 0, 784}, {DELAY, 0, 1136}, {FREQ_SET, 0, 0}, {DELAY, 0, 17}, - {FREQ_SET, 0, 311}, + {FREQ_SET, 0, 740}, {DELAY, 0, 2871}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 493}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 277}, {FREQ_SET, 0, 0}, {DELAY, 0, 42}, - {FREQ_SET, 0, 466}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 269}, {FREQ_SET, 0, 0}, {DELAY, 0, 55}, - {FREQ_SET, 0, 493}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 2290}, {FREQ_SET, 0, 0}, {DELAY, 0, 1722}, diff --git a/src/music/007_the_way.cpp b/src/music/007_the_way.cpp index 22f9d1b..121e0b0 100644 --- a/src/music/007_the_way.cpp +++ b/src/music/007_the_way.cpp @@ -8,185 +8,184 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 100}, {FREQ_SET, 0, 0}, {DELAY, 0, 20}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 108}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 100}, {FREQ_SET, 0, 0}, {DELAY, 0, 20}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 112}, {FREQ_SET, 0, 0}, {DELAY, 0, 8}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 2400}, {FREQ_SET, 0, 0}, {DELAY, 0, 480}, - {FREQ_SET, 0, 2489}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 480}, - {FREQ_SET, 0, 2793}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 480}, - {FREQ_SET, 0, 2489}, - {DELAY, 0, 24}, - {FREQ_SET, 0, 2217}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 24}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 28}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 28}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 2304}, {FREQ_SET, 0, 0}, {DELAY, 0, 16}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 468}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 2380}, {FREQ_SET, 0, 0}, {DELAY, 0, 20}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 1908}, {FREQ_SET, 0, 0}, {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_START}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 240}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 240}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 240}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 240}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 240}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 240}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 240}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 120}, {FREQ_SET, 0, 0}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 240}, {FREQ_SET, 0, 0}, {DELAY, 0, 240}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 240}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 120}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 120}, {FREQ_SET, 0, 0}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 240}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 240}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 120}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 120}, {FREQ_SET, 0, 0}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 240}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 240}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 120}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 120}, {FREQ_SET, 0, 0}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 240}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 240}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 480}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 120}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 120}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 120}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 240}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 480}, {FREQ_SET, 0, 0}, {DELAY, 0, 2912}, diff --git a/src/music/008_guitar_hero.cpp b/src/music/008_guitar_hero.cpp index 60e6f94..0497524 100644 --- a/src/music/008_guitar_hero.cpp +++ b/src/music/008_guitar_hero.cpp @@ -8,39 +8,47 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 86}, - + /* LOOP */ {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_LOOP}, + {FREQ_SET, 0, 1975}, + {DELAY, 0, 80}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 5}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 80}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 5}, {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -48,15 +56,15 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -64,15 +72,15 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -80,47 +88,47 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -128,43 +136,43 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1864}, - {DELAY, 0, 80}, + {FREQ_SET, 0, 2217}, + {DELAY, 0, 167}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, {FREQ_SET, 0, 1864}, - {DELAY, 0, 167}, + {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -172,15 +180,15 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -188,15 +196,15 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -204,59 +212,59 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, - {DELAY, 0, 80}, + {FREQ_SET, 0, 2489}, + {DELAY, 0, 167}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, - {DELAY, 0, 167}, + {FREQ_SET, 0, 1975}, + {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 2637}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -264,15 +272,15 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -280,15 +288,15 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -296,15 +304,15 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -312,15 +320,15 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -328,47 +336,47 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -376,43 +384,43 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1864}, - {DELAY, 0, 80}, + {FREQ_SET, 0, 2217}, + {DELAY, 0, 167}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, {FREQ_SET, 0, 1864}, - {DELAY, 0, 167}, + {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -420,15 +428,15 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -436,15 +444,15 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -452,23 +460,19 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, - {DELAY, 0, 80}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 5}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, @@ -476,141 +480,137 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, - {DELAY, 0, 80}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 167}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2217}, + {FREQ_SET, 0, 2637}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 2217}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_END}, /* BRIDGE */ - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 341}, {FREQ_SET, 0, 0}, {DELAY, 0, 179}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 167}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 231}, {FREQ_SET, 0, 0}, {DELAY, 0, 115}, - {FREQ_SET, 0, 554}, + {FREQ_SET, 0, 659}, {DELAY, 0, 86}, {FREQ_SET, 0, 0}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 92}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 92}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 92}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 92}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 341}, {FREQ_SET, 0, 0}, {DELAY, 0, 179}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 341}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 341}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 173}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 167}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 341}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 173}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 92}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 92}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 92}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 92}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 341}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 167}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 167}, {FREQ_SET, 0, 0}, {DELAY, 0, 5}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 86}, {FREQ_SET, 0, 0}, {DELAY, 0, 86}, diff --git a/src/music/009_shabon.cpp b/src/music/009_shabon.cpp index ab7300b..ae25e4f 100644 --- a/src/music/009_shabon.cpp +++ b/src/music/009_shabon.cpp @@ -8,420 +8,283 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 739}, - {DELAY, 0, 254}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 880}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, {FREQ_SET, 0, 880}, - {DELAY, 0, 381}, - {FREQ_SET, 0, 0}, {DELAY, 0, 254}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 254}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1174}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 381}, {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 554}, {DELAY, 0, 254}, - {FREQ_SET, 0, 659}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 880}, {DELAY, 0, 254}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 254}, - {FREQ_SET, 0, 880}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 830}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 659}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 554}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 254}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 508}, - {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_END}, {FREQ_SET, 0, 0}, {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 659}, {DELAY, 0, 254}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 880}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {FREQ_SET, 0, 880}, - {DELAY, 0, 381}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 784}, {DELAY, 0, 254}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, {FREQ_SET, 0, 880}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, {DELAY, 0, 381}, {FREQ_SET, 0, 0}, {DELAY, 0, 127}, {FREQ_SET, 0, 880}, {DELAY, 0, 254}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 988}, {DELAY, 0, 254}, {FREQ_SET, 0, 880}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, {DELAY, 0, 254}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 127}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 254}, {FREQ_SET, 0, 659}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1174}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1174}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 635}, + {FREQ_SET, 0, 0}, {DELAY, 0, 127}, {FREQ_SET, 0, 880}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 381}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 889}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 880}, {DELAY, 0, 254}, {FREQ_SET, 0, 880}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1174}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1174}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 381}, {FREQ_SET, 0, 880}, - {DELAY, 0, 127}, + {DELAY, 0, 508}, {FREQ_SET, 0, 0}, - {DELAY, 0, 381}, - {FREQ_SET, 0, 1108}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 381}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 254}, {FREQ_SET, 0, 880}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, {DELAY, 0, 254}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 381}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 381}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, {FREQ_SET, 0, 880}, {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 784}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 254}, {FREQ_SET, 0, 880}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 127}, - {FREQ_SET, 0, 1174}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 254}, {FREQ_SET, 0, 1174}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, {DELAY, 0, 254}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 127}, {FREQ_SET, 0, 880}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 659}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 127}, + {DELAY, 0, 508}, {FREQ_SET, 0, 0}, - {FREQ_SET, 0, 739}, + {DELAY, 0, 635}, {DELAY, 0, 254}, - {FREQ_SET, 0, 659}, + /* HOOK */ + {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_START}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1174}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 508}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 508}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 508}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 381}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 508}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 127}, {FREQ_SET, 0, 880}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 830}, - {DELAY, 0, 127}, + {DELAY, 0, 254}, {FREQ_SET, 0, 0}, {DELAY, 0, 127}, {FREQ_SET, 0, 880}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1174}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1397}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1397}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 381}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 784}, {DELAY, 0, 127}, {FREQ_SET, 0, 880}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 381}, {FREQ_SET, 0, 880}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 381}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 381}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 254}, {FREQ_SET, 0, 880}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, {DELAY, 0, 254}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 381}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {FREQ_SET, 0, 987}, - {DELAY, 0, 127}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 254}, {FREQ_SET, 0, 880}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1174}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 508}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 508}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 508}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 381}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 508}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 254}, {FREQ_SET, 0, 880}, - {DELAY, 0, 127}, + {DELAY, 0, 254}, {FREQ_SET, 0, 0}, {DELAY, 0, 127}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1174}, + {DELAY, 0, 254}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 127}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 127}, {FREQ_SET, 0, 880}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, {FREQ_SET, 0, 880}, {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 127}, - {FREQ_SET, 0, 739}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 659}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 42}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 880}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 42}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 169}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 169}, + {FREQ_SET, 0, 1046}, + {DELAY, 0, 169}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 169}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 169}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 169}, {FREQ_SET, 0, 880}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 42}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 3322}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 42}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 3520}, + {DELAY, 0, 126}, + {FREQ_SET, 0, 3520}, {DELAY, 0, 127}, {FREQ_SET, 0, 0}, - {DELAY, 0, 42}, - {FREQ_SET, 0, 659}, {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 42}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 2637}, {DELAY, 0, 127}, - {FREQ_SET, 0, 2793}, + {FREQ_SET, 0, 2349}, {DELAY, 0, 127}, - {FREQ_SET, 0, 2959}, - {DELAY, 0, 42}, - {FREQ_SET, 0, 0}, - {DELAY, 0, 84}, - {FREQ_SET, 0, 2959}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 127}, {FREQ_SET, 0, 0}, {DELAY, 0, 127}, - {FREQ_SET, 0, 2217}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1975}, - {DELAY, 0, 127}, {FREQ_SET, 0, 2093}, {DELAY, 0, 127}, {FREQ_SET, 0, 0}, @@ -429,9 +292,5 @@ extern "C" const melody_item_t POMF_TUNE[] = { {FREQ_SET, 0, 1760}, {DELAY, 0, 127}, {FREQ_SET, 0, 0}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 1479}, - {DELAY, 0, 127}, - {FREQ_SET, 0, 0}, {DELAY, 0, 2033}, }; diff --git a/src/music/010_steiner.cpp b/src/music/010_steiner.cpp index 1dc5820..206c8c6 100644 --- a/src/music/010_steiner.cpp +++ b/src/music/010_steiner.cpp @@ -8,271 +8,273 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 659}, {DELAY, 0, 576}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 961}, - {FREQ_SET, 0, 277}, + {FREQ_SET, 0, 165}, {DELAY, 0, 576}, - {FREQ_SET, 0, 415}, + {FREQ_SET, 0, 247}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 659}, {DELAY, 0, 192}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 659}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 576}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 961}, - {FREQ_SET, 0, 415}, + {FREQ_SET, 0, 247}, {DELAY, 0, 576}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 370}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 192}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 576}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 392}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 576}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 440}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1975}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 769}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 370}, {DELAY, 0, 576}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 440}, {DELAY, 0, 192}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 192}, - {FREQ_SET, 0, 207}, + {FREQ_SET, 0, 123}, {DELAY, 0, 576}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 370}, {DELAY, 0, 961}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 370}, {DELAY, 0, 64}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 51}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 659}, {DELAY, 0, 544}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 865}, - {FREQ_SET, 0, 277}, + {FREQ_SET, 0, 165}, {DELAY, 0, 576}, - {FREQ_SET, 0, 415}, + {FREQ_SET, 0, 247}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 659}, {DELAY, 0, 192}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 659}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 384}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 576}, - {FREQ_SET, 0, 415}, + {FREQ_SET, 0, 247}, {DELAY, 0, 576}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 370}, {DELAY, 0, 384}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 576}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 587}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 192}, - {FREQ_SET, 0, 246}, + {FREQ_SET, 0, 147}, {DELAY, 0, 576}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 587}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 659}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 659}, {DELAY, 0, 769}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 576}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 587}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 659}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 384}, + /* HOOK */ {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_START}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1975}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1975}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 384}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 370}, {DELAY, 0, 192}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 392}, {DELAY, 0, 192}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 370}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1975}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 384}, - {FREQ_SET, 0, 2217}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1975}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 384}, - {FREQ_SET, 0, 2637}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 192}, - {FREQ_SET, 0, 2489}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 384}, - {FREQ_SET, 0, 5274}, + {FREQ_SET, 0, 3136}, {DELAY, 0, 192}, - {FREQ_SET, 0, 4978}, + {FREQ_SET, 0, 2960}, {DELAY, 0, 192}, - {FREQ_SET, 0, 3322}, + {FREQ_SET, 0, 1975}, {DELAY, 0, 576}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 587}, {DELAY, 0, 358}, {FREQ_SET, 0, 0}, {DELAY, 0, 25}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 523}, {DELAY, 0, 576}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 440}, {DELAY, 0, 384}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 370}, {DELAY, 0, 192}, - {FREQ_SET, 0, 493}, + {FREQ_SET, 0, 293}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 659}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1479}, - {DELAY, 0, 384}, {FREQ_SET, 0, 880}, + {DELAY, 0, 384}, + {FREQ_SET, 0, 523}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1975}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 192}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 587}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 384}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 523}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 384}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 384}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 370}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1975}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 576}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 384}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 370}, {DELAY, 0, 192}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 392}, {DELAY, 0, 192}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 370}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 0, 988}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1760}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 384}, - {FREQ_SET, 0, 1975}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 384}, - {FREQ_SET, 0, 2217}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 384}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 523}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 192}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 523}, {DELAY, 0, 192}, - {FREQ_SET, 0, 2217}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 192}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 440}, {DELAY, 0, 192}, - {FREQ_SET, 0, 2959}, + {FREQ_SET, 0, 1760}, {DELAY, 0, 192}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 192}, - {FREQ_SET, 0, 2959}, + {FREQ_SET, 0, 1760}, {DELAY, 0, 576}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 576}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 370}, {DELAY, 0, 384}, - {FREQ_SET, 0, 2793}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 1538}, {FREQ_SET, 0, 0}, - {DELAY, 0, 3076}, + {DELAY, 0, 1538}, + {DELAY, 0, 1538}, // <- 3000+ms can overflow and get the sequencer stuck it seems? }; diff --git a/src/music/011_towa.cpp b/src/music/011_towa.cpp index 7d681fe..b26f227 100644 --- a/src/music/011_towa.cpp +++ b/src/music/011_towa.cpp @@ -8,497 +8,501 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 349}, + {FREQ_SET, 0, 415}, {DELAY, 0, 94}, - {FREQ_SET, 0, 391}, + {FREQ_SET, 0, 466}, {DELAY, 0, 94}, - {FREQ_SET, 0, 415}, + {FREQ_SET, 0, 494}, {DELAY, 0, 569}, - {FREQ_SET, 0, 391}, + {FREQ_SET, 0, 466}, {DELAY, 0, 94}, - {FREQ_SET, 0, 415}, + {FREQ_SET, 0, 494}, {DELAY, 0, 94}, - {FREQ_SET, 0, 466}, - {DELAY, 0, 379}, - {FREQ_SET, 0, 311}, + {FREQ_SET, 0, 554}, {DELAY, 0, 379}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 370}, {DELAY, 0, 379}, {FREQ_SET, 0, 622}, {DELAY, 0, 379}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 740}, + {DELAY, 0, 379}, + {FREQ_SET, 0, 698}, {DELAY, 0, 189}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 189}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 189}, - {FREQ_SET, 0, 466}, + {FREQ_SET, 0, 554}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, - {DELAY, 0, 379}, {FREQ_SET, 0, 830}, {DELAY, 0, 379}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 379}, + {FREQ_SET, 0, 932}, {DELAY, 0, 284}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 284}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 759}, {FREQ_SET, 0, 0}, {DELAY, 0, 569}, - {FREQ_SET, 0, 349}, + {FREQ_SET, 0, 415}, {DELAY, 0, 94}, - {FREQ_SET, 0, 391}, + {FREQ_SET, 0, 466}, {DELAY, 0, 94}, - {FREQ_SET, 0, 415}, + {FREQ_SET, 0, 494}, {DELAY, 0, 569}, - {FREQ_SET, 0, 391}, + {FREQ_SET, 0, 466}, {DELAY, 0, 94}, - {FREQ_SET, 0, 415}, + {FREQ_SET, 0, 494}, {DELAY, 0, 94}, - {FREQ_SET, 0, 466}, - {DELAY, 0, 379}, - {FREQ_SET, 0, 311}, + {FREQ_SET, 0, 554}, {DELAY, 0, 379}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 370}, {DELAY, 0, 379}, {FREQ_SET, 0, 622}, {DELAY, 0, 379}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 740}, + {DELAY, 0, 379}, + {FREQ_SET, 0, 698}, {DELAY, 0, 189}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 189}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 189}, - {FREQ_SET, 0, 466}, + {FREQ_SET, 0, 554}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 1518}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 94}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 94}, {FREQ_SET, 0, 0}, {DELAY, 0, 94}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 94}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 94}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 94}, {FREQ_SET, 0, 0}, {DELAY, 0, 94}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 1760}, {DELAY, 0, 94}, {FREQ_SET, 0, 0}, {DELAY, 0, 1708}, /* LOOP */ {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_LOOP}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 189}, - {FREQ_SET, 0, 466}, + {FREQ_SET, 0, 554}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, - {DELAY, 0, 379}, {FREQ_SET, 0, 622}, + {DELAY, 0, 379}, + {FREQ_SET, 0, 740}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 569}, {FREQ_SET, 0, 0}, {DELAY, 0, 569}, - {FREQ_SET, 0, 698}, - {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, - {DELAY, 0, 189}, {FREQ_SET, 0, 830}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 189}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, {FREQ_SET, 0, 830}, {DELAY, 0, 189}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 189}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 189}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 759}, {FREQ_SET, 0, 0}, {DELAY, 0, 949}, - {FREQ_SET, 0, 698}, - {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, - {DELAY, 0, 189}, {FREQ_SET, 0, 830}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 466}, + {FREQ_SET, 0, 830}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 554}, + {DELAY, 0, 189}, + {FREQ_SET, 0, 622}, {DELAY, 0, 189}, {FREQ_SET, 0, 622}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 740}, + {DELAY, 0, 189}, + {FREQ_SET, 0, 622}, {DELAY, 0, 569}, {FREQ_SET, 0, 0}, {DELAY, 0, 569}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 189}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 189}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 189}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 759}, {FREQ_SET, 0, 0}, {DELAY, 0, 113}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 94}, {FREQ_SET, 0, 0}, {DELAY, 0, 75}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 94}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 932}, {DELAY, 0, 205}, {FREQ_SET, 0, 0}, {DELAY, 0, 550}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 379}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 379}, {FREQ_SET, 0, 0}, {DELAY, 0, 379}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 379}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 379}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 379}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 379}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 189}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 189}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 759}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 379}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 189}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 379}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 379}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 1518}, {FREQ_SET, 0, 0}, {DELAY, 0, 142}, - {FREQ_SET, 0, 391}, + {FREQ_SET, 0, 466}, {DELAY, 0, 47}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 189}, - {FREQ_SET, 0, 554}, + {FREQ_SET, 0, 659}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 189}, {FREQ_SET, 0, 0}, {DELAY, 0, 569}, + /* HOOK */ {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_START}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 94}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 94}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 569}, + {FREQ_SET, 0, 1108}, + {DELAY, 0, 189}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 189}, {FREQ_SET, 0, 932}, {DELAY, 0, 189}, {FREQ_SET, 0, 830}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, - {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 740}, {DELAY, 0, 189}, {FREQ_SET, 0, 622}, - {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, {DELAY, 0, 379}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 379}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 379}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 94}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 94}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 569}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 189}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 189}, - {FREQ_SET, 0, 554}, + {FREQ_SET, 0, 659}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 379}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 379}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 379}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 379}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 379}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 379}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 569}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 379}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 379}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 379}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 569}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 759}, {FREQ_SET, 0, 0}, - {DELAY, 0, 569}, + /* HOOKEND */ {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_END}, - {FREQ_SET, 0, 698}, + {DELAY, 0, 569}, + {FREQ_SET, 0, 830}, {DELAY, 0, 94}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 94}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 569}, + {FREQ_SET, 0, 1108}, + {DELAY, 0, 189}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 189}, {FREQ_SET, 0, 932}, {DELAY, 0, 189}, {FREQ_SET, 0, 830}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, - {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 740}, {DELAY, 0, 189}, {FREQ_SET, 0, 622}, - {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, {DELAY, 0, 379}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 379}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 379}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 94}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 94}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 379}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 189}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 189}, - {FREQ_SET, 0, 554}, + {FREQ_SET, 0, 659}, {DELAY, 0, 189}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 379}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 379}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 379}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 379}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 189}, {FREQ_SET, 0, 0}, {DELAY, 0, 189}, - {FREQ_SET, 0, 349}, + {FREQ_SET, 0, 415}, {DELAY, 0, 47}, - {FREQ_SET, 0, 554}, + {FREQ_SET, 0, 659}, {DELAY, 0, 332}, - {FREQ_SET, 0, 391}, + {FREQ_SET, 0, 466}, {DELAY, 0, 47}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 332}, - {FREQ_SET, 0, 415}, + {FREQ_SET, 0, 494}, {DELAY, 0, 47}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 332}, - {FREQ_SET, 0, 466}, + {FREQ_SET, 0, 554}, {DELAY, 0, 47}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 332}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 47}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 332}, - {FREQ_SET, 0, 466}, + {FREQ_SET, 0, 554}, {DELAY, 0, 47}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 332}, - {FREQ_SET, 0, 391}, + {FREQ_SET, 0, 466}, {DELAY, 0, 47}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 332}, - {FREQ_SET, 0, 415}, + {FREQ_SET, 0, 494}, {DELAY, 0, 47}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 522}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 47}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 142}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 47}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 712}, {FREQ_SET, 0, 0}, {DELAY, 0, 569}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 189}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 189}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 94}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 284}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 94}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 94}, {FREQ_SET, 0, 0}, - {DELAY, 0, 1518}, + {DELAY, 0, 284}, }; diff --git a/src/music/012_mermaid_girl.cpp b/src/music/012_mermaid_girl.cpp index 45f8c88..7df5d27 100644 --- a/src/music/012_mermaid_girl.cpp +++ b/src/music/012_mermaid_girl.cpp @@ -8,271 +8,271 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 698}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 99}, {FREQ_SET, 0, 0}, {DELAY, 0, 7}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 523}, {DELAY, 0, 99}, {FREQ_SET, 0, 0}, {DELAY, 0, 7}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 698}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 35}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 367}, {FREQ_SET, 0, 0}, {DELAY, 0, 24}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 523}, {DELAY, 0, 35}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 164}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 622}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 403}, {FREQ_SET, 0, 0}, {DELAY, 0, 24}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 99}, {FREQ_SET, 0, 0}, {DELAY, 0, 7}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 523}, {DELAY, 0, 99}, {FREQ_SET, 0, 0}, {DELAY, 0, 7}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 698}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 403}, {FREQ_SET, 0, 0}, {DELAY, 0, 24}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 35}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 164}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1760}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1864}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1760}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 403}, {FREQ_SET, 0, 0}, {DELAY, 0, 24}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 698}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 99}, {FREQ_SET, 0, 0}, {DELAY, 0, 7}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 523}, {DELAY, 0, 99}, {FREQ_SET, 0, 0}, {DELAY, 0, 7}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 698}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 622}, {DELAY, 0, 35}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 164}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 35}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 367}, {FREQ_SET, 0, 0}, {DELAY, 0, 24}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 622}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 784}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 403}, {FREQ_SET, 0, 0}, {DELAY, 0, 24}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 99}, {FREQ_SET, 0, 0}, {DELAY, 0, 7}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 523}, {DELAY, 0, 99}, {FREQ_SET, 0, 0}, {DELAY, 0, 7}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 698}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 403}, {FREQ_SET, 0, 0}, {DELAY, 0, 24}, - {FREQ_SET, 0, 1760}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1760}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 99}, {FREQ_SET, 0, 0}, {DELAY, 0, 7}, - {FREQ_SET, 0, 1760}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 932}, {DELAY, 0, 99}, {FREQ_SET, 0, 0}, {DELAY, 0, 7}, - {FREQ_SET, 0, 1760}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 199}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 3520}, + {FREQ_SET, 0, 2093}, {DELAY, 0, 35}, - {FREQ_SET, 0, 1760}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 164}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 4186}, + {FREQ_SET, 0, 2489}, {DELAY, 0, 35}, - {FREQ_SET, 0, 2093}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 164}, {FREQ_SET, 0, 0}, {DELAY, 0, 14}, - {FREQ_SET, 0, 4698}, + {FREQ_SET, 0, 2794}, {DELAY, 0, 35}, - {FREQ_SET, 0, 2349}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 164}, {FREQ_SET, 0, 0}, {DELAY, 0, 228}, diff --git a/src/music/013_eye_opener.cpp b/src/music/013_eye_opener.cpp index e91996e..ab2ad18 100644 --- a/src/music/013_eye_opener.cpp +++ b/src/music/013_eye_opener.cpp @@ -8,303 +8,462 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 29}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, /* Open your eyes */ {DELAY, 0, 147}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 29}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 29}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 29}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 323}, - {FREQ_SET, 0, 220}, + {FREQ_SET, 0, 261}, {DELAY, 0, 174}, {FREQ_SET, 0, 0}, {DELAY, 0, 177}, - {FREQ_SET, 0, 220}, + {FREQ_SET, 0, 261}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, /* See all the love in me */ + {FREQ_SET, 0, 1661}, {DELAY, 0, 29}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 29}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 29}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 29}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 499}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 29}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 29}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 323}, - {FREQ_SET, 0, 174}, + {FREQ_SET, 0, 207}, {DELAY, 0, 174}, {FREQ_SET, 0, 0}, {DELAY, 0, 177}, /* I've got enough forever */ - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 176}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 352}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 352}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 352}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 352}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 176}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 352}, - {FREQ_SET, 0, 261}, + {FREQ_SET, 0, 311}, {DELAY, 0, 176}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, /* Don't be afraid */ {DELAY, 0, 29}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 29}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 29}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 29}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 323}, - {FREQ_SET, 0, 220}, + {FREQ_SET, 0, 261}, {DELAY, 0, 176}, {FREQ_SET, 0, 0}, {DELAY, 0, 176}, - {FREQ_SET, 0, 220}, + {FREQ_SET, 0, 261}, {DELAY, 0, 176}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 1661}, /* Take all you need from me */ {DELAY, 0, 29}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 29}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 29}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 29}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 499}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 29}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 147}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 29}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 323}, - {FREQ_SET, 0, 174}, + {FREQ_SET, 0, 207}, {DELAY, 0, 176}, {FREQ_SET, 0, 0}, {DELAY, 0, 176}, /* And we'll be strong together */ - {FREQ_SET, 0, 440}, - {DELAY, 0, 176}, {FREQ_SET, 0, 523}, - {DELAY, 0, 352}, - {FREQ_SET, 0, 587}, + {DELAY, 0, 176}, + {FREQ_SET, 0, 622}, {DELAY, 0, 352}, {FREQ_SET, 0, 698}, {DELAY, 0, 352}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 830}, {DELAY, 0, 352}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 352}, + {FREQ_SET, 0, 698}, {DELAY, 0, 176}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 0, 622}, {DELAY, 0, 529}, - {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_END}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, /* RIFF */ {DELAY, 0, 174}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 174}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 174}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 174}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 174}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 174}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 174}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 174}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1661}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1567}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1864}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 174}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 86}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 1}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 174}, {FREQ_SET, 0, 0}, {DELAY, 0, 707}, diff --git a/src/music/014_truth.cpp b/src/music/014_truth.cpp index 8ac2ae4..c6910fa 100644 --- a/src/music/014_truth.cpp +++ b/src/music/014_truth.cpp @@ -9,187 +9,187 @@ extern "C" const POMFHeader POMF_HEAD = { extern "C" const melody_item_t POMF_TUNE[] = { {DUTY_SET, 0, 3}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 371}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 374}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 371}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 374}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 371}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 374}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 57}, {FREQ_SET, 0, 0}, {DELAY, 0, 6}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 57}, {FREQ_SET, 0, 0}, {DELAY, 0, 6}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 57}, {FREQ_SET, 0, 0}, {DELAY, 0, 6}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 371}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 374}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 371}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 374}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 371}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 374}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 57}, {FREQ_SET, 0, 0}, {DELAY, 0, 6}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 57}, {FREQ_SET, 0, 0}, {DELAY, 0, 6}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 57}, {FREQ_SET, 0, 0}, {DELAY, 0, 6}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 880}, {DELAY, 0, 371}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 554}, + {FREQ_SET, 0, 659}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 374}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 554}, + {FREQ_SET, 0, 659}, {DELAY, 0, 371}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 374}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 554}, + {FREQ_SET, 0, 659}, {DELAY, 0, 371}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 374}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 57}, {FREQ_SET, 0, 0}, {DELAY, 0, 6}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 57}, {FREQ_SET, 0, 0}, {DELAY, 0, 6}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 57}, {FREQ_SET, 0, 0}, {DELAY, 0, 6}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 880}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 951}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 880}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 554}, + {FREQ_SET, 0, 659}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 880}, {DELAY, 0, 374}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 9}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 182}, {FREQ_SET, 0, 0}, {DELAY, 0, 201}, diff --git a/src/music/015_wpip.cpp b/src/music/015_wpip.cpp index ebb6661..0239042 100644 --- a/src/music/015_wpip.cpp +++ b/src/music/015_wpip.cpp @@ -8,99 +8,101 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 625}, {FREQ_SET, 0, 0}, {DELAY, 0, 75}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 291}, {FREQ_SET, 0, 0}, {DELAY, 0, 8}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 416}, {FREQ_SET, 0, 0}, {DELAY, 0, 91}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 404}, {FREQ_SET, 0, 0}, {DELAY, 0, 87}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 483}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 462}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 475}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 370}, {FREQ_SET, 0, 0}, {DELAY, 0, 141}, - {FREQ_SET, 0, 554}, + {FREQ_SET, 0, 659}, {DELAY, 0, 275}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 225}, {FREQ_SET, 0, 0}, {DELAY, 0, 245}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 754}, {FREQ_SET, 0, 0}, {DELAY, 0, 508}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 241}, {FREQ_SET, 0, 0}, {DELAY, 0, 8}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 1108}, {DELAY, 0, 441}, {FREQ_SET, 0, 0}, {DELAY, 0, 58}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 720}, {FREQ_SET, 0, 0}, {DELAY, 0, 33}, - {FREQ_SET, 0, 622}, + {FREQ_SET, 0, 740}, {DELAY, 0, 441}, {FREQ_SET, 0, 0}, {DELAY, 0, 50}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 516}, {FREQ_SET, 0, 0}, {DELAY, 0, 220}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 216}, {FREQ_SET, 0, 0}, {DELAY, 0, 33}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 988}, {DELAY, 0, 500}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 479}, {FREQ_SET, 0, 0}, {DELAY, 0, 29}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 1760}, {DELAY, 0, 225}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 483}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 4}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 225}, {FREQ_SET, 0, 0}, {DELAY, 0, 41}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 475}, {FREQ_SET, 0, 0}, {DELAY, 0, 33}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 466}, {FREQ_SET, 0, 0}, {DELAY, 0, 20}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 1480}, {DELAY, 0, 1025}, {FREQ_SET, 0, 0}, {DELAY, 0, 3041}, diff --git a/src/music/016_am_arise.cpp b/src/music/016_am_arise.cpp index 4e6ea00..de414d3 100644 --- a/src/music/016_am_arise.cpp +++ b/src/music/016_am_arise.cpp @@ -10,91 +10,91 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {FREQ_SET, 0, 622}, - {FREQ_SET, 1, 311}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 1, 370}, {DELAY, 0, 692}, - {FREQ_SET, 0, 932}, - {FREQ_SET, 1, 466}, + {FREQ_SET, 0, 1108}, + {FREQ_SET, 1, 554}, {DELAY, 0, 1153}, - {FREQ_SET, 0, 554}, - {FREQ_SET, 1, 277}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 329}, {DELAY, 0, 692}, - {FREQ_SET, 0, 830}, - {FREQ_SET, 1, 415}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 494}, {DELAY, 0, 634}, {FREQ_SET, 0, 0}, {FREQ_SET, 1, 0}, {DELAY, 0, 57}, - {FREQ_SET, 0, 830}, - {FREQ_SET, 1, 415}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 494}, {DELAY, 0, 230}, - {FREQ_SET, 0, 739}, - {FREQ_SET, 1, 369}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 440}, {DELAY, 0, 230}, - {FREQ_SET, 0, 698}, - {FREQ_SET, 1, 349}, + {FREQ_SET, 0, 830}, + {FREQ_SET, 1, 415}, {DELAY, 0, 1269}, {FREQ_SET, 0, 0}, {FREQ_SET, 1, 0}, {DELAY, 0, 115}, - {FREQ_SET, 0, 698}, - {FREQ_SET, 1, 349}, + {FREQ_SET, 0, 830}, + {FREQ_SET, 1, 415}, {DELAY, 0, 230}, - {FREQ_SET, 0, 622}, - {FREQ_SET, 1, 311}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 1, 370}, {DELAY, 0, 230}, - {FREQ_SET, 0, 415}, - {FREQ_SET, 1, 207}, - {DELAY, 0, 692}, - {FREQ_SET, 0, 466}, - {FREQ_SET, 1, 233}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 1, 247}, {DELAY, 0, 692}, {FREQ_SET, 0, 554}, {FREQ_SET, 1, 277}, + {DELAY, 0, 692}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 329}, {DELAY, 0, 461}, - {FREQ_SET, 0, 622}, - {FREQ_SET, 1, 311}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 1, 370}, {DELAY, 0, 576}, {FREQ_SET, 0, 0}, {FREQ_SET, 1, 0}, {DELAY, 0, 115}, - {FREQ_SET, 0, 932}, - {FREQ_SET, 1, 466}, + {FREQ_SET, 0, 1108}, + {FREQ_SET, 1, 554}, {DELAY, 0, 1153}, - {FREQ_SET, 0, 554}, - {FREQ_SET, 1, 277}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 329}, {DELAY, 0, 692}, - {FREQ_SET, 0, 830}, - {FREQ_SET, 1, 415}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 494}, {DELAY, 0, 634}, {FREQ_SET, 0, 0}, {FREQ_SET, 1, 0}, {DELAY, 0, 57}, - {FREQ_SET, 0, 830}, - {FREQ_SET, 1, 415}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 494}, {DELAY, 0, 230}, - {FREQ_SET, 0, 739}, - {FREQ_SET, 1, 369}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 440}, {DELAY, 0, 230}, - {FREQ_SET, 0, 698}, - {FREQ_SET, 1, 349}, + {FREQ_SET, 0, 830}, + {FREQ_SET, 1, 415}, {DELAY, 0, 1269}, {FREQ_SET, 0, 0}, {FREQ_SET, 1, 0}, {DELAY, 0, 115}, - {FREQ_SET, 0, 698}, - {FREQ_SET, 1, 349}, - {DELAY, 0, 230}, - {FREQ_SET, 0, 739}, - {FREQ_SET, 1, 369}, - {DELAY, 0, 230}, {FREQ_SET, 0, 830}, {FREQ_SET, 1, 415}, - {DELAY, 0, 692}, - {FREQ_SET, 0, 932}, - {FREQ_SET, 1, 466}, + {DELAY, 0, 230}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 440}, + {DELAY, 0, 230}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 494}, {DELAY, 0, 692}, {FREQ_SET, 0, 1108}, {FREQ_SET, 1, 554}, - {DELAY, 0, 519}, + {DELAY, 0, 692}, + {FREQ_SET, 0, 1318}, + {FREQ_SET, 1, 659}, + {DELAY, 0, 461}, }; \ No newline at end of file diff --git a/src/music/017_bouken.cpp b/src/music/017_bouken.cpp index d3ef17f..5f85fc2 100644 --- a/src/music/017_bouken.cpp +++ b/src/music/017_bouken.cpp @@ -8,200 +8,201 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {DUTY_SET, 1, 3}, - {FREQ_SET, 0, 880}, + {DUTY_SET, 0, 6}, + {FREQ_SET, 0, 523}, + {DUTY_SET, 1, 4}, {DELAY, 0, 392}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 587}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 622}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 698}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1318}, - {FREQ_SET, 1, 87}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 104}, {DELAY, 0, 196}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 1, 155}, {DELAY, 0, 98}, {FREQ_SET, 0, 0}, {DELAY, 0, 98}, - {FREQ_SET, 0, 880}, - {FREQ_SET, 1, 174}, + {FREQ_SET, 0, 523}, + {FREQ_SET, 1, 207}, {DELAY, 0, 196}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 98}, {FREQ_SET, 0, 0}, {DELAY, 0, 98}, - {FREQ_SET, 0, 1318}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 155}, {DELAY, 0, 196}, - {FREQ_SET, 1, 174}, + {FREQ_SET, 1, 207}, {DELAY, 0, 196}, - {FREQ_SET, 0, 880}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 0, 523}, + {FREQ_SET, 1, 261}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1318}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 155}, {DELAY, 0, 196}, - {FREQ_SET, 1, 87}, + {FREQ_SET, 1, 104}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1174}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 1, 155}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1318}, - {FREQ_SET, 1, 174}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 207}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1567}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 0, 932}, + {FREQ_SET, 1, 261}, {DELAY, 0, 196}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 1, 155}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1174}, - {FREQ_SET, 1, 174}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 1, 207}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1046}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 0, 622}, + {FREQ_SET, 1, 261}, {DELAY, 0, 196}, - {FREQ_SET, 0, 987}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 155}, {DELAY, 0, 196}, {FREQ_SET, 0, 0}, - {FREQ_SET, 1, 82}, + {FREQ_SET, 1, 98}, {DELAY, 0, 196}, - {FREQ_SET, 1, 123}, + {FREQ_SET, 1, 147}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1174}, - {FREQ_SET, 1, 164}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 1, 196}, {DELAY, 0, 196}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 1, 233}, {DELAY, 0, 98}, {FREQ_SET, 0, 0}, {DELAY, 0, 98}, - {FREQ_SET, 0, 987}, - {FREQ_SET, 1, 123}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 147}, {DELAY, 0, 196}, - {FREQ_SET, 1, 164}, + {FREQ_SET, 1, 196}, {DELAY, 0, 98}, {FREQ_SET, 0, 0}, {DELAY, 0, 98}, - {FREQ_SET, 0, 783}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 0, 466}, + {FREQ_SET, 1, 233}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1174}, - {FREQ_SET, 1, 123}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 1, 147}, {DELAY, 0, 196}, - {FREQ_SET, 1, 55}, + {FREQ_SET, 1, 65}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1108}, - {FREQ_SET, 1, 164}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 196}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1174}, - {FREQ_SET, 1, 110}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 1, 131}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1318}, - {FREQ_SET, 1, 138}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 165}, {DELAY, 0, 196}, - {FREQ_SET, 1, 164}, + {FREQ_SET, 1, 196}, {DELAY, 0, 196}, - {FREQ_SET, 0, 987}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 261}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1046}, - {FREQ_SET, 1, 164}, + {FREQ_SET, 0, 622}, + {FREQ_SET, 1, 196}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1174}, - {FREQ_SET, 1, 110}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 1, 131}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1318}, - {FREQ_SET, 1, 87}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 104}, {DELAY, 0, 196}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 1, 155}, {DELAY, 0, 98}, {FREQ_SET, 0, 0}, {DELAY, 0, 98}, - {FREQ_SET, 0, 880}, - {FREQ_SET, 1, 174}, + {FREQ_SET, 0, 523}, + {FREQ_SET, 1, 207}, {DELAY, 0, 196}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 98}, {FREQ_SET, 0, 0}, {DELAY, 0, 98}, - {FREQ_SET, 0, 1318}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 155}, {DELAY, 0, 196}, - {FREQ_SET, 1, 174}, + {FREQ_SET, 1, 207}, {DELAY, 0, 196}, - {FREQ_SET, 0, 880}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 0, 523}, + {FREQ_SET, 1, 261}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1318}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 155}, {DELAY, 0, 196}, - {FREQ_SET, 1, 87}, + {FREQ_SET, 1, 104}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1174}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 1, 155}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1318}, - {FREQ_SET, 1, 174}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 207}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1567}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 0, 932}, + {FREQ_SET, 1, 261}, {DELAY, 0, 196}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 1, 155}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1174}, - {FREQ_SET, 1, 174}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 1, 207}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1046}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 0, 622}, + {FREQ_SET, 1, 261}, {DELAY, 0, 196}, - {FREQ_SET, 0, 987}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 155}, {DELAY, 0, 196}, {FREQ_SET, 0, 0}, - {FREQ_SET, 1, 82}, + {FREQ_SET, 1, 98}, {DELAY, 0, 196}, - {FREQ_SET, 1, 123}, + {FREQ_SET, 1, 147}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1174}, - {FREQ_SET, 1, 164}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 1, 196}, {DELAY, 0, 196}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 1, 233}, {DELAY, 0, 98}, {FREQ_SET, 0, 0}, {DELAY, 0, 98}, - {FREQ_SET, 0, 987}, - {FREQ_SET, 1, 123}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 147}, {DELAY, 0, 196}, - {FREQ_SET, 1, 164}, + {FREQ_SET, 1, 196}, {DELAY, 0, 98}, {FREQ_SET, 0, 0}, {DELAY, 0, 98}, - {FREQ_SET, 0, 783}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 0, 466}, + {FREQ_SET, 1, 233}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1174}, - {FREQ_SET, 1, 123}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 1, 147}, {DELAY, 0, 196}, - {FREQ_SET, 1, 110}, + {FREQ_SET, 1, 131}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1318}, - {FREQ_SET, 1, 164}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 196}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1174}, - {FREQ_SET, 1, 233}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 1, 277}, {DELAY, 0, 196}, - {FREQ_SET, 0, 1108}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 261}, {DELAY, 0, 196}, - {FREQ_SET, 1, 164}, + {FREQ_SET, 1, 196}, {DELAY, 0, 196}, - {FREQ_SET, 0, 880}, - {FREQ_SET, 1, 138}, + {FREQ_SET, 0, 523}, + {FREQ_SET, 1, 165}, {DELAY, 0, 196}, - {FREQ_SET, 1, 110}, + {FREQ_SET, 1, 131}, {DELAY, 0, 196}, - {FREQ_SET, 1, 82}, + {FREQ_SET, 1, 98}, {DELAY, 0, 196}, {FREQ_SET, 0, 0}, {FREQ_SET, 1, 0}, diff --git a/src/music/018_gentle_jena.cpp b/src/music/018_gentle_jena.cpp index 36719e3..1d2d495 100644 --- a/src/music/018_gentle_jena.cpp +++ b/src/music/018_gentle_jena.cpp @@ -8,404 +8,411 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_START}, - {DUTY_SET, 0, 4}, - {DUTY_SET, 1, 6}, - - {FREQ_SET, 0, 932}, - {FREQ_SET, 1, 155}, + {DUTY_SET, 0, 4}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 92}, + {DUTY_SET, 1, 7}, {DELAY, 0, 387}, {FREQ_SET, 1, 0}, {DELAY, 0, 37}, - {FREQ_SET, 1, 233}, + {FREQ_SET, 1, 138}, {DELAY, 0, 350}, {FREQ_SET, 0, 0}, {DELAY, 0, 54}, {FREQ_SET, 1, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 20}, - {FREQ_SET, 1, 311}, + {FREQ_SET, 1, 185}, {DELAY, 0, 408}, {FREQ_SET, 1, 0}, {DELAY, 0, 25}, - {FREQ_SET, 1, 233}, + {FREQ_SET, 1, 138}, {DELAY, 0, 391}, {FREQ_SET, 0, 0}, {DELAY, 0, 58}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, + {DELAY, 0, 4}, {FREQ_SET, 1, 0}, {DELAY, 0, 33}, - {FREQ_SET, 1, 123}, + {FREQ_SET, 1, 73}, {DELAY, 0, 337}, {FREQ_SET, 1, 0}, {DELAY, 0, 70}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 110}, {DELAY, 0, 16}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 375}, {FREQ_SET, 1, 0}, {DELAY, 0, 25}, {FREQ_SET, 0, 0}, {DELAY, 0, 20}, - {FREQ_SET, 1, 246}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 1, 147}, + {DELAY, 0, 4}, + {FREQ_SET, 0, 659}, {DELAY, 0, 395}, {FREQ_SET, 0, 0}, {DELAY, 0, 29}, {FREQ_SET, 1, 0}, {DELAY, 0, 8}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 110}, {DELAY, 0, 16}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 179}, {FREQ_SET, 1, 0}, {DELAY, 0, 250}, - {FREQ_SET, 1, 138}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 4}, + {FREQ_SET, 0, 830}, {DELAY, 0, 391}, {FREQ_SET, 1, 0}, {DELAY, 0, 8}, {FREQ_SET, 0, 0}, {DELAY, 0, 45}, - {FREQ_SET, 1, 207}, + {FREQ_SET, 1, 123}, {DELAY, 0, 429}, {FREQ_SET, 1, 0}, - {FREQ_SET, 0, 830}, + {DELAY, 0, 4}, + {FREQ_SET, 0, 494}, {DELAY, 0, 16}, - {FREQ_SET, 1, 277}, + {FREQ_SET, 1, 165}, {DELAY, 0, 404}, {FREQ_SET, 1, 0}, {DELAY, 0, 20}, - {FREQ_SET, 0, 987}, - {FREQ_SET, 1, 207}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 4}, + {FREQ_SET, 1, 123}, {DELAY, 0, 287}, {FREQ_SET, 0, 0}, {DELAY, 0, 108}, {FREQ_SET, 1, 0}, {DELAY, 0, 45}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 587}, {DELAY, 0, 12}, - {FREQ_SET, 1, 92}, + {FREQ_SET, 1, 55}, {DELAY, 0, 375}, {FREQ_SET, 1, 0}, {DELAY, 0, 16}, {FREQ_SET, 0, 0}, {DELAY, 0, 20}, - {FREQ_SET, 1, 138}, + {FREQ_SET, 1, 82}, {DELAY, 0, 216}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 54}, {FREQ_SET, 0, 0}, {DELAY, 0, 50}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 75}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, {FREQ_SET, 1, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 8}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 110}, {DELAY, 0, 404}, {FREQ_SET, 1, 0}, {DELAY, 0, 62}, - {FREQ_SET, 1, 138}, + {FREQ_SET, 1, 82}, {DELAY, 0, 141}, {FREQ_SET, 0, 0}, {DELAY, 0, 216}, {FREQ_SET, 1, 0}, {DELAY, 0, 108}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 20}, - {FREQ_SET, 1, 155}, + {FREQ_SET, 1, 92}, {DELAY, 0, 387}, {FREQ_SET, 1, 0}, {DELAY, 0, 41}, - {FREQ_SET, 1, 233}, + {FREQ_SET, 1, 138}, {DELAY, 0, 191}, {FREQ_SET, 0, 0}, {DELAY, 0, 183}, {FREQ_SET, 1, 0}, {DELAY, 0, 41}, - {FREQ_SET, 1, 311}, + {FREQ_SET, 1, 185}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 416}, {FREQ_SET, 1, 0}, {DELAY, 0, 25}, - {FREQ_SET, 1, 233}, + {FREQ_SET, 1, 138}, {DELAY, 0, 83}, {FREQ_SET, 1, 0}, {DELAY, 0, 216}, {FREQ_SET, 0, 0}, {DELAY, 0, 145}, - {FREQ_SET, 1, 123}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 1, 73}, + {DELAY, 0, 4}, + {FREQ_SET, 0, 988}, {DELAY, 0, 383}, {FREQ_SET, 1, 0}, {DELAY, 0, 16}, {FREQ_SET, 0, 0}, {DELAY, 0, 41}, - {FREQ_SET, 0, 1479}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 110}, {DELAY, 0, 387}, {FREQ_SET, 0, 0}, {DELAY, 0, 20}, {FREQ_SET, 1, 0}, {DELAY, 0, 33}, - {FREQ_SET, 0, 1396}, - {FREQ_SET, 1, 246}, + {FREQ_SET, 0, 830}, + {DELAY, 0, 4}, + {FREQ_SET, 1, 147}, {DELAY, 0, 391}, {FREQ_SET, 0, 0}, {DELAY, 0, 20}, {FREQ_SET, 1, 0}, {DELAY, 0, 12}, - {FREQ_SET, 1, 184}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 1, 110}, + {DELAY, 0, 4}, + {FREQ_SET, 0, 880}, {DELAY, 0, 183}, {FREQ_SET, 1, 0}, {DELAY, 0, 91}, {FREQ_SET, 0, 0}, {DELAY, 0, 175}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 16}, - {FREQ_SET, 1, 138}, + {FREQ_SET, 1, 82}, {DELAY, 0, 375}, {FREQ_SET, 1, 0}, {DELAY, 0, 62}, - {FREQ_SET, 1, 207}, + {FREQ_SET, 1, 123}, {DELAY, 0, 425}, {FREQ_SET, 1, 0}, {DELAY, 0, 33}, - {FREQ_SET, 1, 277}, + {FREQ_SET, 1, 165}, {DELAY, 0, 108}, {FREQ_SET, 0, 0}, {DELAY, 0, 287}, {FREQ_SET, 1, 0}, {DELAY, 0, 12}, - {FREQ_SET, 1, 311}, + {FREQ_SET, 1, 185}, {DELAY, 0, 320}, {FREQ_SET, 1, 0}, {DELAY, 0, 104}, /* Rise */ - {DUTY_SET, 1, 5}, - {FREQ_SET, 1, 349}, + {FREQ_SET, 1, 207}, {DELAY, 0, 416}, {FREQ_SET, 1, 0}, {DELAY, 0, 33}, - {FREQ_SET, 1, 415}, + {FREQ_SET, 1, 247}, {DELAY, 0, 379}, {FREQ_SET, 1, 0}, - {DUTY_SET, 1, 4}, {DELAY, 0, 58}, - {FREQ_SET, 1, 554}, + {FREQ_SET, 1, 329}, {DELAY, 0, 412}, {FREQ_SET, 1, 0}, {DELAY, 0, 33}, - {FREQ_SET, 1, 622}, + {FREQ_SET, 1, 370}, {DELAY, 0, 158}, {FREQ_SET, 1, 0}, - - {DUTY_SET, 0, 4}, - {DUTY_SET, 1, 6}, - {DELAY, 0, 291}, + {DELAY, 0, 116}, + /* HOOKEND */ {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_END}, - /* Cont. */ - {FREQ_SET, 0, 932}, + {DELAY, 0, 175}, + {FREQ_SET, 0, 554}, {DELAY, 0, 12}, - {FREQ_SET, 1, 155}, + {FREQ_SET, 1, 92}, {DELAY, 0, 395}, {FREQ_SET, 1, 0}, {DELAY, 0, 33}, - {FREQ_SET, 1, 233}, + {FREQ_SET, 1, 138}, {DELAY, 0, 387}, {FREQ_SET, 0, 0}, + {DELAY, 0, 4}, {FREQ_SET, 1, 0}, {DELAY, 0, 29}, - {FREQ_SET, 1, 311}, + {FREQ_SET, 1, 185}, {DELAY, 0, 16}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 400}, {FREQ_SET, 1, 0}, {DELAY, 0, 20}, - {FREQ_SET, 1, 233}, + {FREQ_SET, 1, 138}, {DELAY, 0, 400}, {FREQ_SET, 1, 0}, {DELAY, 0, 8}, {FREQ_SET, 0, 0}, {DELAY, 0, 58}, - {FREQ_SET, 0, 1396}, - {FREQ_SET, 1, 123}, + {FREQ_SET, 0, 830}, + {FREQ_SET, 1, 73}, {DELAY, 0, 391}, {FREQ_SET, 1, 0}, {DELAY, 0, 37}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 110}, {DELAY, 0, 12}, {FREQ_SET, 0, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 0, 740}, {DELAY, 0, 387}, {FREQ_SET, 1, 0}, {DELAY, 0, 12}, {FREQ_SET, 0, 0}, {DELAY, 0, 16}, - {FREQ_SET, 1, 246}, + {FREQ_SET, 1, 147}, {DELAY, 0, 8}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 659}, {DELAY, 0, 408}, {FREQ_SET, 0, 0}, {DELAY, 0, 8}, - {FREQ_SET, 1, 184}, - {FREQ_SET, 1, 0}, - {DELAY, 0, 25}, - {FREQ_SET, 0, 1244}, + {FREQ_SET, 1, 110}, + {DELAY, 0, 29}, + {FREQ_SET, 0, 740}, {DELAY, 0, 145}, {FREQ_SET, 1, 0}, {DELAY, 0, 241}, {FREQ_SET, 0, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 1396}, - {FREQ_SET, 1, 138}, + {FREQ_SET, 0, 830}, + {FREQ_SET, 1, 82}, {DELAY, 0, 400}, {FREQ_SET, 1, 0}, {DELAY, 0, 50}, {FREQ_SET, 0, 0}, {DELAY, 0, 8}, - {FREQ_SET, 1, 207}, + {FREQ_SET, 1, 123}, {DELAY, 0, 425}, {FREQ_SET, 1, 0}, {DELAY, 0, 16}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 16}, - {FREQ_SET, 1, 277}, + {FREQ_SET, 1, 165}, {DELAY, 0, 412}, {FREQ_SET, 0, 0}, + {DELAY, 0, 4}, {FREQ_SET, 1, 0}, {DELAY, 0, 12}, - {FREQ_SET, 0, 987}, - {FREQ_SET, 1, 207}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 123}, {DELAY, 0, 75}, {FREQ_SET, 1, 0}, {DELAY, 0, 183}, {FREQ_SET, 0, 0}, {DELAY, 0, 179}, - {FREQ_SET, 0, 987}, - {FREQ_SET, 1, 92}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 55}, {DELAY, 0, 379}, {FREQ_SET, 1, 0}, {DELAY, 0, 33}, - {FREQ_SET, 1, 138}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 4}, {FREQ_SET, 0, 0}, {DELAY, 0, 233}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 45}, {FREQ_SET, 0, 0}, {DELAY, 0, 20}, - {FREQ_SET, 0, 830}, + {FREQ_SET, 0, 494}, {DELAY, 0, 95}, {FREQ_SET, 1, 0}, {DELAY, 0, 25}, {FREQ_SET, 0, 0}, {DELAY, 0, 16}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 8}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 110}, {DELAY, 0, 408}, {FREQ_SET, 1, 0}, {DELAY, 0, 25}, - {FREQ_SET, 1, 138}, + {FREQ_SET, 1, 82}, {DELAY, 0, 70}, {FREQ_SET, 1, 0}, {DELAY, 0, 95}, {FREQ_SET, 0, 0}, {DELAY, 0, 275}, - {FREQ_SET, 0, 932}, + {FREQ_SET, 0, 554}, {DELAY, 0, 25}, - {FREQ_SET, 1, 155}, + {FREQ_SET, 1, 92}, {DELAY, 0, 395}, {FREQ_SET, 1, 0}, {DELAY, 0, 29}, - {FREQ_SET, 1, 233}, + {FREQ_SET, 1, 138}, {DELAY, 0, 170}, {FREQ_SET, 0, 0}, {DELAY, 0, 216}, {FREQ_SET, 1, 0}, {DELAY, 0, 45}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 8}, - {FREQ_SET, 1, 311}, + {FREQ_SET, 1, 185}, {DELAY, 0, 429}, {FREQ_SET, 1, 0}, {DELAY, 0, 8}, - {FREQ_SET, 1, 233}, + {FREQ_SET, 1, 138}, {DELAY, 0, 116}, {FREQ_SET, 1, 0}, {DELAY, 0, 195}, {FREQ_SET, 0, 0}, {DELAY, 0, 154}, - {FREQ_SET, 1, 123}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 1, 73}, + {DELAY, 0, 4}, + {FREQ_SET, 0, 988}, {DELAY, 0, 395}, {FREQ_SET, 1, 0}, + {DELAY, 0, 4}, {FREQ_SET, 0, 0}, {DELAY, 0, 33}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 110}, {DELAY, 0, 20}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 358}, {FREQ_SET, 0, 0}, {DELAY, 0, 29}, {FREQ_SET, 1, 0}, {DELAY, 0, 37}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 20}, - {FREQ_SET, 1, 246}, + {FREQ_SET, 1, 147}, {DELAY, 0, 391}, {FREQ_SET, 0, 0}, {DELAY, 0, 25}, {FREQ_SET, 1, 0}, {DELAY, 0, 8}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 110}, {DELAY, 0, 12}, - {FREQ_SET, 0, 1479}, + {FREQ_SET, 0, 880}, {DELAY, 0, 125}, {FREQ_SET, 1, 0}, {DELAY, 0, 154}, {FREQ_SET, 0, 0}, {DELAY, 0, 166}, - {FREQ_SET, 1, 138}, - {FREQ_SET, 0, 1661}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 4}, + {FREQ_SET, 0, 988}, {DELAY, 0, 391}, {FREQ_SET, 1, 0}, {DELAY, 0, 58}, - {FREQ_SET, 1, 207}, + {FREQ_SET, 1, 123}, {DELAY, 0, 379}, {FREQ_SET, 1, 0}, {DELAY, 0, 66}, - {FREQ_SET, 1, 277}, + {FREQ_SET, 1, 165}, {DELAY, 0, 420}, {FREQ_SET, 1, 0}, {DELAY, 0, 16}, - {FREQ_SET, 1, 207}, + {FREQ_SET, 1, 123}, {DELAY, 0, 408}, {FREQ_SET, 1, 0}, {DELAY, 0, 20}, {FREQ_SET, 0, 0}, {DELAY, 0, 16}, - {FREQ_SET, 0, 1396}, + {FREQ_SET, 0, 830}, {DELAY, 0, 8}, - {FREQ_SET, 1, 311}, + {FREQ_SET, 1, 185}, {DELAY, 0, 429}, {FREQ_SET, 1, 0}, {DELAY, 0, 20}, - {FREQ_SET, 1, 207}, + {FREQ_SET, 1, 123}, {DELAY, 0, 441}, {FREQ_SET, 1, 0}, {DELAY, 0, 33}, - {FREQ_SET, 1, 349}, + {FREQ_SET, 1, 207}, {DELAY, 0, 987}, {FREQ_SET, 1, 0}, {FREQ_SET, 0, 0}, diff --git a/src/music/019_gammapolisz.cpp b/src/music/019_gammapolisz.cpp index d275c9c..f305def 100644 --- a/src/music/019_gammapolisz.cpp +++ b/src/music/019_gammapolisz.cpp @@ -11,230 +11,231 @@ extern "C" const melody_item_t POMF_TUNE[] = { {DUTY_SET, 0, 4}, {DUTY_SET, 1, 6}, {DELAY, 0, 6}, - {FREQ_SET, 0, 880}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 0, 1046}, + {FREQ_SET, 1, 131}, {DELAY, 0, 746}, {FREQ_SET, 1, 0}, {DELAY, 0, 446}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 131}, {DELAY, 0, 86}, {FREQ_SET, 1, 0}, {DELAY, 0, 19}, {FREQ_SET, 0, 0}, {DELAY, 0, 293}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 6}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 131}, {DELAY, 0, 759}, {FREQ_SET, 1, 0}, {DELAY, 0, 13}, {FREQ_SET, 0, 0}, {DELAY, 0, 19}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 6}, - {FREQ_SET, 1, 164}, + {FREQ_SET, 1, 98}, {DELAY, 0, 740}, {FREQ_SET, 1, 0}, {DELAY, 0, 53}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 880}, {DELAY, 0, 6}, - {FREQ_SET, 1, 246}, + {FREQ_SET, 1, 147}, {DELAY, 0, 899}, {FREQ_SET, 1, 0}, {DELAY, 0, 293}, - {FREQ_SET, 1, 246}, + {FREQ_SET, 1, 147}, {DELAY, 0, 99}, {FREQ_SET, 1, 0}, {DELAY, 0, 300}, {FREQ_SET, 0, 0}, - {FREQ_SET, 1, 246}, + {FREQ_SET, 1, 147}, {DELAY, 0, 740}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 880}, {DELAY, 0, 6}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 110}, {DELAY, 0, 193}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 186}, {FREQ_SET, 1, 0}, {DELAY, 0, 13}, - {FREQ_SET, 0, 880}, - {FREQ_SET, 1, 246}, + {FREQ_SET, 0, 1046}, + {FREQ_SET, 1, 147}, {DELAY, 0, 353}, {FREQ_SET, 1, 0}, {DELAY, 0, 53}, - {FREQ_SET, 0, 783}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 0, 932}, + {FREQ_SET, 1, 116}, {DELAY, 0, 899}, {FREQ_SET, 1, 0}, {DELAY, 0, 293}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 1, 116}, {DELAY, 0, 86}, {FREQ_SET, 1, 0}, {DELAY, 0, 226}, {FREQ_SET, 0, 0}, {DELAY, 0, 93}, - {FREQ_SET, 0, 932}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 0, 1108}, + {FREQ_SET, 1, 116}, {DELAY, 0, 746}, {FREQ_SET, 1, 0}, {DELAY, 0, 26}, {FREQ_SET, 0, 0}, {DELAY, 0, 19}, - {FREQ_SET, 0, 587}, + {FREQ_SET, 0, 698}, {DELAY, 0, 6}, - {FREQ_SET, 1, 146}, + {FREQ_SET, 1, 87}, {DELAY, 0, 633}, {FREQ_SET, 1, 0}, {DELAY, 0, 159}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 6}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 1, 78}, {DELAY, 0, 926}, {FREQ_SET, 1, 0}, {DELAY, 0, 266}, - {FREQ_SET, 1, 164}, + {FREQ_SET, 1, 98}, {DELAY, 0, 339}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, {FREQ_SET, 0, 0}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 1, 116}, {DELAY, 0, 653}, - {FREQ_SET, 1, 0}, + /* HOOKEND */ {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_END}, + {FREQ_SET, 1, 0}, {DELAY, 0, 146}, - {FREQ_SET, 0, 659}, + {FREQ_SET, 0, 784}, {DELAY, 0, 6}, - {FREQ_SET, 1, 164}, + {FREQ_SET, 1, 98}, {DELAY, 0, 173}, {FREQ_SET, 0, 0}, {DELAY, 0, 19}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 180}, {FREQ_SET, 0, 0}, {DELAY, 0, 6}, {FREQ_SET, 1, 0}, {DELAY, 0, 13}, - {FREQ_SET, 0, 783}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 0, 932}, + {FREQ_SET, 1, 116}, {DELAY, 0, 366}, {FREQ_SET, 1, 0}, {DELAY, 0, 13}, {FREQ_SET, 0, 0}, {DELAY, 0, 26}, - {FREQ_SET, 1, 146}, + {FREQ_SET, 1, 87}, {DELAY, 0, 6}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 826}, {FREQ_SET, 1, 0}, {DELAY, 0, 360}, - {FREQ_SET, 1, 174}, + {FREQ_SET, 1, 104}, {DELAY, 0, 379}, {FREQ_SET, 1, 0}, {DELAY, 0, 19}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 131}, {DELAY, 0, 466}, {FREQ_SET, 0, 0}, {DELAY, 0, 313}, {FREQ_SET, 1, 0}, {DELAY, 0, 19}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 6}, - {FREQ_SET, 1, 174}, + {FREQ_SET, 1, 104}, {DELAY, 0, 180}, {FREQ_SET, 0, 0}, {DELAY, 0, 13}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 166}, {FREQ_SET, 1, 0}, {DELAY, 0, 13}, {FREQ_SET, 0, 0}, {DELAY, 0, 19}, - {FREQ_SET, 0, 880}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 0, 1046}, + {FREQ_SET, 1, 131}, {DELAY, 0, 379}, {FREQ_SET, 0, 0}, {FREQ_SET, 1, 0}, {DELAY, 0, 26}, - {FREQ_SET, 0, 783}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 0, 932}, + {FREQ_SET, 1, 116}, {DELAY, 0, 840}, {FREQ_SET, 1, 0}, {DELAY, 0, 353}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 1, 116}, {DELAY, 0, 79}, {FREQ_SET, 1, 0}, {DELAY, 0, 319}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 1, 116}, {DELAY, 0, 506}, {FREQ_SET, 0, 0}, {DELAY, 0, 193}, {FREQ_SET, 1, 0}, {DELAY, 0, 99}, - {FREQ_SET, 0, 783}, + {FREQ_SET, 0, 932}, {DELAY, 0, 6}, - {FREQ_SET, 1, 146}, + {FREQ_SET, 1, 87}, {DELAY, 0, 159}, {FREQ_SET, 0, 0}, {DELAY, 0, 33}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 180}, {FREQ_SET, 0, 0}, {DELAY, 0, 6}, {FREQ_SET, 1, 0}, {DELAY, 0, 13}, - {FREQ_SET, 0, 987}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 0, 1174}, + {FREQ_SET, 1, 116}, {DELAY, 0, 366}, {FREQ_SET, 0, 0}, {FREQ_SET, 1, 0}, {DELAY, 0, 39}, - {FREQ_SET, 0, 1046}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 0, 1244}, + {FREQ_SET, 1, 78}, {DELAY, 0, 913}, {FREQ_SET, 1, 0}, {DELAY, 0, 279}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 1, 78}, {DELAY, 0, 120}, {FREQ_SET, 1, 0}, {DELAY, 0, 113}, {FREQ_SET, 0, 0}, {DELAY, 0, 166}, - {FREQ_SET, 0, 1318}, + {FREQ_SET, 0, 1568}, {DELAY, 0, 6}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 1, 78}, {DELAY, 0, 393}, - {FREQ_SET, 0, 1174}, + {FREQ_SET, 0, 1397}, {DELAY, 0, 319}, {FREQ_SET, 1, 0}, {DELAY, 0, 86}, - {FREQ_SET, 1, 195}, + {FREQ_SET, 1, 116}, {DELAY, 0, 193}, {FREQ_SET, 0, 0}, {DELAY, 0, 199}, - {FREQ_SET, 0, 1046}, - {FREQ_SET, 1, 130}, + {FREQ_SET, 0, 1244}, + {FREQ_SET, 1, 78}, {DELAY, 0, 339}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 0, 1046}, + {FREQ_SET, 0, 1244}, {DELAY, 0, 6}, - {FREQ_SET, 1, 261}, + {FREQ_SET, 1, 155}, {DELAY, 0, 866}, {FREQ_SET, 1, 0}, {DELAY, 0, 326}, - {FREQ_SET, 1, 261}, + {FREQ_SET, 1, 155}, {DELAY, 0, 73}, {FREQ_SET, 1, 0}, {DELAY, 0, 326}, {FREQ_SET, 0, 0}, {DELAY, 0, 6}, - {FREQ_SET, 1, 261}, + {FREQ_SET, 1, 155}, {DELAY, 0, 779}, {FREQ_SET, 1, 0}, {DELAY, 0, 13}, - {FREQ_SET, 1, 246}, + {FREQ_SET, 1, 147}, {DELAY, 0, 639}, {FREQ_SET, 1, 0}, {DELAY, 0, 159}, diff --git a/src/music/021_skibidi.cpp b/src/music/021_skibidi.cpp index 3d28674..fa336e1 100644 --- a/src/music/021_skibidi.cpp +++ b/src/music/021_skibidi.cpp @@ -8,758 +8,762 @@ extern "C" const POMFHeader POMF_HEAD = { }; extern "C" const melody_item_t POMF_TUNE[] = { - {DUTY_SET, 0, 5}, + {DUTY_SET, 0, 3}, + {FREQ_SET, 0, 880}, {DUTY_SET, 1, 5}, - {DUTY_SET, 2, 5}, - {DUTY_SET, 3, 5}, - {FREQ_SET, 0, 739}, + {DUTY_SET, 2, 10}, + {DUTY_SET, 3, 8}, {DELAY, 0, 160}, {FREQ_SET, 0, 0}, {DELAY, 0, 80}, - {FREQ_SET, 0, 739}, + {FREQ_SET, 0, 880}, {DELAY, 0, 240}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 160}, {FREQ_SET, 0, 0}, {DELAY, 0, 80}, - {FREQ_SET, 0, 1108}, + {FREQ_SET, 0, 1318}, {DELAY, 0, 240}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 140}, {FREQ_SET, 0, 0}, {DELAY, 0, 100}, - {FREQ_SET, 0, 987}, + {FREQ_SET, 0, 1174}, {DELAY, 0, 180}, {FREQ_SET, 0, 0}, {DELAY, 0, 60}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 160}, {FREQ_SET, 0, 0}, {DELAY, 0, 80}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 160}, {FREQ_SET, 0, 0}, {DELAY, 0, 80}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 180}, {FREQ_SET, 0, 0}, {DELAY, 0, 60}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 180}, {FREQ_SET, 0, 0}, {DELAY, 0, 20}, - {FREQ_SET, 4, 1000}, + {FREQ_SET, 4, 1108}, {DELAY, 0, 40}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 160}, {FREQ_SET, 0, 0}, {DELAY, 0, 80}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 160}, {FREQ_SET, 0, 0}, {DELAY, 0, 80}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 40}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 80}, {FREQ_SET, 0, 0}, {DELAY, 0, 40}, - {FREQ_SET, 0, 880}, + {FREQ_SET, 0, 1046}, {DELAY, 0, 200}, {FREQ_SET, 0, 0}, {FREQ_SET, 4, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 184}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 3, 73}, {DELAY, 0, 200}, {FREQ_SET, 3, 0}, {DELAY, 0, 140}, {FREQ_SET, 1, 0}, {DELAY, 0, 20}, - {FREQ_SET, 3, 123}, - {DELAY, 0, 120}, + {FREQ_SET, 3, 73}, + {DELAY, 0, 80}, /* LOOP */ {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_LOOP}, - {FREQ_SET, 1, 220}, + {DELAY, 0, 40}, + {FREQ_SET, 1, 261}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {FREQ_SET, 3, 0}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 55}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 160}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 80}, {FREQ_SET, 3, 0}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 80}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 55}, {DELAY, 0, 200}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 246}, + {FREQ_SET, 1, 293}, {DELAY, 0, 200}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 277}, + {FREQ_SET, 1, 329}, {DELAY, 0, 80}, {FREQ_SET, 3, 0}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 80}, - {FREQ_SET, 1, 277}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 1, 329}, + {FREQ_SET, 3, 58}, {DELAY, 0, 220}, {FREQ_SET, 3, 0}, {DELAY, 0, 100}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 3, 58}, {DELAY, 0, 120}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 100}, {FREQ_SET, 3, 0}, {DELAY, 0, 20}, {FREQ_SET, 1, 0}, {DELAY, 0, 120}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 65}, {DELAY, 0, 120}, {FREQ_SET, 1, 0}, {DELAY, 0, 120}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, {FREQ_SET, 3, 0}, {DELAY, 0, 20}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 65}, {DELAY, 0, 240}, - {FREQ_SET, 1, 293}, + {FREQ_SET, 1, 349}, {DELAY, 0, 300}, {FREQ_SET, 3, 0}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 120}, - {FREQ_SET, 1, 277}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 1, 329}, + {FREQ_SET, 3, 73}, {DELAY, 0, 200}, {FREQ_SET, 3, 0}, {DELAY, 0, 160}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 3, 73}, {DELAY, 0, 40}, {FREQ_SET, 1, 0}, - {DELAY, 0, 80}, - {FREQ_SET, 1, 220}, + {DELAY, 0, 40}, + /* HOOK */ + {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_START}, + {DELAY, 0, 40}, + {FREQ_SET, 1, 261}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {FREQ_SET, 3, 0}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 55}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 160}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 80}, {FREQ_SET, 3, 0}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 80}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 55}, {DELAY, 0, 200}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 246}, + {FREQ_SET, 1, 293}, {DELAY, 0, 240}, - {FREQ_SET, 1, 277}, + {FREQ_SET, 1, 329}, {DELAY, 0, 80}, {FREQ_SET, 3, 0}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 80}, - {FREQ_SET, 1, 277}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 1, 329}, + {FREQ_SET, 3, 58}, {DELAY, 0, 220}, {FREQ_SET, 3, 0}, {DELAY, 0, 100}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 3, 58}, {DELAY, 0, 120}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 100}, {FREQ_SET, 1, 0}, {FREQ_SET, 3, 0}, {DELAY, 0, 140}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 65}, {DELAY, 0, 120}, {FREQ_SET, 1, 0}, {DELAY, 0, 120}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 20}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 65}, {DELAY, 0, 240}, - {FREQ_SET, 1, 293}, + {FREQ_SET, 1, 349}, {DELAY, 0, 300}, {FREQ_SET, 3, 0}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 120}, - {FREQ_SET, 1, 277}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 1, 329}, + {FREQ_SET, 3, 73}, {DELAY, 0, 200}, {FREQ_SET, 3, 0}, {DELAY, 0, 160}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 3, 73}, {DELAY, 0, 40}, {FREQ_SET, 1, 0}, {DELAY, 0, 80}, - {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_START}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {FREQ_SET, 3, 0}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 55}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 160}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 80}, {FREQ_SET, 3, 0}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 80}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 55}, {DELAY, 0, 200}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 246}, + {FREQ_SET, 1, 293}, {DELAY, 0, 240}, - {FREQ_SET, 1, 277}, + {FREQ_SET, 1, 329}, {DELAY, 0, 80}, {FREQ_SET, 3, 0}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 80}, - {FREQ_SET, 1, 277}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 1, 329}, + {FREQ_SET, 3, 58}, {DELAY, 0, 220}, {FREQ_SET, 3, 0}, {DELAY, 0, 100}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 3, 58}, {DELAY, 0, 120}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 100}, {FREQ_SET, 1, 0}, {FREQ_SET, 3, 0}, {DELAY, 0, 140}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 65}, {DELAY, 0, 120}, {FREQ_SET, 1, 0}, {DELAY, 0, 120}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 20}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 65}, {DELAY, 0, 240}, - {FREQ_SET, 1, 293}, + {FREQ_SET, 1, 349}, {DELAY, 0, 300}, {FREQ_SET, 3, 0}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 120}, - {FREQ_SET, 1, 277}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 1, 329}, + {FREQ_SET, 3, 73}, {DELAY, 0, 200}, {FREQ_SET, 3, 0}, {DELAY, 0, 160}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 3, 73}, {DELAY, 0, 40}, {FREQ_SET, 1, 0}, - {DELAY, 0, 80}, - {FREQ_SET, 1, 220}, + {DELAY, 0, 40}, + /* HOOKEND */ + {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_END}, + {DELAY, 0, 40}, + {FREQ_SET, 1, 261}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {FREQ_SET, 3, 0}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 55}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 160}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 80}, {FREQ_SET, 3, 0}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 80}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 55}, {DELAY, 0, 200}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 246}, + {FREQ_SET, 1, 293}, {DELAY, 0, 240}, - {FREQ_SET, 1, 277}, + {FREQ_SET, 1, 329}, {DELAY, 0, 80}, {FREQ_SET, 3, 0}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 80}, - {FREQ_SET, 1, 277}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 1, 329}, + {FREQ_SET, 3, 58}, {DELAY, 0, 220}, {FREQ_SET, 3, 0}, {DELAY, 0, 100}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 3, 58}, {DELAY, 0, 120}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 100}, {FREQ_SET, 1, 0}, {FREQ_SET, 3, 0}, {DELAY, 0, 140}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 65}, {DELAY, 0, 120}, {FREQ_SET, 1, 0}, {DELAY, 0, 120}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 20}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 220}, + {FREQ_SET, 1, 261}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 220}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 3, 65}, {DELAY, 0, 240}, - {FREQ_SET, 1, 293}, + {FREQ_SET, 1, 349}, {DELAY, 0, 300}, {FREQ_SET, 3, 0}, {DELAY, 0, 180}, - {FREQ_SET, 1, 277}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 1, 329}, + {FREQ_SET, 3, 73}, {DELAY, 0, 200}, {FREQ_SET, 3, 0}, {DELAY, 0, 160}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 3, 73}, {DELAY, 0, 80}, {FREQ_SET, 1, 0}, {DELAY, 0, 160}, {FREQ_SET, 3, 0}, {DELAY, 0, 120}, - {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_END}, - {FREQ_SET, 2, 554}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 2, 329}, + {FREQ_SET, 3, 55}, {DELAY, 0, 80}, {FREQ_SET, 2, 0}, {DELAY, 0, 160}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 80}, {FREQ_SET, 2, 0}, {FREQ_SET, 3, 0}, {DELAY, 0, 160}, - {FREQ_SET, 2, 554}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 2, 329}, + {FREQ_SET, 3, 55}, {DELAY, 0, 100}, {FREQ_SET, 2, 0}, {DELAY, 0, 140}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 240}, - {FREQ_SET, 2, 493}, + {FREQ_SET, 2, 293}, {DELAY, 0, 80}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, - {FREQ_SET, 2, 587}, + {FREQ_SET, 2, 349}, {DELAY, 0, 120}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 3, 58}, {DELAY, 0, 200}, {FREQ_SET, 2, 0}, {DELAY, 0, 20}, {FREQ_SET, 3, 0}, {DELAY, 0, 20}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 120}, {FREQ_SET, 2, 0}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 3, 58}, {DELAY, 0, 120}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 40}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, {FREQ_SET, 3, 0}, {DELAY, 0, 20}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 3, 65}, {DELAY, 0, 140}, {FREQ_SET, 1, 0}, {DELAY, 0, 100}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, {FREQ_SET, 3, 0}, {DELAY, 0, 20}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 3, 65}, {DELAY, 0, 140}, {FREQ_SET, 1, 0}, {DELAY, 0, 100}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 3, 0}, {DELAY, 0, 140}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 3, 73}, {DELAY, 0, 200}, {FREQ_SET, 3, 0}, {DELAY, 0, 160}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 3, 73}, {DELAY, 0, 80}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 80}, {FREQ_SET, 2, 0}, {DELAY, 0, 40}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 40}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, {FREQ_SET, 2, 0}, {DELAY, 0, 40}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 40}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 3, 55}, {DELAY, 0, 40}, {FREQ_SET, 2, 0}, {DELAY, 0, 200}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 80}, {FREQ_SET, 2, 0}, {FREQ_SET, 3, 0}, {DELAY, 0, 160}, - {FREQ_SET, 2, 554}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 2, 329}, + {FREQ_SET, 3, 55}, {DELAY, 0, 100}, {FREQ_SET, 2, 0}, {DELAY, 0, 140}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 240}, - {FREQ_SET, 2, 493}, + {FREQ_SET, 2, 293}, {DELAY, 0, 80}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, - {FREQ_SET, 2, 587}, + {FREQ_SET, 2, 349}, {DELAY, 0, 120}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 3, 58}, {DELAY, 0, 220}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, {FREQ_SET, 2, 0}, {DELAY, 0, 20}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 80}, {FREQ_SET, 2, 0}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 3, 58}, {DELAY, 0, 120}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 40}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, {FREQ_SET, 3, 0}, {DELAY, 0, 20}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 3, 65}, {DELAY, 0, 160}, {FREQ_SET, 1, 0}, {DELAY, 0, 80}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 20}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 3, 65}, {DELAY, 0, 140}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 4, 1000}, + {FREQ_SET, 4, 1108}, {DELAY, 0, 40}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 3, 0}, {DELAY, 0, 140}, {FREQ_SET, 1, 0}, {FREQ_SET, 4, 0}, {DELAY, 0, 40}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 3, 73}, {DELAY, 0, 200}, {FREQ_SET, 3, 0}, {DELAY, 0, 160}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 3, 73}, {DELAY, 0, 240}, - {FREQ_SET, 2, 493}, + {FREQ_SET, 2, 293}, {FREQ_SET, 3, 0}, {DELAY, 0, 80}, {FREQ_SET, 2, 0}, {DELAY, 0, 40}, - {FREQ_SET, 2, 554}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 2, 329}, + {FREQ_SET, 3, 55}, {DELAY, 0, 80}, {FREQ_SET, 2, 0}, {DELAY, 0, 160}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 80}, {FREQ_SET, 2, 0}, {FREQ_SET, 3, 0}, {DELAY, 0, 160}, - {FREQ_SET, 2, 554}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 2, 329}, + {FREQ_SET, 3, 55}, {DELAY, 0, 100}, {FREQ_SET, 2, 0}, {DELAY, 0, 140}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 240}, - {FREQ_SET, 2, 493}, + {FREQ_SET, 2, 293}, {DELAY, 0, 80}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, - {FREQ_SET, 2, 587}, + {FREQ_SET, 2, 349}, {DELAY, 0, 120}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 3, 58}, {DELAY, 0, 220}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, {FREQ_SET, 2, 0}, {DELAY, 0, 20}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 80}, {FREQ_SET, 2, 0}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 3, 58}, {DELAY, 0, 120}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 40}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, {FREQ_SET, 3, 0}, {DELAY, 0, 20}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 3, 65}, {DELAY, 0, 160}, {FREQ_SET, 1, 0}, {DELAY, 0, 80}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, {FREQ_SET, 3, 0}, {DELAY, 0, 20}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 3, 65}, {DELAY, 0, 140}, {FREQ_SET, 1, 0}, {DELAY, 0, 100}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 3, 0}, {DELAY, 0, 140}, {FREQ_SET, 1, 0}, {DELAY, 0, 40}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 3, 73}, {DELAY, 0, 200}, {FREQ_SET, 3, 0}, {DELAY, 0, 160}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 3, 73}, {DELAY, 0, 240}, {FREQ_SET, 3, 0}, {DELAY, 0, 120}, - {FREQ_SET, 2, 554}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 2, 329}, + {FREQ_SET, 3, 55}, {DELAY, 0, 80}, {FREQ_SET, 2, 0}, {DELAY, 0, 160}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 80}, {FREQ_SET, 2, 0}, {FREQ_SET, 3, 0}, {DELAY, 0, 160}, - {FREQ_SET, 2, 554}, - {FREQ_SET, 3, 92}, + {FREQ_SET, 2, 329}, + {FREQ_SET, 3, 55}, {DELAY, 0, 100}, {FREQ_SET, 2, 0}, {DELAY, 0, 140}, - {FREQ_SET, 2, 554}, + {FREQ_SET, 2, 329}, {DELAY, 0, 240}, - {FREQ_SET, 2, 493}, + {FREQ_SET, 2, 293}, {DELAY, 0, 80}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, - {FREQ_SET, 2, 587}, + {FREQ_SET, 2, 349}, {DELAY, 0, 120}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 3, 58}, {DELAY, 0, 220}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, {FREQ_SET, 2, 0}, {DELAY, 0, 100}, - {FREQ_SET, 3, 97}, + {FREQ_SET, 3, 58}, {DELAY, 0, 120}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 40}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, {FREQ_SET, 3, 0}, {DELAY, 0, 20}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 3, 65}, {DELAY, 0, 160}, {FREQ_SET, 1, 0}, {DELAY, 0, 80}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 20}, {FREQ_SET, 3, 0}, {DELAY, 0, 40}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, - {FREQ_SET, 3, 110}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 3, 65}, {DELAY, 0, 140}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 4, 1000}, + {FREQ_SET, 4, 1108}, {DELAY, 0, 40}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 1, 0}, {DELAY, 0, 60}, - {FREQ_SET, 1, 184}, + {FREQ_SET, 1, 220}, {DELAY, 0, 60}, {FREQ_SET, 3, 0}, {DELAY, 0, 140}, {FREQ_SET, 1, 0}, {FREQ_SET, 4, 0}, {DELAY, 0, 40}, - {FREQ_SET, 3, 123}, + {FREQ_SET, 3, 73}, {DELAY, 0, 200}, {FREQ_SET, 3, 0}, - {DELAY, 0, 160}, }; diff --git a/src/music/024_in_the_80s.cpp b/src/music/024_in_the_80s.cpp index 79fc0ba..9c55858 100644 --- a/src/music/024_in_the_80s.cpp +++ b/src/music/024_in_the_80s.cpp @@ -9,290 +9,288 @@ extern "C" const POMFHeader POMF_HEAD = { extern "C" const melody_item_t POMF_TUNE[] = { {DUTY_SET, 0, 4}, + {FREQ_SET, 0, 622}, {DUTY_SET, 1, 6}, - {FREQ_SET, 1, 65}, + {FREQ_SET, 1, 78}, {DUTY_SET, 2, 12}, {DUTY_SET, 3, 4}, - {FREQ_SET, 4, 1244}, - {FREQ_SET, 0, 523}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, - {DELAY, 0, 79}, - {DELAY, 0, 119}, + {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, - {FREQ_SET, 1, 65}, + {FREQ_SET, 1, 78}, {DELAY, 0, 119}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 79}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, - {FREQ_SET, 1, 65}, - {DELAY, 0, 119}, {FREQ_SET, 0, 0}, - {DELAY, 0, 119}, - {FREQ_SET, 1, 65}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 1, 78}, + {DELAY, 0, 238}, + {FREQ_SET, 1, 78}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 238}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, - {FREQ_SET, 0, 466}, - {FREQ_SET, 1, 73}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 87}, {DELAY, 0, 119}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 119}, - {FREQ_SET, 0, 622}, - {FREQ_SET, 1, 77}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 1, 92}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, - {FREQ_SET, 1, 77}, + {FREQ_SET, 1, 92}, {DELAY, 0, 119}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 79}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, {FREQ_SET, 0, 0}, - {FREQ_SET, 1, 77}, + {FREQ_SET, 1, 92}, {DELAY, 0, 238}, - {FREQ_SET, 1, 77}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 1, 92}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 238}, - {FREQ_SET, 0, 523}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 0, 622}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 79}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 119}, - {FREQ_SET, 0, 622}, - {FREQ_SET, 1, 116}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 1, 138}, {DELAY, 0, 119}, - {FREQ_SET, 0, 523}, - {FREQ_SET, 1, 82}, + {FREQ_SET, 0, 622}, + {FREQ_SET, 1, 98}, {DELAY, 0, 119}, - {FREQ_SET, 0, 783}, - {FREQ_SET, 1, 103}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 0, 932}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, - {FREQ_SET, 1, 103}, + {FREQ_SET, 1, 123}, {DELAY, 0, 119}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 79}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, {FREQ_SET, 0, 0}, - {FREQ_SET, 1, 103}, + {FREQ_SET, 1, 123}, {DELAY, 0, 238}, - {FREQ_SET, 1, 103}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 238}, - {FREQ_SET, 0, 932}, - {FREQ_SET, 1, 116}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 0, 1108}, + {FREQ_SET, 1, 138}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 436}, - {FREQ_SET, 0, 783}, - {FREQ_SET, 1, 97}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 0, 932}, + {FREQ_SET, 1, 116}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, - {FREQ_SET, 1, 97}, + {FREQ_SET, 1, 116}, {DELAY, 0, 119}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 79}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, {FREQ_SET, 0, 0}, - {FREQ_SET, 1, 97}, + {FREQ_SET, 1, 116}, {DELAY, 0, 119}, - {FREQ_SET, 1, 97}, + {FREQ_SET, 1, 116}, {DELAY, 0, 119}, - {FREQ_SET, 1, 97}, - {FREQ_SET, 2, 523}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 1, 116}, + {FREQ_SET, 2, 622}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, - {FREQ_SET, 1, 77}, + {FREQ_SET, 1, 92}, {DELAY, 0, 238}, - {FREQ_SET, 1, 77}, - {FREQ_SET, 2, 523}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 1, 92}, + {FREQ_SET, 2, 622}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 238}, - {FREQ_SET, 0, 523}, - {FREQ_SET, 1, 65}, + {FREQ_SET, 0, 622}, + {FREQ_SET, 1, 78}, {FREQ_SET, 2, 0}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, - {FREQ_SET, 1, 65}, + {FREQ_SET, 1, 78}, {DELAY, 0, 119}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 79}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, {FREQ_SET, 0, 0}, - {FREQ_SET, 1, 65}, + {FREQ_SET, 1, 78}, {DELAY, 0, 238}, - {FREQ_SET, 1, 65}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 1, 78}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 238}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, - {FREQ_SET, 0, 466}, - {FREQ_SET, 1, 73}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 87}, {DELAY, 0, 119}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 119}, - {FREQ_SET, 0, 622}, - {FREQ_SET, 1, 77}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 1, 92}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, - {FREQ_SET, 1, 77}, + {FREQ_SET, 1, 92}, {DELAY, 0, 119}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 79}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, {FREQ_SET, 0, 0}, - {FREQ_SET, 1, 77}, + {FREQ_SET, 1, 92}, {DELAY, 0, 238}, - {FREQ_SET, 1, 77}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 1, 92}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 238}, - {FREQ_SET, 0, 523}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 0, 622}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 79}, - {FREQ_SET, 0, 698}, + {FREQ_SET, 0, 830}, {DELAY, 0, 119}, - {FREQ_SET, 0, 622}, - {FREQ_SET, 1, 116}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 1, 138}, {DELAY, 0, 119}, - {FREQ_SET, 0, 523}, - {FREQ_SET, 1, 82}, + {FREQ_SET, 0, 622}, + {FREQ_SET, 1, 98}, {DELAY, 0, 119}, - {FREQ_SET, 0, 783}, - {FREQ_SET, 1, 103}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 0, 932}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, - {FREQ_SET, 1, 103}, + {FREQ_SET, 1, 123}, {DELAY, 0, 119}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 79}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, {FREQ_SET, 0, 0}, - {FREQ_SET, 1, 103}, + {FREQ_SET, 1, 123}, {DELAY, 0, 238}, - {FREQ_SET, 1, 103}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 238}, - {FREQ_SET, 0, 932}, - {FREQ_SET, 1, 116}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 0, 1108}, + {FREQ_SET, 1, 138}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 436}, - {FREQ_SET, 0, 783}, - {FREQ_SET, 1, 97}, - {FREQ_SET, 4, 1244}, + {FREQ_SET, 0, 932}, + {FREQ_SET, 1, 116}, + {FREQ_SET, 4, 1480}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 198}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, - {FREQ_SET, 1, 97}, + {FREQ_SET, 1, 116}, {DELAY, 0, 119}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 39}, {FREQ_SET, 4, 0}, {DELAY, 0, 79}, {FREQ_SET, 1, 0}, {DELAY, 0, 119}, {FREQ_SET, 0, 0}, - {FREQ_SET, 1, 97}, + {FREQ_SET, 1, 116}, {DELAY, 0, 119}, - {FREQ_SET, 1, 97}, + {FREQ_SET, 1, 116}, {DELAY, 0, 119}, {FREQ_SET, 1, 0}, - {FREQ_SET, 2, 523}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 2, 622}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 158}, {FREQ_SET, 4, 0}, {DELAY, 0, 317}, - {FREQ_SET, 2, 523}, - {FREQ_SET, 4, 1567}, + {FREQ_SET, 2, 622}, + {FREQ_SET, 4, 1864}, {DELAY, 0, 158}, {FREQ_SET, 4, 0}, {DELAY, 0, 317}, diff --git a/src/sound/generators.cpp b/src/sound/generators.cpp index 4bec1b3..3e553b9 100644 --- a/src/sound/generators.cpp +++ b/src/sound/generators.cpp @@ -202,8 +202,8 @@ void Sampler::set_parameter(Parameter p, int v) { frequency = v; // since the sample rate of the snippet is always lower than that of WaveOut // we can only care about the stretch factor - stretch_factor = (WaveOut::BAUD_RATE / waveform->sample_rate) * waveform->root_frequency / v; - ESP_LOGV("SAMP", "New stretch = %i, skip = %i", stretch_factor, skip_factor); + stretch_factor = std::max(1, (WaveOut::BAUD_RATE / waveform->sample_rate) * waveform->root_frequency / v); + ESP_LOGV("SAMP", "New stretch = %i", stretch_factor); active = true; rewind(); } diff --git a/src/sound/yukkuri.cpp b/src/sound/yukkuri.cpp index 332bc1f..6e86270 100644 --- a/src/sound/yukkuri.cpp +++ b/src/sound/yukkuri.cpp @@ -3,14 +3,10 @@ static char LOG_TAG[] = "AQTK"; -static SemaphoreHandle_t aqtkSemaphore = NULL; - Yukkuri::Yukkuri(const char * license, uint16_t frame_length) { #if HAS(AQUESTALK) - if(aqtkSemaphore == NULL) { - aqtkSemaphore = xSemaphoreCreateBinary(); - xSemaphoreGive(aqtkSemaphore); - } + aqtkSemaphore = xSemaphoreCreateBinary(); + xSemaphoreGive(aqtkSemaphore); uint8_t mac[6]; esp_efuse_mac_get_default(mac); ESP_LOGI(LOG_TAG, "MAC = %02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); From 36ec2acd344c268533e3a81b68b675546a40e320 Mon Sep 17 00:00:00 2001 From: akasaka Date: Mon, 30 Sep 2024 20:31:09 +0900 Subject: [PATCH 03/21] add intra-frame strobing into WS0010 driver --- include/display/ws0010.h | 1 + src/display/ws0010.cpp | 11 +++++++++-- src/sound/sequencer.cpp | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/display/ws0010.h b/include/display/ws0010.h index c72df49..f5513c9 100644 --- a/include/display/ws0010.h +++ b/include/display/ws0010.h @@ -40,6 +40,7 @@ class Ws0010OledDriver: public DisplayDriver { gpio_num_t rs_gpio; gpio_num_t en_gpio; bool is_writing_ddram; + bool show_state; uint8_t ddram_ptr; inline void set_databus(uint8_t data); diff --git a/src/display/ws0010.cpp b/src/display/ws0010.cpp index aec1805..8ce505f 100644 --- a/src/display/ws0010.cpp +++ b/src/display/ws0010.cpp @@ -120,10 +120,11 @@ void Ws0010OledDriver::reset() { void Ws0010OledDriver::set_show(bool show) { taskENTER_CRITICAL(&_spinlock); + show_state = show; set_is_command(true); set_databus(0b00001000 | (show ? 0b111 : 0)); // cursor and blink always off pulse_clock(); - delayMicroseconds(400); + delayMicroseconds(10); taskEXIT_CRITICAL(&_spinlock); } @@ -161,8 +162,11 @@ void Ws0010OledDriver::write_stride(uint8_t stride) { void Ws0010OledDriver::write_fanta(const uint8_t * strides, size_t count) { taskENTER_CRITICAL(&_spinlock); +#ifndef WS0010_NO_BFI + bool show_backup = show_state; + set_show(false); +#endif // First write even (top row), then odd (bottom row) - for(int i = 0; i < count - 1; i += 2) { if(i >= 200) continue; // TODO: support physical screen resolutions write_stride(strides[i]); @@ -171,6 +175,9 @@ void Ws0010OledDriver::write_fanta(const uint8_t * strides, size_t count) { if(i >= 200) continue; // TODO: support physical screen resolutions write_stride(strides[i]); } +#ifndef WS0010_NO_BFI + set_show(show_backup); +#endif taskEXIT_CRITICAL(&_spinlock); } diff --git a/src/sound/sequencer.cpp b/src/sound/sequencer.cpp index 2aaa039..f7800b3 100644 --- a/src/sound/sequencer.cpp +++ b/src/sound/sequencer.cpp @@ -240,6 +240,8 @@ void NewSequencer::find_hook() { } void NewSequencer::process_steps_until_delay() { + if(num_rows == 0) return; + if(pointer >= num_rows) { if(end_of_song()) return; } From 1bccaf919df2196217469bac8eef400898a4d09d Mon Sep 17 00:00:00 2001 From: akasaka Date: Mon, 30 Sep 2024 23:39:11 +0900 Subject: [PATCH 04/21] Add Owl City - Fireflies --- README.md | 5 + data/music/035_fireflies.pomf | Bin 0 -> 1488 bytes helper/chimes/fireflies.mid | Bin 0 -> 5975 bytes src/music/035_fireflies.cpp | 1829 +++++++++++++++++++++++++++++++++ 4 files changed, 1834 insertions(+) create mode 100644 data/music/035_fireflies.pomf create mode 100644 helper/chimes/fireflies.mid create mode 100644 src/music/035_fireflies.cpp diff --git a/README.md b/README.md index 8c0bf5a..3e070f4 100644 --- a/README.md +++ b/README.md @@ -136,9 +136,14 @@ You can also read the quest I went through trying to get it to run "in real time * [Roxette — Stars](https://www.youtube.com/watch?v=uzZRdjXd2qw): [MIDI](helper/chimes/stars.mid), [MP3 Recording](docs/rec/stars.mp3) * [HIRO — Space Harrier](https://datadiscs.bandcamp.com/track/main-theme): [MIDI](helper/chimes/space_harrier.mid) (scale altered for 1-bit output range) * [A-ha — Take On Me](https://www.youtube.com/watch?v=djV11Xbc914): [MIDI](helper/chimes/takeonme.mid) +* [Ennio Morricone - My Name Is Nobody](https://www.youtube.com/watch?v=srSpyXwz-MQ): [MIDI](helper/chimes/mynameisnobody.mid) +* [PPK - ResuRection (ППК - Воскрешение)](https://www.youtube.com/watch?v=KvOR2E_hZsw): [MIDI](helper/chimes/ppk.mid) +* [Owl City - Fireflies](https://www.youtube.com/watch?v=psuRGfAaju4): [MIDI](helper/chimes/fireflies.mid) ## Creating your own melodies +All melodies and their samples are stored in a simple format called Portable Music Format, or PoMF :3c for short. The format is described in it's [header](include/sound/pomf.h), and all of the PoMF files are generated by the compiler from the [music](src/music) folder using [Elf2Pomf](helper/elf2pomf.py). + There is a MIDI to sequencer conversion tool (supports note events in one track only, track end event, and comment event): [midi_to_chime](helper/midi_to_chime.py) 8 bit 8 kHz wave to RLE sample conversion tool (not even reading the header, so very jank): [pwm.py](helper/pwm.py) diff --git a/data/music/035_fireflies.pomf b/data/music/035_fireflies.pomf new file mode 100644 index 0000000000000000000000000000000000000000..4eb130022add2f7e2e2321047ff60c515ae5a7e8 GIT binary patch literal 1488 zcmajX`8yK~0KoArN1~By>Osa5xyn&V&4_KGY-SXu^1hiiV$Envjih+yK62C8)Xddk zs42&bXgQ13JL8RrCZhMk-FLx*OwI7@^jexHE6(^+yQI?-IIi`B>=*8IU zYc%JZJ`dS3ci(>b{IQ_%^54lwgTX^C4@XzD`m~oT#e$}ZS<6+4gk)rV#6O*JxWYm- zziPK$3Yk`R{S>U1&PvPf4{VgEey?6&t9$*dTx*|AXuKe_6m^9@M$C6;!UGEZLVL_= z7Te1@e|t%43AA;OgH7w3;5uYU%P+nBPY8PoeI>$+l?}CWLS2ZAAYFQKZ?_mbCXsfE zL!U{Zk8ETNpBu7qOM8JiGd}UVL_nEDp;J5N*I+ejQ>s(=2t22T|Ci&|WZ)f-^KZGP z#AxC>ZS+z2PWD&$?aTL182WlYB@TgGIx?qxe?(Xu<@z=BB*%FU3I5P_g~q;lB-z}+ z%pO2pwgpC!GyNA*%(<`%my+bo?iF{()&1tTKFm9paN~b(BkdKNWvr9U`|;-t4`4W% z#uZ0U1D@n_JUhOC4_k>=0#t4nQ`(M)oWp@wez>9mPc%w)b)p@0ELV`Tt?1wx8Ovaj z>+dU#r#54vEG*U9-yi*K@Vc`=4jk>a8#_Ln@S4LQ0<(@m6^GIKs4w_KucA;PX&L5+ zy94|cI<*LUF<+BXHKg3J_>lH&GJWK!-rB z=n=0u)uOcC0Qm#u@PIx1V9S;e$DjRagJ^I`mM@1cPnElQ&s_^rVq{^hAyPxf{N9C3`HkO^zMz; zg39ToMa~sgdheCoM3v&mq?3=sd_)r=z$+nwg zgodT{FdyX!`p!h!T$hz~swy{9sit@qPr0G7V>wXQ@z$``G5Mx_8Sgzan^NKp<~i?k zxabup{6^*jcrw9F1rj@lL&M-Bt?J(Qp6H?GlDxsLR`m|#w1T>p5T>iUP&TZjBIK;Q zj_Wt<5hkwl_AfDJrHx><{ExmlC}Y@R2Y%pz5LynVSqXM=vkxbhE_KF z&`ys23x{oP-q-rD-%j+J`?b&{1@uWR+}DATl+rvJfYhLzLMIJkA_GFpZHh?!obG1Tq3sjc}l{`rYe?xZxxpomCZfcp;TqTfJ{8w+2y}hfJ^DeaAA( zX~SBF;bO0&8DwID&QK6%zb{;`F%JKvWrnm<0kgNNJTMxkyRd9Ol*RZmd~c6K^~`Y- c_tt?SK{LE5?=fpMF+7F-2s9G%9}{M`mjD0& literal 0 HcmV?d00001 diff --git a/helper/chimes/fireflies.mid b/helper/chimes/fireflies.mid new file mode 100644 index 0000000000000000000000000000000000000000..72b88f26f5459165c7b71731c9404a6de399fd5d GIT binary patch literal 5975 zcmeHL%}-lL5T6)I(~1_gu`DE_l@*~_)E~8Q5CpBTEU1M-DGiB3wU?n12clk3dwEwI z)MEwxxFYp0XxjdHJ<#9Iyj?%rKxt7)B5`?dJ)ggsoi{t{&FA}jL^MHn=p#xtpMU!e zepTsgjOgs?*!z`FPU&o7{PV4?FJ-a5wYBlStfeI<_S@aO{BEhw8=EtG>IB)8bPwfrbVQ5U1udLY$`$Cvavx+*I8>KY1DgG zvd*R+w6b2Z*c9ywn-!u3HVZ^q3>TqYW3xuI%4Rj-SML?Jz^oWlSECTFQHpYvK8iMj z(~RQGQm%sYHmh0#*{r_GP2Lu4_$+PBHLqGizn^I_suZuFzWz>i7`gpwZ}_D>ulD;nYzRVloB~db~naY5rD^VEMvrma@dvC93K{+-BGI5G){Uu-zb|>o!}^ z+nls%z>XZRR>lB~H`V5#oi(-?5`qPcKxz{J?dEybu8c}k5-s>xJVq{G=b zwvB&4zvu4$uy)d5i)n10oqW&^6Wb`I&fNoyQ8l(;*V$p+UmLJV#w2{P||HxnHD?9YqwVJDm#o{S(~GD zwbn!kP3l!t`zEod$5plwX+YH5Z<s>Rz9tdC^)MjjhGK4_iK+NL89PJ+3SmG8}gg zz*#}47-cP9F_~K2O?F6ifTEMPr>I2*YWJ`On56qYbb?IHr9!e#iuQ7&VW&OvbfbcQ z-F$x|5TT>{>NM=8uL^ao9s=Df08BvwMiGy@69gS{sM%_B-GVp4(cuzXbS8D8NeOn;p;W5)8L0bgRDK=u)Bh4ICszth-CRGY z-hONfx$o!?-xPikljO~2kagYPK{y8Eb434vn|-O?65AegW4RL!klLqFqB

Y!PR{DpLL&0V#6|PpOD)YP58=mxiyU1pdR1#X}+mV}`O5$*@ zHi8|suQtU_ddJdR!bR4ugG!JX#e69$Q)d*Ezpz?T-6j*D!sA~ZY4$s7TLaHJM`l?Eqr zawKwcz(rE#1SrL+s_Qca5N&v&5+^0fmR^N|`AXhq*+hi_ zZ}J1)k|J`cjue^xS)zkR>{oYAPwD3uJoSQJZu8VOb-%u$*GqN!jHjN_+qM4w@eWVz zAXER_>+tCgn;mj-mvZ~3^h<|Lhparik2-8Slw?R?fTB+)bjom31(PAEB^6aV6rzc9 zl>gD2>yWAqdrLYfMR6S+Ar!2^h*;s;>kW~HFb#39rw~(iAs8^yhzf)70ru#t4i86+ m6h%_B4%rxF +extern "C" const POMFHeader POMF_HEAD = { + POMF_MAGIC_FILE, + POMF_CURVER, + "Fireflies", + "Owl City - Fireflies", +}; + +extern "C" const melody_item_t POMF_TUNE[] = { + {DUTY_SET, 0, 6}, + {DUTY_SET, 1, 8}, + {DUTY_SET, 2, 8}, + {DUTY_SET, 3, 12}, + {DELAY, 0, 66}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 99}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 1108}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 1108}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 554}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 329}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 740}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {DELAY, 0, 333}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 293}, + {FREQ_SET, 2, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 277}, + {FREQ_SET, 2, 138}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 1108}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 2, 110}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 293}, + {FREQ_SET, 2, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 277}, + {FREQ_SET, 2, 138}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 2, 110}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 2, 123}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 2, 110}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 2, 123}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 293}, + {FREQ_SET, 2, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 329}, + {FREQ_SET, 2, 165}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 1108}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 554}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 329}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 2, 110}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 2, 110}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 370}, + {FREQ_SET, 2, 185}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 329}, + {FREQ_SET, 2, 165}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 740}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 293}, + {FREQ_SET, 2, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {DELAY, 0, 333}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + /* LOOP */ + {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_LOOP}, + {DUTY_SET, 0, 12}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 277}, + {FREQ_SET, 3, 55}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 66}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 16}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 1108}, + {FREQ_SET, 1, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 293}, + {FREQ_SET, 3, 55}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 2, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 277}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 3, 73}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 1, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 247}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 2, 392}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 370}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 2, 277}, + {FREQ_SET, 3, 55}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 740}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 1108}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 2, 293}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 329}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 2, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 2, 277}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 740}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 3, 73}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 329}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 3, 147}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 2, 293}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 2, 247}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 2, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {FREQ_SET, 2, 247}, + {FREQ_SET, 3, 73}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 2, 220}, + {FREQ_SET, 3, 61}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 2, 247}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 2, 277}, + {FREQ_SET, 3, 55}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 1108}, + {FREQ_SET, 1, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 293}, + {FREQ_SET, 3, 55}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 2, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 277}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 3, 73}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 1, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 247}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 2, 392}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 370}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 61}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 2, 277}, + {FREQ_SET, 3, 55}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 740}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 1108}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 2, 293}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 329}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 2, 329}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 2, 370}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 740}, + {FREQ_SET, 3, 73}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 329}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 2, 293}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 249}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 2, 247}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 2, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 2, 247}, + {FREQ_SET, 2, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 196}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + /* HOOK */ + {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_START}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 740}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 4, 1864}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 880}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 2, 185}, + {FREQ_SET, 3, 61}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 740}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 4, 1864}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 2, 220}, + {FREQ_SET, 3, 55}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 4, 1864}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 277}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 4, 1864}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 554}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 4, 1864}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 185}, + {FREQ_SET, 3, 73}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 4, 1864}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 554}, + {FREQ_SET, 2, 220}, + {FREQ_SET, 3, 46}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 4, 1864}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 4, 1864}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 4, 1864}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 740}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 185}, + {FREQ_SET, 3, 73}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 4, 1864}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 1, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 2, 220}, + {FREQ_SET, 3, 55}, + {FREQ_SET, 4, 1864}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 2, 247}, + {FREQ_SET, 3, 61}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 277}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 4, 1864}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 49}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 4, 1864}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 740}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 185}, + {FREQ_SET, 3, 73}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 4, 1864}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {FREQ_SET, 2, 220}, + {FREQ_SET, 3, 55}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 293}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 4, 1864}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 277}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 0, 277}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 740}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 147}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 247}, + {FREQ_SET, 3, 61}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 333}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 392}, + {DUTY_SET, 0, 8}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 49}, + {DELAY, 0, 333}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 392}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 392}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 1174}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + /* HOOKEND */ + {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_END}, + {FREQ_SET, 0, 554}, + {DUTY_SET, 0, 12}, + {FREQ_SET, 2, 220}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 249}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 147}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 185}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 249}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 392}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 249}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 440}, + {DUTY_SET, 1, 4}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 1174}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 2, 220}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 249}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 16}, + {DUTY_SET, 1, 8}, + {DELAY, 0, 149}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 165}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 1, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 1, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 220}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 147}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 185}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 3, 293}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 1, 740}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 147}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 249}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 440}, + {DUTY_SET, 1, 4}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 333}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 392}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 3, 147}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 1174}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 2, 293}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 249}, + {FREQ_SET, 0, 1318}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 3, 123}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 16}, + {DUTY_SET, 1, 8}, + {DELAY, 0, 316}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 277}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 333}, + {FREQ_SET, 1, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 220}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 554}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 147}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 185}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 249}, + {FREQ_SET, 0, 440}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 392}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 249}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 249}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 440}, + {DUTY_SET, 1, 4}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 494}, + {DELAY, 0, 166}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 1174}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 494}, + {FREQ_SET, 2, 220}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 249}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 16}, + {DUTY_SET, 1, 8}, + {DELAY, 0, 149}, + {FREQ_SET, 3, 123}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 440}, + {FREQ_SET, 2, 165}, + {FREQ_SET, 3, 110}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 1, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 1, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 220}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 1, 659}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 587}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 147}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 440}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 659}, + {FREQ_SET, 2, 185}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 83}, + {FREQ_SET, 3, 220}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 1, 740}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 587}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 147}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 333}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 333}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 1166}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 4, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 196}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 220}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 166}, + {FREQ_SET, 3, 0}, +}; From d1b3e43c343b5318ae2e670c27c80e9cd871d7ab Mon Sep 17 00:00:00 2001 From: akasaka Date: Mon, 30 Sep 2024 23:46:28 +0900 Subject: [PATCH 05/21] Add fireworks to the madness screen --- include/app/musicbox.h | 2 ++ include/views/overlays/fireworks.h | 1 + src/app/musicbox.cpp | 6 ++++++ 3 files changed, 9 insertions(+) diff --git a/include/app/musicbox.h b/include/app/musicbox.h index 8b6fe5c..d95529b 100644 --- a/include/app/musicbox.h +++ b/include/app/musicbox.h @@ -1,4 +1,5 @@ #pragma once +#include #include #include #include @@ -18,6 +19,7 @@ class AppShimMusicbox : public WeatherChartCommon { NewSequencer * seq; RainOverlay * rain; ThunderOverlay * thunder; + FireworksOverlay * fireworks; int decay = 2; int rise = 4; int min_freq = 250; diff --git a/include/views/overlays/fireworks.h b/include/views/overlays/fireworks.h index c9be78b..0e7fa23 100644 --- a/include/views/overlays/fireworks.h +++ b/include/views/overlays/fireworks.h @@ -1,5 +1,6 @@ #pragma once #include +#include class FireworksOverlay: public Renderable { public: diff --git a/src/app/musicbox.cpp b/src/app/musicbox.cpp index 8c568d7..03ddcb0 100644 --- a/src/app/musicbox.cpp +++ b/src/app/musicbox.cpp @@ -9,11 +9,13 @@ AppShimMusicbox::AppShimMusicbox(NewSequencer * s): rain { new RainOverlay(DisplayFramebuffer::width, DisplayFramebuffer::height) }, thunder { new ThunderOverlay(DisplayFramebuffer::width, DisplayFramebuffer::height) }, + fireworks { new FireworksOverlay(nullptr) }, seq { s }, WeatherChartCommon() { add_subrenderable(rain); add_subrenderable(thunder); + add_subrenderable(fireworks); rain->set_intensity(0); rain->set_gravity(2, true); @@ -21,6 +23,9 @@ AppShimMusicbox::AppShimMusicbox(NewSequencer * s): thunder->set_active(false); + fireworks->set_active(false); + fireworks->intense = true; + show_minimum = false; show_maximum = false; for(int i = 0; i < DisplayFramebuffer::width; i++) { @@ -58,6 +63,7 @@ void AppShimMusicbox::step() { } } + fireworks->set_active(thunder_decision > 10); thunder->set_active(thunder_decision > 8); rain->set_intensity(thunder_decision / 2); From 64a9819b58ee710e69feac4582f95e753ea2da4a Mon Sep 17 00:00:00 2001 From: akasaka Date: Tue, 1 Oct 2024 18:41:12 +0900 Subject: [PATCH 06/21] AM/PM display; allow to disable seconds; PWM madness with the display --- include/app/menu.h | 2 +- include/device_config.h | 3 + include/devices/big_clock.h | 3 + include/display/ws0010.h | 7 +- include/graphics/display_driver.h | 2 - include/service/prefs.h | 1 + include/sound/beeper.h | 4 +- include/views/common/dropping_digits.h | 2 +- include/views/common/view.h | 8 +++ include/views/idle_screens/simple_clock.h | 3 + src/app/idle.cpp | 2 +- src/app/menu.cpp | 5 +- src/display/ws0010.cpp | 17 ++++- src/graphics/framebuffer.cpp | 6 +- src/input/keys.cpp | 2 +- src/main.cpp | 40 +++++++++-- src/network/admin_panel.cpp | 10 +-- src/service/localize.cpp | 5 +- src/sound/beeper.cpp | 13 +++- src/views/idle_screens/simple_clock.cpp | 87 +++++++++++++++++++++-- src/views/overlays/fireworks.cpp | 2 +- src/views/weather/daily_forecast.cpp | 1 + 22 files changed, 185 insertions(+), 40 deletions(-) diff --git a/include/app/menu.h b/include/app/menu.h index de706a0..49557bc 100644 --- a/include/app/menu.h +++ b/include/app/menu.h @@ -9,7 +9,7 @@ class AppShimMenu: public ProtoShimNavMenu { public: - AppShimMenu(Beeper*, NewSequencer*, Yukkuri*); + AppShimMenu(Beeper*, NewSequencer*, Yukkuri*, DisplayDriver*dd); void prepare(); void step(); diff --git a/include/device_config.h b/include/device_config.h index acc1386..f536793 100644 --- a/include/device_config.h +++ b/include/device_config.h @@ -23,6 +23,9 @@ // Enable the yukkuri voice talking clock #define HAS_AQUESTALK +// Disable the faux brightness reduction for some UI elements by drawing them only every other frame +// #define COMPOSABLE_NO_EVENODD + // ---- HARDWARE #ifdef ESP32 diff --git a/include/devices/big_clock.h b/include/devices/big_clock.h index 6807943..287ad92 100644 --- a/include/devices/big_clock.h +++ b/include/devices/big_clock.h @@ -11,6 +11,9 @@ #define HAS_MOTION_SENSOR #define HAS_KEYPAD +// ↓ Looks like shite on the plasma display +#define COMPOSABLE_NO_EVENODD + // Plasma Information System OS (not DOS, there's no disk in it!) #define PRODUCT_NAME "PIS-OS" #define PRODUCT_VERSION "4" diff --git a/include/display/ws0010.h b/include/display/ws0010.h index f5513c9..7f0c6f4 100644 --- a/include/display/ws0010.h +++ b/include/display/ws0010.h @@ -27,10 +27,8 @@ class Ws0010OledDriver: public DisplayDriver { /// @brief Show or hide the display contents, while keeping the scanning active void set_show(bool show); -#if HAS(VARYING_BRIGHTNESS) -#warning WS0010 does not support brightness controls - void set_bright(bool bright) { } -#endif + /// @brief Enable or disable virtual dimming (using BFI, might flicker depending on FPS stability) + void set_bright(bool bright); /// @brief Send an array of half-columns to the display controller void write_fanta(const uint8_t * strides, size_t count); @@ -41,6 +39,7 @@ class Ws0010OledDriver: public DisplayDriver { gpio_num_t en_gpio; bool is_writing_ddram; bool show_state; + bool is_dim = false; uint8_t ddram_ptr; inline void set_databus(uint8_t data); diff --git a/include/graphics/display_driver.h b/include/graphics/display_driver.h index 8cbb34c..a653ca8 100644 --- a/include/graphics/display_driver.h +++ b/include/graphics/display_driver.h @@ -14,8 +14,6 @@ class DisplayDriver { /// @brief Show or hide the display contents, while keeping the scanning active virtual void set_show(bool show) {} -#if HAS(VARYING_BRIGHTNESS) /// @brief Select between half or full brightness virtual void set_bright(bool bright) {} -#endif }; \ No newline at end of file diff --git a/include/service/prefs.h b/include/service/prefs.h index bd6df6a..6c49ff4 100644 --- a/include/service/prefs.h +++ b/include/service/prefs.h @@ -17,6 +17,7 @@ typedef enum prefs_wifi_icon_disp { static constexpr prefs_key_t PREFS_KEY_WIFI_ICON = "net_icon"; static constexpr prefs_key_t PREFS_KEY_BLINK_SEPARATORS = "blink_separator"; +static constexpr prefs_key_t PREFS_KEY_SHOW_SECONDS = "show_seconds"; static constexpr prefs_key_t PREFS_KEY_TICKING_SOUND = "ticking_sound"; static constexpr prefs_key_t PREFS_KEY_NO_SOUND_WHEN_OFF = "no_tick_off"; diff --git a/include/sound/beeper.h b/include/sound/beeper.h index e9ed799..a694015 100644 --- a/include/sound/beeper.h +++ b/include/sound/beeper.h @@ -31,7 +31,9 @@ class Beeper: public WaveGenerator { void stop_tone(beeper_channel_t); /// @brief Play a tone for a precise amount of milliseconds. Blocks the whole tasks and might block neighboring tasks, so use sparingly. - void beep_blocking(beeper_channel_t, uint freq, uint len, uint16_t duty = DUTY_SQUARE); + void __attribute__((deprecated)) beep_blocking(beeper_channel_t, uint freq, uint len, uint16_t duty = DUTY_SQUARE); + + void beep(beeper_channel_t, uint freq, uint len, uint16_t duty = DUTY_SQUARE); private: ToneGenerator* voice; uint8_t channel_status; diff --git a/include/views/common/dropping_digits.h b/include/views/common/dropping_digits.h index 34c32bb..b57da59 100644 --- a/include/views/common/dropping_digits.h +++ b/include/views/common/dropping_digits.h @@ -74,7 +74,7 @@ class DroppingDigitView: public Composable, DroppingDigits { } if(phase == 8 && beeper && sound) { - beeper->beep_blocking(CHANNEL_AMBIANCE, 100, 10); + beeper->beep(CHANNEL_AMBIANCE, 100, 10); } } diff --git a/include/views/common/view.h b/include/views/common/view.h index c6a5f15..f5b5c7a 100644 --- a/include/views/common/view.h +++ b/include/views/common/view.h @@ -1,5 +1,6 @@ #pragma once #include +#include #include /// @brief A renderable view @@ -20,6 +21,7 @@ class Composable: public Renderable { int x_offset = 0; int width = -1; bool hidden = false; + bool gray = false; }; class ClipView: public Composable { @@ -54,6 +56,9 @@ class Composite: public Composable { } for(Composable *r: composables) { if(r->hidden) continue; +#ifndef COMPOSABLE_NO_EVENODD + if(r->gray && !even_odd) continue; +#endif if(r->x_offset <= 0 && r->width < 0) { r->render(fb); } else if(r->width > 0) { @@ -66,6 +71,7 @@ class Composite: public Composable { delete temp; } } + even_odd ^= 1; } void step() { for(Composable *r: composables) r->step(); @@ -76,6 +82,8 @@ class Composite: public Composable { protected: std::vector composables = {}; bool wants_clear_surface = false; +private: + bool even_odd = false; }; /// @brief Do not override the user-specified display time diff --git a/include/views/idle_screens/simple_clock.h b/include/views/idle_screens/simple_clock.h index da2dda1..b7206a4 100644 --- a/include/views/idle_screens/simple_clock.h +++ b/include/views/idle_screens/simple_clock.h @@ -12,9 +12,12 @@ class SimpleClock: public Screen, DroppingDigits { void render(FantaManipulator*); void step(); private: + class AmPmLabel; tk_time_of_day_t now; tk_time_of_day_t next_time; int phase; char separator; bool blink_separator; + bool show_seconds; + AmPmLabel * pm_label; }; \ No newline at end of file diff --git a/src/app/idle.cpp b/src/app/idle.cpp index af89ab0..2b7536a 100644 --- a/src/app/idle.cpp +++ b/src/app/idle.cpp @@ -110,7 +110,7 @@ void sound_tick_tock() { tk_time_of_day_t now = get_current_time_precise(); if(now.millisecond >= tick_tock_offset_ms && !tick_tock) { if(!sequencer->is_sequencing() && (yukkuri == nullptr || !yukkuri->is_speaking())) { - beepola->beep_blocking(CHANNEL_AMBIANCE, 100, 10); + beepola->beep(CHANNEL_AMBIANCE, 100, 10); } tick_tock = true; } else if (now.millisecond < tick_tock_offset_ms && tick_tock) { diff --git a/src/app/menu.cpp b/src/app/menu.cpp index 2d60af6..82d8bf8 100644 --- a/src/app/menu.cpp +++ b/src/app/menu.cpp @@ -43,7 +43,7 @@ class DiskSpaceView: public MenuInfoItemView { char buf[32] = { 0 }; }; -AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y): ProtoShimNavMenu::ProtoShimNavMenu() { +AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y, DisplayDriver*dd): ProtoShimNavMenu::ProtoShimNavMenu() { beeper = b; yukkuri = y; std::function normalActivationFunction = [this](bool isActive, Renderable* instance) { @@ -58,6 +58,7 @@ AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y): ProtoShimNavMe static MenuDateSettingView * ds_view = nullptr; static ListView * clock_menu = new ListView(); clock_menu->add_view(new MenuBooleanSettingView(localized_string("24-hour display"), PREFS_KEY_DISP_24_HRS)); + clock_menu->add_view(new MenuBooleanSettingView(localized_string("Show seconds"), PREFS_KEY_SHOW_SECONDS)); clock_menu->add_view(new MenuBooleanSettingView(localized_string("Blink dots"), PREFS_KEY_BLINK_SEPARATORS)); clock_menu->add_view(new MenuBooleanSettingView(localized_string("Tick sound"), PREFS_KEY_TICKING_SOUND)); clock_menu->add_view(new MenuBooleanSettingView(localized_string("Ticking only when screen on"), PREFS_KEY_NO_SOUND_WHEN_OFF)); @@ -296,6 +297,8 @@ AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y): ProtoShimNavMe #if HAS(PLAYGROUND) main_menu->add_view(new MenuActionItemView("Test", []() { push_state(STATE_PLAYGROUND, TRANSITION_SLIDE_HORIZONTAL_LEFT); }, &good_icns)); #endif +// TEST + main_menu->add_view(new MenuBooleanSelectorView("Dimmer Test", true, [dd](bool bright) { dd->set_bright(bright); })); } void AppShimMenu::prepare() { diff --git a/src/display/ws0010.cpp b/src/display/ws0010.cpp index 8ce505f..d277487 100644 --- a/src/display/ws0010.cpp +++ b/src/display/ws0010.cpp @@ -6,6 +6,10 @@ #include #include +#ifndef WS0010_BFI_DIMMER_DURATION_US +#define WS0010_BFI_DIMMER_DURATION_US 6000 //<- experimentally found value for roughly 50% brightness @ 3V3 supply +#endif + static char LOG_TAG[] = "Winstar0010"; static portMUX_TYPE _spinlock = portMUX_INITIALIZER_UNLOCKED; @@ -20,6 +24,7 @@ Ws0010OledDriver::Ws0010OledDriver( rs_gpio = rs; en_gpio = en; is_writing_ddram = false; + is_dim = false; ddram_ptr = 0; } @@ -168,17 +173,25 @@ void Ws0010OledDriver::write_fanta(const uint8_t * strides, size_t count) { #endif // First write even (top row), then odd (bottom row) for(int i = 0; i < count - 1; i += 2) { - if(i >= 200) continue; // TODO: support physical screen resolutions + if(i >= 200) continue; write_stride(strides[i]); } for(int i = 1; i < count; i += 2) { - if(i >= 200) continue; // TODO: support physical screen resolutions + if(i >= 200) continue; write_stride(strides[i]); } #ifndef WS0010_NO_BFI + if(is_dim) { + delayMicroseconds(WS0010_BFI_DIMMER_DURATION_US); + } set_show(show_backup); #endif taskEXIT_CRITICAL(&_spinlock); } +void Ws0010OledDriver::set_bright(bool bright) { + ESP_LOGI(LOG_TAG, "BFI dimming is now %s", bright ? "OFF":"ON"); + is_dim = !bright; +} + #endif \ No newline at end of file diff --git a/src/graphics/framebuffer.cpp b/src/graphics/framebuffer.cpp index 8f82054..4110337 100644 --- a/src/graphics/framebuffer.cpp +++ b/src/graphics/framebuffer.cpp @@ -48,7 +48,8 @@ void FbTaskFunc( void * pvParameter ) { ESP_LOGV(LOG_TAG, "Running task"); DisplayFramebuffer * fb = static_cast ( pvParameter ); - + TickType_t now = xTaskGetTickCount(); + TickType_t interval = pdMS_TO_TICKS(1000 / DESIRED_FPS); while(1) { fb->write_all_if_needed(); #ifdef PDFB_PERF_LOGS @@ -62,7 +63,6 @@ void FbTaskFunc( void * pvParameter ) max_frametime = 0; } - TickType_t now = xTaskGetTickCount(); TickType_t frametime = now - last_draw_at; if(frametime > max_frametime) max_frametime = frametime; avg_frametime += frametime; @@ -70,7 +70,7 @@ void FbTaskFunc( void * pvParameter ) last_draw_at = now; #endif - vTaskDelay(pdMS_TO_TICKS(1000 / DESIRED_FPS)); + xTaskDelayUntil(&now, interval); } } diff --git a/src/input/keys.cpp b/src/input/keys.cpp index b541971..b9b2769 100644 --- a/src/input/keys.cpp +++ b/src/input/keys.cpp @@ -49,7 +49,7 @@ static key_state_t min_state_of_mask(key_bitmask_t keys, bool peek = false) { if(pressed_keycombos.count(keys) == 0) { if(!peek) { pressed_keycombos.insert(keys); - if(beepola != nullptr) beepola->beep_blocking(CHANNEL_NOTICE, 1000, 10); + if(beepola != nullptr) beepola->beep(CHANNEL_NOTICE, 1000, 10); } return KEYSTATE_HIT; } else { diff --git a/src/main.cpp b/src/main.cpp index dd882cc..7dcdf65 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -106,12 +106,15 @@ void bringup_sound() { WaveOut::set_output_callback(pisosWAVE_CHANNEL_BEEPER, beepola->get_callback()); WaveOut::set_output_callback(pisosWAVE_CHANNEL_SEQUENCER, seq->get_callback()); + + ESP_LOGI(LOG_TAG, "Sound subsystem ready"); } void bringup_light_sensor() { #if HAS(LIGHT_SENSOR) sensors->add(SENSOR_ID_AMBIENT_LIGHT, new AmbientLightSensor(HWCONF_LIGHTSENSE_GPIO), pdMS_TO_TICKS(250)); con->print("L sensor OK"); + ESP_LOGI(LOG_TAG, "Light sensor ready"); #endif } @@ -119,6 +122,7 @@ void bringup_motion_sensor() { #if HAS(MOTION_SENSOR) sensors->add(SENSOR_ID_MOTION, new MotionSensor(HWCONF_MOTION_GPIO), pdMS_TO_TICKS(1000)); con->print("M sensor OK"); + ESP_LOGI(LOG_TAG, "Motion sensor ready"); #endif } @@ -133,6 +137,8 @@ void bringup_temp_sensor() { } else { con->print("T sensor OK"); } + ESP_LOGI(LOG_TAG, "Temperature sensor ready"); + delay(1000); if(!sensors->add(SENSOR_ID_AMBIENT_HUMIDITY, new Am2322HumiditySensor(tempSens), pdMS_TO_TICKS(5000))) { con->print("H sens err"); @@ -140,6 +146,7 @@ void bringup_temp_sensor() { } else { con->print("H sensor OK"); } + ESP_LOGI(LOG_TAG, "Humidity sensor ready"); #endif } @@ -171,6 +178,8 @@ void bringup_switchbot_sensor() { sensors->short_circuit(SENSOR_ID_AMBIENT_TEMPERATURE, SENSOR_ID_SWITCHBOT_INDOOR_TEMPERATURE); } } + + ESP_LOGI(LOG_TAG, "WoSensor ready"); } } #endif @@ -185,9 +194,11 @@ void bringup_hid() { } // No beeper on non-touch because it will be annoying with physical buttons hid_set_key_beeper(beepola); + ESP_LOGI(LOG_TAG, "Touchpad ready"); #endif #if HAS(KEYPAD) keypad_start(); + ESP_LOGI(LOG_TAG, "Keypad ready"); #endif } @@ -199,23 +210,23 @@ void boot_task(void*) { ESP_LOGE(LOG_TAG, "An Error has occurred while mounting file system"); seq->play_sequence(&tulula_fvu); } else { + ESP_LOGI(LOG_TAG, "File system mounted"); seq->play_sequence(&pc98_pipo); } - con->clear(); - // con->print("WiFi init"); NetworkManager::startup(); + ESP_LOGI(LOG_TAG, "NetMgr started"); while(!NetworkManager::is_up()) { - delay(100); + delay(1000); + ESP_LOGI(LOG_TAG, "Waiting for NetMgr..."); // con->write('.'); } - con->clear(); - screenshooter = new Screenshooter(fb->manipulate()); if(prefs_get_bool(PREFS_KEY_REMOTE_SERVER)) { screenshooter->start_server(3939); + ESP_LOGI(LOG_TAG, "RC Server ready"); // con->print("RC server up!"); // delay(1000); } @@ -226,8 +237,10 @@ void boot_task(void*) { // delay(2000); ota = new OTAFVUManager(con, seq); + ESP_LOGI(LOG_TAG, "OTAFVUMgr ready"); sensors = new SensorPool(); + ESP_LOGI(LOG_TAG, "Creating sensor pool"); sensors->add(VIRTSENSOR_ID_WIRELESS_RSSI, new RssiSensor(), pdMS_TO_TICKS(500)); sensors->add(VIRTSENSOR_ID_HID_STARTLED, new HidActivitySensor(), pdMS_TO_TICKS(125)); @@ -236,8 +249,11 @@ void boot_task(void*) { bringup_temp_sensor(); bringup_switchbot_sensor(); bringup_hid(); + + ESP_LOGI(LOG_TAG, "Loading music database"); load_melodies_from_disk(); + ESP_LOGI(LOG_TAG, "Starting services..."); timekeeping_begin(); weather_start(); wotd_start(); @@ -245,9 +261,10 @@ void boot_task(void*) { power_mgmt_start(sensors, &display_driver, beepola); admin_panel_prepare(sensors, beepola); + ESP_LOGI(LOG_TAG, "Constructing desktop"); appHost->add_view(new AppShimIdle(sensors, beepola, seq, yukkuri), STATE_IDLE); appHost->add_view(new AppShimAlarming(seq), STATE_ALARMING); - appHost->add_view(new AppShimMenu(beepola, seq, yukkuri), STATE_MENU); + appHost->add_view(new AppShimMenu(beepola, seq, yukkuri, &display_driver), STATE_MENU); appHost->add_view(new AppShimAlarmEditor(beepola, seq), STATE_ALARM_EDITOR); appHost->add_view(new AppShimTimerEditor(beepola, seq), STATE_TIMER_EDITOR); appHost->add_view(new AppShimStopwatch(beepola), STATE_STOPWATCH); @@ -261,6 +278,7 @@ void boot_task(void*) { #endif appHost->add_view(new NewYearAppShim(beepola, seq, yukkuri), STATE_NEW_YEAR); + ESP_LOGI(LOG_TAG, "Finishing up"); change_state(startup_state, TRANSITION_WIPE); alarm_init(sensors); @@ -315,7 +333,7 @@ void setup() { if(xTaskCreate( boot_task, "BOOT", - 6000, + 8192, nullptr, configMAX_PRIORITIES - 1, &bootTaskHandle @@ -340,7 +358,15 @@ static void print_memory() { } } +bool bumTheDog = false; void loop() { + if(!bumTheDog) { + disableLoopWDT(); + disableCore0WDT(); + disableCore1WDT(); + bumTheDog = true; + } + if(_actual_current_state != STATE_OTAFVU) { // OTAFVU basically locks everything down until reboot fb->wait_next_frame(); if(graph->lock()) { diff --git a/src/network/admin_panel.cpp b/src/network/admin_panel.cpp index 03b7f46..b0d58e0 100644 --- a/src/network/admin_panel.cpp +++ b/src/network/admin_panel.cpp @@ -43,7 +43,7 @@ static void save_bool(prefs_key_t key) { bool temp = false; if(ui.clickBool(key, temp)) { prefs_set_bool(key, temp); - beeper->beep_blocking(CHANNEL_NOTICE, 1000, 50); + beeper->beep(CHANNEL_NOTICE, 1000, 50); } } @@ -59,7 +59,7 @@ static void save_int(prefs_key_t key, int min, int max) { temp = std::min(temp, max); temp = std::max(temp, min); prefs_set_int(key, temp); - beeper->beep_blocking(CHANNEL_NOTICE, 1000, 50); + beeper->beep(CHANNEL_NOTICE, 1000, 50); } } @@ -76,7 +76,7 @@ static void save_string(prefs_key_t key) { String temp; if(ui.clickString(key, temp)) { prefs_set_string(key, temp); - beeper->beep_blocking(CHANNEL_NOTICE, 1000, 50); + beeper->beep(CHANNEL_NOTICE, 1000, 50); } } @@ -182,7 +182,7 @@ static bool save_alarms() { set_alarm(i, a); } - beeper->beep_blocking(CHANNEL_NOTICE, 1000, 50); + beeper->beep(CHANNEL_NOTICE, 1000, 50); return true; } @@ -251,6 +251,7 @@ static void build() { GP.SPOILER_BEGIN("Clock", GP_BLUE); render_bool("24-hour display:", PREFS_KEY_DISP_24_HRS); + render_bool("Show seconds:", PREFS_KEY_SHOW_SECONDS); render_bool("Blink separators:", PREFS_KEY_BLINK_SEPARATORS); render_bool("Ticking sound:", PREFS_KEY_TICKING_SOUND); render_bool("Only when screen is on:", PREFS_KEY_NO_SOUND_WHEN_OFF); @@ -547,6 +548,7 @@ void action() { save_bool(PREFS_KEY_DISP_24_HRS); save_bool(PREFS_KEY_VOICE_24_HRS); save_bool(PREFS_KEY_BLINK_SEPARATORS); + save_bool(PREFS_KEY_SHOW_SECONDS); save_bool(PREFS_KEY_TICKING_SOUND); save_bool(PREFS_KEY_HOURLY_CHIME_ON); save_int(PREFS_KEY_HOURLY_CHIME_START_HOUR, 0, 23); diff --git a/src/service/localize.cpp b/src/service/localize.cpp index 037c3ae..76ea4b8 100644 --- a/src/service/localize.cpp +++ b/src/service/localize.cpp @@ -109,6 +109,7 @@ static const std::map russian = { {"24-hour display", "24-часовой формат отображения"}, {"24-hour announcements", "24-часовой формат голоса"}, + {"Show seconds", "Показывать секунды"}, {"Blink dots", "Мигающие точки"}, {"Tick sound", "Тикание часов"}, {"Ticking only when screen on", "Тикание только при включённом экране"}, @@ -624,9 +625,9 @@ YukkuriUtterance localized_utterance_for_time(tk_time_of_day_t _time, spoken_lan acc += "/no'chi"; } else if(time.hour < 12 && !is_pm) { acc += "/u_tura'"; - } else if(time.hour <= 5 && is_pm) { + } else if(time.hour <= 4 && is_pm) { acc += "/dunya'"; - } else if(time.hour >= 6 && is_pm) { + } else if(time.hour >= 5 && is_pm) { acc += "/bie'chira"; } } else { diff --git a/src/sound/beeper.cpp b/src/sound/beeper.cpp index 302e300..925ff95 100644 --- a/src/sound/beeper.cpp +++ b/src/sound/beeper.cpp @@ -39,6 +39,7 @@ size_t Beeper::fill_buffer(void* buffer, size_t length_) { samples += generated*8; if(duration_samples > 0 && duration_samples <= samples) { voice->set_parameter(ToneGenerator::Parameter::PARAMETER_ACTIVE, false); + active_channel = -1; } return generated; } @@ -65,11 +66,17 @@ void Beeper::beep_blocking(beeper_channel_t ch, uint freq, uint len, uint16_t du if(active_channel > ch) return; if(!is_channel_enabled(ch)) return; + beep(ch, freq, len, duty); + vTaskDelay(len); +} + +void Beeper::beep(beeper_channel_t ch, uint freq, uint len, uint16_t duty) { + if(active_channel > ch) return; + if(!is_channel_enabled(ch)) return; + if(active_channel < ch) active_channel = ch; samples = 0; duration_samples = len * (WaveOut::BAUD_RATE / 1000); voice->set_parameter(ToneGenerator::Parameter::PARAMETER_FREQUENCY, freq); - vTaskDelay(len); - active_channel = -1; -} \ No newline at end of file +} diff --git a/src/views/idle_screens/simple_clock.cpp b/src/views/idle_screens/simple_clock.cpp index 6673171..c79b031 100644 --- a/src/views/idle_screens/simple_clock.cpp +++ b/src/views/idle_screens/simple_clock.cpp @@ -8,12 +8,73 @@ static const int EASING_CURVE[32] = { 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 11, 12, 13, 14, 15, 16 }; +class SimpleClock::AmPmLabel: public Composite { +public: + AmPmLabel() {} + bool is_pm = false; + + void render(FantaManipulator *fb) override { + Composite::render(fb); + fb->put_sprite(is_pm ? &spr_p : &spr_a, 0, is_pm ? 7 : 2); + fb->put_sprite(&spr_m, spr_a.width, is_pm ? 7 : 2); + } + +private: + const uint8_t letter_a_data[5] = { + 0b0111, + 0b1001, + 0b1111, + 0b1001, + 0b1001, + }; + const uint8_t letter_p_data[5] = { + 0b1110, + 0b1001, + 0b1110, + 0b1000, + 0b1000, + }; + const uint8_t letter_m_data[5] = { + 0b1111, + 0b1011, + 0b1001, + 0b1001, + 0b1001, + }; + const sprite_t spr_a = { + .width = 5, + .height = 5, + .data = letter_a_data, + .mask = nullptr, + .format = SPRFMT_HORIZONTAL + }; + const sprite_t spr_p = { + .width = 5, + .height = 5, + .data = letter_p_data, + .mask = nullptr, + .format = SPRFMT_HORIZONTAL + }; + const sprite_t spr_m = { + .width = 5, + .height = 5, + .data = letter_m_data, + .mask = nullptr, + .format = SPRFMT_HORIZONTAL + }; + +}; + SimpleClock::SimpleClock(): DroppingDigits() { now = { 0 }; next_time = { 0 }; phase = 0; separator = CLOCK_SEPARATOR; + pm_label = new AmPmLabel(); + pm_label->hidden = true; + add_composable(pm_label); blink_separator = prefs_get_bool(PREFS_KEY_BLINK_SEPARATORS); + show_seconds = prefs_get_bool(PREFS_KEY_SHOW_SECONDS); } void add_one_second(tk_time_of_day_t * time) { @@ -72,18 +133,29 @@ void SimpleClock::step() { phase = EASING_CURVE[phase]; if(!prefs_get_bool(PREFS_KEY_DISP_24_HRS)) { - convert_to_12h(&now); - convert_to_12h(&next_time); + bool now_pm = false; + bool next_pm = false; + convert_to_12h(&now,&now_pm); + convert_to_12h(&next_time, &next_pm); + + pm_label->hidden = false; + pm_label->gray = (now_pm != next_pm); + pm_label->is_pm = now_pm; + } else { + pm_label->hidden = true; } blink_separator = prefs_get_bool(PREFS_KEY_BLINK_SEPARATORS); + show_seconds = prefs_get_bool(PREFS_KEY_SHOW_SECONDS); separator = (blink_separator && phase != 0) ? CLOCK_SEPARATOR_OFF : CLOCK_SEPARATOR; + Screen::step(); } void SimpleClock::render(FantaManipulator *framebuffer) { - int char_count = 8; // XX:XX:XX + int char_count = show_seconds ? 8 : 5; // XX:XX:XX int text_width = char_count * font->width; int left_offset = framebuffer->get_width() / 2 - text_width / 2; + pm_label->x_offset = left_offset - 11; draw_dropping_number(framebuffer, now.hour, next_time.hour, phase, left_offset); left_offset += 2 * font->width; @@ -94,8 +166,11 @@ void SimpleClock::render(FantaManipulator *framebuffer) { draw_dropping_number(framebuffer, now.minute, next_time.minute, phase, left_offset); left_offset += 2 * font->width; - framebuffer->put_glyph(font, separator, left_offset, 0); - left_offset += font->width; + if(show_seconds) { + framebuffer->put_glyph(font, separator, left_offset, 0); + left_offset += font->width; + draw_dropping_number(framebuffer, now.second, next_time.second, phase, left_offset); + } - draw_dropping_number(framebuffer, now.second, next_time.second, phase, left_offset); + Screen::render(framebuffer); } diff --git a/src/views/overlays/fireworks.cpp b/src/views/overlays/fireworks.cpp index 1158afa..0f4566c 100644 --- a/src/views/overlays/fireworks.cpp +++ b/src/views/overlays/fireworks.cpp @@ -144,7 +144,7 @@ void FireworksOverlay::step() { case EXPLODING: if(p->phase == 1) { if(beeper != nullptr && !did_sound && sound) { - beeper->beep_blocking(CHANNEL_NOTICE, 100, 10); + beeper->beep(CHANNEL_NOTICE, 100, 10); did_sound = true; } } else if(p->phase >= 16 && p->phase % (((rnd >> 4) & 0xF) + 2) == 0) { diff --git a/src/views/weather/daily_forecast.cpp b/src/views/weather/daily_forecast.cpp index 526e392..5623ff1 100644 --- a/src/views/weather/daily_forecast.cpp +++ b/src/views/weather/daily_forecast.cpp @@ -19,6 +19,7 @@ class DailyForecastView::Column: public Composite { night_temp->stopped = true; night_temp->set_y_position(8); night_temp->x_offset = 17; + night_temp->gray = true; date = new StringScroll(&fps_counter_font); date->render_mode = TEXT_OUTLINED | TEXT_NO_BACKGROUND; From 91af5908fbcf6b3303791e644a49d774639eb147 Mon Sep 17 00:00:00 2001 From: akasaka Date: Tue, 1 Oct 2024 19:57:29 +0900 Subject: [PATCH 07/21] brightness settings --- README.md | 2 +- include/app/menu.h | 2 +- include/devices/smol_clock.h | 1 + include/service/prefs.h | 8 +++++ src/app/menu.cpp | 18 +++++++++-- src/main.cpp | 2 +- src/network/admin_panel.cpp | 9 ++++++ src/service/localize.cpp | 9 ++++++ src/service/power_management.cpp | 54 ++++++++++++++++++++++---------- 9 files changed, 83 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 3e070f4..94f92ad 100644 --- a/README.md +++ b/README.md @@ -203,7 +203,7 @@ An ESP32-WROVER is required, because the firmware takes up 99.8% of an OTA parti ### Display (at least one required) * Morio Denki 16101DS (see [below](#morio-denki-plasma-display-info), [driver](src/display//md_plasma.cpp), feature flag `HAS_OUTPUT_MD_PLASMA`) -* Winstar WEG010016A in 8-bit parallel mode ([driver](src/display/ws0010.cpp), feature flag `HAS_OUTPUT_WS0010`) +* Winstar WEG010016A in 8-bit parallel mode ([driver](src/display/ws0010.cpp), feature flag `HAS_OUTPUT_WS0010`). Includes BFI (Black Frame Insertion) for smoother operation and dimming. ### Speaker (at least one required) diff --git a/include/app/menu.h b/include/app/menu.h index 49557bc..de706a0 100644 --- a/include/app/menu.h +++ b/include/app/menu.h @@ -9,7 +9,7 @@ class AppShimMenu: public ProtoShimNavMenu { public: - AppShimMenu(Beeper*, NewSequencer*, Yukkuri*, DisplayDriver*dd); + AppShimMenu(Beeper*, NewSequencer*, Yukkuri*); void prepare(); void step(); diff --git a/include/devices/smol_clock.h b/include/devices/smol_clock.h index 9923ee5..2b9688d 100644 --- a/include/devices/smol_clock.h +++ b/include/devices/smol_clock.h @@ -7,6 +7,7 @@ #define HAS_TEMP_SENSOR #define HAS_TOUCH_PLANE #define HAS_SERIAL_MIDI +#define HAS_VARYING_BRIGHTNESS // Plasma Information System OS (not DOS, there's no disk in it!) #define PRODUCT_NAME "uPIS-OS" diff --git a/include/service/prefs.h b/include/service/prefs.h index 6c49ff4..a9a2c89 100644 --- a/include/service/prefs.h +++ b/include/service/prefs.h @@ -16,6 +16,14 @@ typedef enum prefs_wifi_icon_disp { } prefs_wifi_icon_disp_t; static constexpr prefs_key_t PREFS_KEY_WIFI_ICON = "net_icon"; +typedef enum prefs_brightness_mode { + BRIGHTNESS_FIXED_LOW, + BRIGHTNESS_FIXED_HIGH, + BRIGHTNESS_AUTOMATIC, + BRIGHTNESS_MAX_INVALID +} prefs_brightness_mode_t; +static constexpr prefs_key_t PREFS_KEY_BRIGHTNESS_MODE = "disp_bri"; + static constexpr prefs_key_t PREFS_KEY_BLINK_SEPARATORS = "blink_separator"; static constexpr prefs_key_t PREFS_KEY_SHOW_SECONDS = "show_seconds"; static constexpr prefs_key_t PREFS_KEY_TICKING_SOUND = "ticking_sound"; diff --git a/src/app/menu.cpp b/src/app/menu.cpp index 82d8bf8..1b7fa7b 100644 --- a/src/app/menu.cpp +++ b/src/app/menu.cpp @@ -43,7 +43,7 @@ class DiskSpaceView: public MenuInfoItemView { char buf[32] = { 0 }; }; -AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y, DisplayDriver*dd): ProtoShimNavMenu::ProtoShimNavMenu() { +AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y): ProtoShimNavMenu::ProtoShimNavMenu() { beeper = b; yukkuri = y; std::function normalActivationFunction = [this](bool isActive, Renderable* instance) { @@ -161,6 +161,20 @@ AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y, DisplayDriver*d screen_times->add_view(new MenuNumberSelectorPreferenceView(localized_string("Foobar2000"), PREFS_KEY_SCRN_TIME_FOOBAR_SECONDS, 0, 3600, 1, normalActivationFunction)); #if HAS(DISPLAY_BLANKING) display_menu->add_view(new MenuNumberSelectorPreferenceView(localized_string("Blank display after (s)"), PREFS_KEY_MOTIONLESS_TIME_OFF_SECONDS, 0, 21600, 1, normalActivationFunction)); +#endif +#if HAS(VARYING_BRIGHTNESS) + display_menu->add_view(new MenuListSelectorPreferenceView( + localized_string("Brightness"), + { + localized_string("Dim"), + localized_string("Bright"), +#if HAS(LIGHT_SENSOR) + localized_string("Automatic"), +#endif + }, + PREFS_KEY_BRIGHTNESS_MODE, + normalActivationFunction + )); #endif display_menu->add_view(new MenuNumberSelectorPreferenceView(localized_string("Turn display off after (s)"), PREFS_KEY_MOTIONLESS_TIME_HV_OFF_SECONDS, 0, 72000, 1, normalActivationFunction)); display_menu->add_view(new MenuBooleanSettingView(localized_string("Use Fahrenheit for temperature"), PREFS_KEY_WEATHER_USE_FAHRENHEIT)); @@ -297,8 +311,6 @@ AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y, DisplayDriver*d #if HAS(PLAYGROUND) main_menu->add_view(new MenuActionItemView("Test", []() { push_state(STATE_PLAYGROUND, TRANSITION_SLIDE_HORIZONTAL_LEFT); }, &good_icns)); #endif -// TEST - main_menu->add_view(new MenuBooleanSelectorView("Dimmer Test", true, [dd](bool bright) { dd->set_bright(bright); })); } void AppShimMenu::prepare() { diff --git a/src/main.cpp b/src/main.cpp index 7dcdf65..a96dc56 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -264,7 +264,7 @@ void boot_task(void*) { ESP_LOGI(LOG_TAG, "Constructing desktop"); appHost->add_view(new AppShimIdle(sensors, beepola, seq, yukkuri), STATE_IDLE); appHost->add_view(new AppShimAlarming(seq), STATE_ALARMING); - appHost->add_view(new AppShimMenu(beepola, seq, yukkuri, &display_driver), STATE_MENU); + appHost->add_view(new AppShimMenu(beepola, seq, yukkuri), STATE_MENU); appHost->add_view(new AppShimAlarmEditor(beepola, seq), STATE_ALARM_EDITOR); appHost->add_view(new AppShimTimerEditor(beepola, seq), STATE_TIMER_EDITOR); appHost->add_view(new AppShimStopwatch(beepola), STATE_STOPWATCH); diff --git a/src/network/admin_panel.cpp b/src/network/admin_panel.cpp index b0d58e0..ec201e9 100644 --- a/src/network/admin_panel.cpp +++ b/src/network/admin_panel.cpp @@ -287,6 +287,14 @@ static void build() { GP.LABEL("Display language (not in WebUI):"); GP.SELECT(PREFS_KEY_DISP_LANGUAGE, "English,Русский", prefs_get_int(PREFS_KEY_DISP_LANGUAGE)); GP.HR(); + GP.LABEL("Display brightness:"); + GP.SELECT(PREFS_KEY_BRIGHTNESS_MODE, + "Dim,Bright" +#if HAS(LIGHT_SENSOR) + ",Automatic" +#endif + , prefs_get_int(PREFS_KEY_BRIGHTNESS_MODE)); + GP.HR(); render_int("Show clock for [s]:", PREFS_KEY_SCRN_TIME_CLOCK_SECONDS); GP.BREAK(); render_int("Show next alarm countdown for [s]:", PREFS_KEY_SCRN_TIME_NEXT_ALARM_SECONDS); @@ -572,6 +580,7 @@ void action() { save_bool(PREFS_KEY_NO_SOUND_WHEN_OFF); save_int(PREFS_KEY_TRANSITION_TYPE, TRANSITION_NONE, TRANSITION_RANDOM); save_int(PREFS_KEY_DISP_SCROLL_SPEED, 0, 4); + save_int(PREFS_KEY_BRIGHTNESS_MODE, 0, BRIGHTNESS_MAX_INVALID - 1); save_bool(PREFS_KEY_WEATHER_USE_FAHRENHEIT); save_int(PREFS_KEY_TEMP_SENSOR_TEMP_OFFSET, -50, 50); save_int(PREFS_KEY_TEMP_SENSOR_HUM_OFFSET, -50, 50); diff --git a/src/service/localize.cpp b/src/service/localize.cpp index 76ea4b8..54469b0 100644 --- a/src/service/localize.cpp +++ b/src/service/localize.cpp @@ -75,6 +75,10 @@ static const std::map english = { {"Fast", "Fast"}, {"Sonic", "Sonic"}, + {"Dim", "Dim"}, + {"Bright", "Bright"}, + {"Automatic", "Automatic"}, + #if HAS(BALANCE_BOARD_INTEGRATION) {"BB_DSCNCT", "Disconnected"}, {"BB_CNCT_GUIDE", "\x1A to connect"}, @@ -161,6 +165,11 @@ static const std::map russian = { {"Fast", "Быстро"}, {"Sonic", "Соник"}, + {"Brightness", "Яркость"}, + {"Dim", "Темно"}, + {"Bright", "Ярко"}, + {"Automatic", "Авто"}, + {"Blank display after (s)", "Пустой дисплей после (сек.)"}, {"Turn display off after (s)", "Выключить дисплей после (сек.)"}, {"Use Fahrenheit for temperature", "Температура в градусах Фаренгейта"}, diff --git a/src/service/power_management.cpp b/src/service/power_management.cpp index e2d4b1c..08791bf 100644 --- a/src/service/power_management.cpp +++ b/src/service/power_management.cpp @@ -78,23 +78,43 @@ void PMTaskFunction( void * pvParameter ) lightnessThreshUp = prefs_get_int(PREFS_KEY_LIGHTNESS_THRESH_UP); now = xTaskGetTickCount(); - #if HAS(VARYING_BRIGHTNESS) && HAS(LIGHT_SENSOR) - // Adjust dimmer according to ambient light - sensor_info_t * light_info = sensors->get_info(SENSOR_ID_AMBIENT_LIGHT); - if(light_info != nullptr) { - int current_lightness = light_info->last_result; - if(current_lightness > lightnessThreshUp && current_lightness > lastLightness && !isBright) { - ESP_LOGI(LOG_TAG, "Changing to bright mode"); - isBright = true; - display->set_bright(true); - } - else if(current_lightness < lightnessThreshDown && current_lightness < lastLightness && isBright) { - ESP_LOGI(LOG_TAG, "Changing to dim mode"); - isBright = false; + #if HAS(VARYING_BRIGHTNESS) + switch(prefs_get_int(PREFS_KEY_BRIGHTNESS_MODE)) { + case BRIGHTNESS_FIXED_LOW: + if(isBright) { display->set_bright(false); + isBright = false; } + break; - lastLightness = light_info->last_result; + case BRIGHTNESS_FIXED_HIGH: + if(!isBright) { + display->set_bright(true); + isBright = true; + } + break; + + case BRIGHTNESS_AUTOMATIC: + { + // Adjust dimmer according to ambient light + sensor_info_t * light_info = sensors->get_info(SENSOR_ID_AMBIENT_LIGHT); + if(light_info != nullptr) { + int current_lightness = light_info->last_result; + if(current_lightness > lightnessThreshUp && current_lightness > lastLightness && !isBright) { + ESP_LOGI(LOG_TAG, "Changing to bright mode"); + isBright = true; + display->set_bright(true); + } + else if(current_lightness < lightnessThreshDown && current_lightness < lastLightness && isBright) { + ESP_LOGI(LOG_TAG, "Changing to dim mode"); + isBright = false; + display->set_bright(false); + } + + lastLightness = light_info->last_result; + } + } + break; } #endif @@ -174,7 +194,7 @@ void power_mgmt_pause() { vTaskSuspend(hTask); display->set_power(true); #if HAS(VARYING_BRIGHTNESS) - display->set_bright(true); + display->set_bright(prefs_get_int(PREFS_KEY_BRIGHTNESS_MODE) != BRIGHTNESS_AUTOMATIC); #endif display->set_show(true); beeper->set_channel_state(CHANNEL_AMBIANCE, true); @@ -189,5 +209,7 @@ void power_mgmt_resume() { display->set_bright(isBright); #endif display->set_show(!isDisplayOff); - beeper->set_channel_state(CHANNEL_AMBIANCE, !isDisplayOff); + if(noSoundWhenOff) { + beeper->set_channel_state(CHANNEL_AMBIANCE, !isDisplayOff); + } } \ No newline at end of file From 176b9d801d45fb2c65e47ef05d19e196b96be186 Mon Sep 17 00:00:00 2001 From: akasaka Date: Wed, 2 Oct 2024 08:49:20 +0900 Subject: [PATCH 08/21] Some fixup in idle --- include/app/idle.h | 9 +++-- include/views/common/view.h | 3 +- src/app/idle.cpp | 11 +++--- src/views/idle_screens/simple_clock.cpp | 47 +++++++++++++++---------- 4 files changed, 43 insertions(+), 27 deletions(-) diff --git a/include/app/idle.h b/include/app/idle.h index 3aea771..c9747fb 100644 --- a/include/app/idle.h +++ b/include/app/idle.h @@ -6,14 +6,19 @@ #include #include -void app_idle_prepare(SensorPool*, Beeper*, NewSequencer*, Yukkuri*); +void app_idle_init(SensorPool*, Beeper*, NewSequencer*, Yukkuri*); +void app_idle_prepare(); void app_idle_draw(FantaManipulator*); void app_idle_process(); class AppShimIdle: public Renderable { public: AppShimIdle(SensorPool*sp, Beeper*b, NewSequencer*s, Yukkuri*y) { - app_idle_prepare(sp, b, s, y); + app_idle_init(sp, b, s, y); + } + + void prepare() { + app_idle_prepare(); } void render(FantaManipulator*fb) { diff --git a/include/views/common/view.h b/include/views/common/view.h index f5b5c7a..0c91370 100644 --- a/include/views/common/view.h +++ b/include/views/common/view.h @@ -71,7 +71,9 @@ class Composite: public Composable { delete temp; } } +#ifndef COMPOSABLE_NO_EVENODD even_odd ^= 1; +#endif } void step() { for(Composable *r: composables) r->step(); @@ -82,7 +84,6 @@ class Composite: public Composable { protected: std::vector composables = {}; bool wants_clear_surface = false; -private: bool even_odd = false; }; diff --git a/src/app/idle.cpp b/src/app/idle.cpp index 2b7536a..124b6c8 100644 --- a/src/app/idle.cpp +++ b/src/app/idle.cpp @@ -55,8 +55,6 @@ static int screen_times_ms[VIEW_MAX] = {0}; int current_screen_time_ms = 0; -static bool did_prepare = false; - static Beeper * beepola; static NewSequencer * sequencer; static Yukkuri * yukkuri = nullptr; @@ -251,10 +249,7 @@ void weather_overlay_update() { } } -void app_idle_prepare(SensorPool* s, Beeper* b, NewSequencer* seq, Yukkuri* tts) { - if(did_prepare) return; - - did_prepare = true; +void app_idle_init(SensorPool* s, Beeper* b, NewSequencer* seq, Yukkuri* tts) { beepola = b; sequencer = seq; sensors = s; @@ -350,6 +345,10 @@ void app_idle_prepare(SensorPool* s, Beeper* b, NewSequencer* seq, Yukkuri* tts) mainView->prepare(); } +void app_idle_prepare() { + lastScreenSwitch = xTaskGetTickCount(); +} + void update_screen_specific_time() { current_screen_time_ms = screen_times_ms[curScreen]; if(current_screen_time_ms == 0) return; // user disabled this screen, don't care what it thinks about the display time diff --git a/src/views/idle_screens/simple_clock.cpp b/src/views/idle_screens/simple_clock.cpp index c79b031..d0e3a8e 100644 --- a/src/views/idle_screens/simple_clock.cpp +++ b/src/views/idle_screens/simple_clock.cpp @@ -15,31 +15,43 @@ class SimpleClock::AmPmLabel: public Composite { void render(FantaManipulator *fb) override { Composite::render(fb); - fb->put_sprite(is_pm ? &spr_p : &spr_a, 0, is_pm ? 7 : 2); - fb->put_sprite(&spr_m, spr_a.width, is_pm ? 7 : 2); + if(is_pm) { + show_pm(fb); + } else { + show_am(fb); + } } private: + void show_am(FantaManipulator*fb) { + fb->put_sprite(&spr_a, 0, 2); + fb->put_sprite(&spr_m, spr_a.width, 2); + } + void show_pm(FantaManipulator*fb) { + fb->put_sprite(&spr_p, 0, 7); + fb->put_sprite(&spr_m, spr_a.width, 7); + } + const uint8_t letter_a_data[5] = { - 0b0111, - 0b1001, - 0b1111, - 0b1001, - 0b1001, + 0b01110, + 0b10010, + 0b11110, + 0b10010, + 0b10010, }; const uint8_t letter_p_data[5] = { - 0b1110, - 0b1001, - 0b1110, - 0b1000, - 0b1000, + 0b11100, + 0b10010, + 0b11100, + 0b10000, + 0b10000, }; const uint8_t letter_m_data[5] = { - 0b1111, - 0b1011, - 0b1001, - 0b1001, - 0b1001, + 0b10001, + 0b11011, + 0b10101, + 0b10101, + 0b10001, }; const sprite_t spr_a = { .width = 5, @@ -62,7 +74,6 @@ class SimpleClock::AmPmLabel: public Composite { .mask = nullptr, .format = SPRFMT_HORIZONTAL }; - }; SimpleClock::SimpleClock(): DroppingDigits() { From e58c38a9d0a56ce659adee557ade548af584e50a Mon Sep 17 00:00:00 2001 From: akasaka Date: Thu, 3 Oct 2024 08:49:43 +0900 Subject: [PATCH 09/21] Nitpicks --- include/app/new_year.h | 1 + src/app/new_year.cpp | 7 +++++++ src/service/power_management.cpp | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/app/new_year.h b/include/app/new_year.h index ec24cc4..e5d1b02 100644 --- a/include/app/new_year.h +++ b/include/app/new_year.h @@ -11,6 +11,7 @@ class NewYearAppShim: public Composite { void prepare() override; void render(FantaManipulator*) override; void step() override; + void cleanup() override; private: enum DemoPhase { diff --git a/src/app/new_year.cpp b/src/app/new_year.cpp index fa88ccf..addf6de 100644 --- a/src/app/new_year.cpp +++ b/src/app/new_year.cpp @@ -6,6 +6,7 @@ #include #include #include +#include static char LOG_TAG[] = "APL_NY"; const unsigned bg_left_margin = 28; @@ -98,6 +99,7 @@ void NewYearAppShim::prepare() { Composite::prepare(); start_time = xTaskGetTickCount(); phase = INTRO; + power_mgmt_pause(); sequencer->play_sequence(&abba); } @@ -167,3 +169,8 @@ void NewYearAppShim::step() { break; } } + +void NewYearAppShim::cleanup() { + Composite::cleanup(); + power_mgmt_resume(); +} diff --git a/src/service/power_management.cpp b/src/service/power_management.cpp index 08791bf..0eea63b 100644 --- a/src/service/power_management.cpp +++ b/src/service/power_management.cpp @@ -194,7 +194,7 @@ void power_mgmt_pause() { vTaskSuspend(hTask); display->set_power(true); #if HAS(VARYING_BRIGHTNESS) - display->set_bright(prefs_get_int(PREFS_KEY_BRIGHTNESS_MODE) != BRIGHTNESS_AUTOMATIC); + display->set_bright(true); #endif display->set_show(true); beeper->set_channel_state(CHANNEL_AMBIANCE, true); From dd79a9f3ce9df69d59728dc2032d7979e9d90b21 Mon Sep 17 00:00:00 2001 From: akasaka Date: Thu, 3 Oct 2024 20:17:43 +0900 Subject: [PATCH 10/21] Ado - Odo --- README.md | 1 + data/music/036_odo.pomf | Bin 0 -> 2444 bytes helper/chimes/odo.mid | Bin 0 -> 8815 bytes src/music/036_odo.cpp | 2517 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 2518 insertions(+) create mode 100644 data/music/036_odo.pomf create mode 100644 helper/chimes/odo.mid create mode 100644 src/music/036_odo.cpp diff --git a/README.md b/README.md index 94f92ad..35d1f1b 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,7 @@ You can also read the quest I went through trying to get it to run "in real time * [Ennio Morricone - My Name Is Nobody](https://www.youtube.com/watch?v=srSpyXwz-MQ): [MIDI](helper/chimes/mynameisnobody.mid) * [PPK - ResuRection (ППК - Воскрешение)](https://www.youtube.com/watch?v=KvOR2E_hZsw): [MIDI](helper/chimes/ppk.mid) * [Owl City - Fireflies](https://www.youtube.com/watch?v=psuRGfAaju4): [MIDI](helper/chimes/fireflies.mid) +* [Ado - Odo](https://www.youtube.com/watch?v=YnSW8ian29w): [MIDI](helper/chimes/odo.mid) ## Creating your own melodies diff --git a/data/music/036_odo.pomf b/data/music/036_odo.pomf new file mode 100644 index 0000000000000000000000000000000000000000..cbacfffb308b1b34c44823daf9e8bda86c2793b8 GIT binary patch literal 2444 zcmZ{kc{~%01IFi#F!3Vy5i?sfuN);xg&etuaxF_}a>Q)*=17MyM-(>qG0e5ta@LF? zH*@7!D)$jNb03x8`}_Czd4JF6^ZfICpMReRZv7C&!J+TrFaMXkwTD08-}V2=zxV$) z4a7M+3-AH}t7`w)`D*kn2N9;`EM-tHhcn3_x?jTOtE(eKNkyVvArhz%CoEPC=OGL8 zr+Zg?hLV9QWc5PCCq<)JkB7D%AOj$1M?~2G$cOk+zkVgOpT5TmtI}jpwU{%T3*%Vk z*3-2Hf25~1&-B1^ly>a&_Lts)uwkF}5P$5W_jKOdTU87ZE!vuV>)76oll4;0%vu*~ zaiwuwJ2YR7A?0}ht7n&tco_zbP?9CYGVh(aaXk22kecHiwWj`4apI2Vo%!)s^2qo= z-mY8;e0+(wq@s@m(sfrZ4QI3jfXl5DIKI;m&~u+`YASG30aXRePm;td(pu*OcDMSV z_>Kbb%LK7(zRVl4&e}2<1{Q5suGb!^W^DQq;th9khc$!4B<@aMm0MCwNx>Zvdh@+8 zsaQI|a)U&jB5rP57;3>^;Z?+R-`lMyL28tF*XjKs@`?11h+ zs}`((j+sgbo(zkcd0|_ z;(T-#Px_&xW~5s4=M19jR6I6nn%@|ha$;+}^<#w0qsl@6B4l^d&<~ksBOmHuSat!2 z!`*ZeRpQ|_y^P)yg)T$V-OpE6RywLi`#vvZ83v#v3=l1hQw5yCAYpdivwWEZtD6{j z)nk*O4KGWWKmL~K^Fv8+&l!%AR}qU{rd6$h#zf0+(K~7e-()$GVr13N^nbLlYr7Ku zi!lH4t03OVPIj3;S32-YwQ#D1YdFSN$o!#4(FiBW0p}K{qHL7gcdt~ml0271c49_< zWMwC$H7GCX^dy#xGNn)&hBfgO8l%KCm?`q8O*NMmUs?B_z&19IWFaXaQWY=+QozT} zNDR^$Y8q>AgW7;SFkWe?#-0SOnhS>AQ5s_dieky%m=JaHwMyxJ_@3MA&yTQo!B9cs{*9*45YCPN|;L@Lf zwLz{aO%~c3t3|#X$9`fnP?boX^9+wQ0{ym_lC$PH4pOOy+Ri}7TY0*g1($iAEaCTG z#wI6(ds}5G3%Z-YD1V8f`VHxSkW_^{PWy$HuD6tUACygvtEB09p?N(^Gv3PD^A9JF z`Xw>oO?;psk${4Z9S5N7Z7HM=QvytCmSY|_d|xiRet|06*PKOm{X=fz|TfeHjK~SeRUzcy@qvmArh5F!ARk|rOci1F*U9ZeJ-sct4Y0$j!7O%17{hEyf)!;^@pOBuzS!-Kbs&;EC- zH{~?pH%AMkCXnO5LqdsQp>28bYVrqDhX)#u!!(Fa(;70Nk9|5QUw0ib;-y#BE8-b+ z5&)7Y&6ViWJt)-^r}taQ!YfeW(Zy6m?7SLfdX?1DrwN$AmoCgK{i)5q672{KYd@yeZ5WoKQo2P&)^Ck~1K4cB@hT=xUA zcE@d5%zdnAl1d1B@Wqwjo$KJn+=O!F{qtx08*{BOEm>enIJkY6M_usB=iR<%KqAuZ zF!A9|VGZ~C2{u^bPgp=iXkC#SYue?yqiy2B2M3FTaz<01IQo+fY$72A!@YyD*&A^w z^E%P?RG{`TR6yE8N!6ISNqAokJ!@1hA_X5qL_LXIe87*Ft?_i4?~Jbaao#>X@^GIL;$uag zRjAfFOypA~JFkOD*uf@}43z)8kFfsZtq4Y|0@KwwE@%{Q!27CI#E%qB=jqU|?LMX{ zU7M{KW&zET_Fn9&JeO@SCJyKfoHCI{*v7e9%-8Y>ta~K9Bg^#7a$Vm_2fQt(p*l4f zX)V|zeevXor+%*=fv=fwL`i0QU3{u8ejyp3q9Mi?lx7*HNbVCtk{{&Xee$=dp+HN? zGE0l8cAH<=GblQ-&8GXTSl zU3KCdW@7P|qBg?W-lJ|2k2<*TVM+ET^p548bF*FD2xwnp1KP-o6&1O;sK z*SmTFP~lcE4X0QS-F)(CJI>e5tc}cpcCw8v#J~G|IfYkY;&1n0^f8MlLRW=VGVlaSf?H0lN5ou{UJ<&>(NwrZTz0NO{t3-3%^F zKiDL6jyKH5$hCgnyoD})y=_3rxRvfhFLEyR5;79qbCEan$jc0DJGf_^CGmygn}3Go z8`81^br3D0mY}%Q;g>b}eru*$)IWKkuLwUe|0yPyFYd+O`!@HV-W!!JD;M4tp;ZjC z#fj88x2uYf^sQ6i3pFjTRNUVwROrsi=1yCj?GN(vEjTR+Z~1zwS!kyNEPUQ9WxeJq*>-(?!&u?sP75*VC9&c@}|Bb~3y?D5plh?l% z-{`{M<%iz$_Oru6=|Zm5dr*+8IkBMnS@s;}N(%=$k;5(ME$9c(51{kVdFU*37J9XW zoBrCtD(lB3`x!p1gU2{hC3T=Y=38lu<;)?N?VUAm>s-kq_I3z{&JmK%DT_RdJX@-H zIhauMI+u$U`B~)RhuubnZ(R?IdUTf;kQd$}SL~_FVq!6Sufq3hSX*Mbgo-Lvbvj!6 znAD5nWJZQwsagjsVo}s9huOs{*-qlmjn57AkPKzhgwdR z9x1On4_1}e`P_zIy_HSH9&-4opbj4C*ow-Fd~H`9tU+%)Q3o4fzM?BxWgyNUu2jO< zgx`WX?h)ed!LC1B8OF3fE5j$KLZv^4tRVe4WJ?u2!pbYw#0UG?Z;mhiI@LQfAuCoE(uA+4&lR?u4Mh&8WRxk{AL3mtYxzqk*G zP9L)@sE=0;)FZnB>Y|&dO?rklX!z}HJ}_;+d!5quhVpQWgtuB{88}v^3N;xe@WEpV z4?xGDd9Glm6Dp8U0lW>~2K{n#CZV(P{D8tM_aBebawuKZ-cJ`Saud6tC&yFQdNe%;7qBfqy61#nyn#<`;9` zz1hQD#`INXu7d}Rkazw;&VTE+4q5Wg-cWtN5h+Wotn7$LOr$Z%auSS}C0UkK*`BxK zBAgkYxa-`{~8lz%bpMmR365mx-4my(;{j19Ac?s`~v&} z94$+NC1E7I2$jyfrDc2#qB7`d`w@Fpu>A5_jZ`^orzG4JljNr(8OF;nySz(3j=qi} zhJFnFB>t25?~ca5!oT3(A|7ezw0WTEwrUnGHFuUJk2UJz6{Rr+Qr;7t^?Rj9!}3PM z_%zn@ROUML zb?x;obKPHG_R1A|Xcp@k7@DK!^$hkW_y6SYm(!10>z=fjLyI{y?@D9P`hGC? zsd+<*m($z>1C8_&g(vm!s%tSx0QWC7vIVAA3VDqwZWuIXuwaTcw(F z3tRvfq@zF~5SLFECnYtPsGM=By1el?yzzhvwCCOFa@d)ca98BGIb2NcB@8cNIEDTc z`rXiXEH1~>iJ;G`6#<01V%xvMzccM7%XZP>Vr5YS?ID-9R)?FI927Z-%bSqH+bgI* zaleNC8ae^ZL*_@`JNDg$AF z)~fQVdV51Tx8dK}RL&i6v7nqqaH*)ACGhU9a_)lnpD5=($hWVPqquh}Vf4dqK?}L% z@=fgUJ5>vPd&^B%bnwdIMaxwcl{eqX7<1T~z3uT**MR}c{cWO5KKagyN;uEa1-1F^K9(vRRUZLa1b0o zuE0)qlkl$w@+=8iBxJe#Mo0HYf{7RRbH?#=?D<4-_(XA|ATOEjRq!gv2am&BHb*ec z5gc%bw$sodXnn|io{snt1v&3H!DIbZlxxU4nDK%R5~zt)ob{5Eau#_*%{ zjothDG5Q8i#*@hCWK}&uObKG*%m;W{S_O6|@x^sE=xKho_q_g@^fX8IbSbONOVF3( zPt6DzfzM|Mg{d~f&|&y({paZSbkMJ$KZ?Hn2Mo@#!O4Jd7?FCsIhnEQdGXFghB~Fon)(?^ShuGQontZE!y}kkJQu6yjoiEQOzbAOT=gYs& zk3~&>Dez_>RZiDaGSHmePD6(XRR74t#A`Q$NhBVpO_iev(Cdt?hftr?_m7@re)Zys z%(bwXiM}XGqD6l!d1t@&)X|%Q&Wtc2%@9(UQ0)m!jx&s)jVI;rOB=n@;a>{`6e2>a z1Ny}@Ir_MQ-nE^~IZXO?H&+is^k|2+?r@U)_C9U3(G0`M_I={(ai0(Bl?du(#`d&) zWB1*aqg@)ZE19Eha2wnNHzm`04)%`K_rKrGL|^X8OBE~<0X{uOTPWB?7_CJCj@D41 z7{Sm9MtwPuRNsNNwhZAa6DWQFquU5gZdl*I@_iJ$Irv}ko#AdN z+TR8#yk&7@I&Z@L?)>-PWYjm(- +extern "C" const POMFHeader POMF_HEAD = { + POMF_MAGIC_FILE, + POMF_CURVER, + "Ado/Giga/TeddyLoid - Odo", + "Odo", +}; + +extern "C" const melody_item_t POMF_TUNE[] = { + {DUTY_SET, 0, 4}, + {DUTY_SET, 1, 10}, + {DUTY_SET, 2, 10}, + {DUTY_SET, 3, 12}, + {FREQ_SET, 0, 1568}, + {DELAY, 0, 27}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 89}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 1568}, + {DELAY, 0, 23}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 207}, + {FREQ_SET, 0, 1480}, + {DELAY, 0, 23}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 740}, + {DELAY, 0, 207}, + {FREQ_SET, 0, 1318}, + {DELAY, 0, 23}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 207}, + /* LOOP */ + {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_LOOP}, + {FREQ_SET, 0, 1046}, + {DUTY_SET, 0, 6}, + {DUTY_SET, 1, 10}, + {DUTY_SET, 2, 10}, + {DUTY_SET, 3, 12}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 3, 82}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 156}, + {FREQ_SET, 1, 147}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 199}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 1, 165}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 156}, + {FREQ_SET, 2, 293}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 199}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 199}, + {FREQ_SET, 1, 207}, + {FREQ_SET, 1, 293}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 199}, + {DUTY_SET, 0, 4}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 329}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 82}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 55}, + {FREQ_SET, 1, 55}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 82}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 199}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 1, 131}, + {FREQ_SET, 3, 65}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 1, 131}, + {FREQ_SET, 3, 65}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 199}, + {FREQ_SET, 0, 1568}, + {DUTY_SET, 0, 6}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 3, 61}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 27}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 7}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 1568}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 3, 61}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 23}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 50}, + {FREQ_SET, 4, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 1480}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 3, 55}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 23}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 740}, + {DELAY, 0, 7}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 82}, + {FREQ_SET, 1, 110}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 1318}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 3, 46}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 23}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 7}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 1, 92}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 1046}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 3, 41}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 117}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 147}, + {DELAY, 0, 234}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 165}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 1, 185}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 156}, + {FREQ_SET, 2, 293}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 199}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 117}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 207}, + {FREQ_SET, 1, 293}, + {DELAY, 0, 234}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 329}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 156}, + {FREQ_SET, 2, 247}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 82}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 55}, + {FREQ_SET, 1, 55}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 1, 110}, + {DELAY, 0, 78}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 196}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 2, 110}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 55}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 58}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 92}, + {FREQ_SET, 1, 155}, + {FREQ_SET, 2, 61}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 2, 61}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 234}, + {FREQ_SET, 1, 55}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 110}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 1, 46}, + {FREQ_SET, 3, 123}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 92}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 1318}, + {DUTY_SET, 0, 8}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 3, 82}, + {FREQ_SET, 4, 2217}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 2, 196}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 2, 196}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 2, 196}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 165}, + {FREQ_SET, 2, 82}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 175}, + {FREQ_SET, 0, 1480}, + {FREQ_SET, 1, 61}, + {FREQ_SET, 2, 31}, + {FREQ_SET, 3, 123}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 2, 185}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 2, 185}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 2, 185}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 2, 185}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 2, 61}, + {FREQ_SET, 3, 123}, + {FREQ_SET, 4, 2217}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 175}, + {FREQ_SET, 0, 1568}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 41}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 165}, + {FREQ_SET, 2, 247}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 165}, + {FREQ_SET, 2, 247}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 165}, + {FREQ_SET, 2, 247}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 165}, + {FREQ_SET, 2, 247}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 165}, + {FREQ_SET, 2, 82}, + {FREQ_SET, 3, 123}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 175}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 1, 61}, + {FREQ_SET, 2, 31}, + {FREQ_SET, 3, 123}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 261}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 494}, + {FREQ_SET, 1, 196}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 58}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 185}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 1046}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 3, 82}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 117}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 147}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 2, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 220}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 1, 220}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 523}, + {FREQ_SET, 1, 247}, + {FREQ_SET, 3, 123}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 220}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 207}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 494}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 110}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 104}, + {FREQ_SET, 3, 123}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 1046}, + {FREQ_SET, 1, 55}, + {FREQ_SET, 1, 110}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 117}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 165}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 196}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 261}, + {FREQ_SET, 2, 131}, + {DELAY, 0, 234}, + {FREQ_SET, 1, 55}, + {FREQ_SET, 2, 110}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 195}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 61}, + {FREQ_SET, 2, 123}, + {FREQ_SET, 3, 98}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 61}, + {FREQ_SET, 2, 123}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 234}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 69}, + {FREQ_SET, 2, 138}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 78}, + {FREQ_SET, 2, 155}, + {FREQ_SET, 3, 123}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 117}, + {DUTY_SET, 0, 6}, + {FREQ_SET, 1, 82}, + {DUTY_SET, 1, 6}, + {FREQ_SET, 2, 0}, + {DUTY_SET, 2, 6}, + {FREQ_SET, 3, 155}, + {DUTY_SET, 3, 12}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 62}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 54}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 179}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 54}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 117}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 155}, + {DELAY, 0, 234}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 3, 155}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 62}, + {FREQ_SET, 0, 698}, + {DELAY, 0, 54}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 179}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 54}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 117}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 155}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 329}, + {FREQ_SET, 3, 155}, + {DELAY, 0, 11}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 11}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 2, 329}, + {DELAY, 0, 54}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 50}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 50}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 54}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 2, 329}, + {DELAY, 0, 11}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 144}, + {FREQ_SET, 3, 155}, + {DELAY, 0, 11}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 144}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 2, 349}, + {FREQ_SET, 3, 155}, + {DELAY, 0, 11}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 50}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 2, 349}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 58}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 58}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 11}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 50}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 54}, + {FREQ_SET, 0, 698}, + {FREQ_SET, 2, 349}, + {FREQ_SET, 4, 1975}, + {DELAY, 0, 30}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 203}, + {FREQ_SET, 3, 155}, + {DELAY, 0, 11}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 329}, + {FREQ_SET, 3, 155}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 370}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 31}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 164}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 392}, + {FREQ_SET, 3, 155}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 78}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 31}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 164}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 932}, + {FREQ_SET, 2, 466}, + {FREQ_SET, 3, 155}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 0, 1046}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 523}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 31}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 1108}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 554}, + {FREQ_SET, 3, 155}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 78}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 1244}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 622}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 31}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 74}, + {FREQ_SET, 0, 1318}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 784}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 31}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 203}, + {DUTY_SET, 0, 4}, + {FREQ_SET, 1, 1760}, + {DUTY_SET, 1, 6}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 15}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 15}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 1760}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 15}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 15}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 1760}, + {FREQ_SET, 2, 440}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 15}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 15}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 15}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 1760}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 15}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 15}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 1760}, + {FREQ_SET, 2, 440}, + {DELAY, 0, 15}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 101}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 15}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 97}, + {DUTY_SET, 0, 6}, + {DUTY_SET, 1, 6}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 1318}, + {FREQ_SET, 2, 659}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 23}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 7}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 23}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 93}, + {FREQ_SET, 0, 1318}, + {FREQ_SET, 2, 659}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 19}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 93}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 61}, + {DELAY, 0, 19}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 93}, + {FREQ_SET, 0, 1568}, + {FREQ_SET, 2, 784}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 49}, + {DELAY, 0, 15}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 34}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 15}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 58}, + /* HOOK */ + {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_START}, + {FREQ_SET, 0, 523}, + {DUTY_SET, 0, 4}, + {DUTY_SET, 1, 10}, + {FREQ_SET, 2, 261}, + {DUTY_SET, 2, 6}, + {DUTY_SET, 3, 12}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 65}, + {FREQ_SET, 3, 32}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 131}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 98}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 131}, + {FREQ_SET, 3, 65}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 98}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 523}, + {FREQ_SET, 2, 261}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 131}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 1046}, + {FREQ_SET, 2, 523}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 61}, + {FREQ_SET, 3, 31}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 2, 494}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 185}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 1, 247}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 185}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 155}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 3, 41}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 293}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 165}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 293}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 196}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 1046}, + {FREQ_SET, 2, 523}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 73}, + {FREQ_SET, 3, 36}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 147}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 2, 494}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 220}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 147}, + {FREQ_SET, 1, 293}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 220}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 185}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 46}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 147}, + {DELAY, 0, 74}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 65}, + {FREQ_SET, 3, 32}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 131}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 7}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 98}, + {DELAY, 0, 74}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 131}, + {FREQ_SET, 3, 65}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 98}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 46}, + {FREQ_SET, 0, 659}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 131}, + {DELAY, 0, 74}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 61}, + {FREQ_SET, 3, 31}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 7}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 880}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 185}, + {DELAY, 0, 74}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 1, 247}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 185}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 155}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 3, 41}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 46}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 74}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 165}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 196}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 73}, + {FREQ_SET, 3, 36}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 147}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 220}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 880}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 147}, + {FREQ_SET, 1, 293}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 220}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 185}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 147}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 523}, + {FREQ_SET, 2, 261}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 65}, + {FREQ_SET, 3, 32}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 131}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 98}, + {DELAY, 0, 74}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 131}, + {FREQ_SET, 3, 65}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 98}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 74}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 523}, + {FREQ_SET, 2, 261}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 131}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 1046}, + {FREQ_SET, 2, 523}, + {FREQ_SET, 4, 1108}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 61}, + {FREQ_SET, 3, 31}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 1108}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 2, 494}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 185}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 1, 247}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 185}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 155}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 113}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 3, 41}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 156}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 293}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 165}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 587}, + {FREQ_SET, 2, 293}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 196}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 1046}, + {FREQ_SET, 2, 523}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 73}, + {FREQ_SET, 3, 36}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 156}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 147}, + {DELAY, 0, 54}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 58}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 2, 494}, + {FREQ_SET, 4, 1760}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 220}, + {DELAY, 0, 35}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1975}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 147}, + {FREQ_SET, 1, 293}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 220}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 185}, + {DELAY, 0, 74}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 147}, + {DELAY, 0, 74}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 1318}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 65}, + {FREQ_SET, 3, 32}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 131}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 7}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 98}, + {DELAY, 0, 74}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 131}, + {FREQ_SET, 3, 65}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 98}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 131}, + {DELAY, 0, 113}, + {FREQ_SET, 0, 1480}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 61}, + {FREQ_SET, 3, 31}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 7}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 0, 988}, + {DELAY, 0, 39}, + {FREQ_SET, 1, 185}, + {DELAY, 0, 78}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 35}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 988}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 1, 247}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 185}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 155}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 113}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 3, 41}, + {DELAY, 0, 74}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 784}, + {DELAY, 0, 78}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 1568}, + {FREQ_SET, 1, 155}, + {FREQ_SET, 1, 247}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 392}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 203}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 165}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 247}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 31}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 19}, + {FREQ_SET, 1, 247}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 19}, + {FREQ_SET, 1, 247}, + {DELAY, 0, 58}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 15}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 247}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 156}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 123}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 203}, + /* HOOKEND */ + {LOOP_POINT_SET, 0, LOOP_POINT_TYPE_HOOK_END}, + {DUTY_SET, 0, 10}, + {DUTY_SET, 2, 8}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 165}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 156}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 147}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 196}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 220}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 73}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 147}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 196}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 220}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 73}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 659}, + {DELAY, 0, 191}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 2, 659}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 659}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 46}, + {FREQ_SET, 2, 659}, + {DELAY, 0, 39}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 587}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 87}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 174}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 2, 698}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 82}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 659}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 659}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 125}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 659}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 35}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 659}, + {DELAY, 0, 74}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 659}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 587}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 87}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 174}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 2, 698}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 82}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 659}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 35}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 659}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 203}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 230}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 147}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 196}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 220}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 73}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 89}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 4, 1760}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 74}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 147}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 196}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 3, 220}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 73}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 5, 2093}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 74}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {FREQ_SET, 4, 2349}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 27}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 85}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 1318}, + {DELAY, 0, 191}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 2, 1318}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 74}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 1318}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 74}, + {FREQ_SET, 2, 1318}, + {DELAY, 0, 39}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 1174}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 87}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 174}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 2, 1397}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 1318}, + {DELAY, 0, 113}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 220}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 1318}, + {DELAY, 0, 191}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 1318}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 74}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 1318}, + {DELAY, 0, 74}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 1318}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 1174}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 87}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 1, 82}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 174}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 261}, + {FREQ_SET, 2, 1397}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 41}, + {DELAY, 0, 113}, + {FREQ_SET, 3, 82}, + {DELAY, 0, 3}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 1318}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 247}, + {DELAY, 0, 35}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 82}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 41}, + {FREQ_SET, 2, 1318}, + {DELAY, 0, 191}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 234}, + {FREQ_SET, 0, 1174}, + {FREQ_SET, 1, 0}, + {DELAY, 0, 19}, + {FREQ_SET, 2, 587}, + {DELAY, 0, 97}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 19}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 0, 1568}, + {DELAY, 0, 19}, + {FREQ_SET, 2, 784}, + {DELAY, 0, 97}, + {FREQ_SET, 0, 0}, + {DELAY, 0, 19}, + {FREQ_SET, 2, 0}, + {DELAY, 0, 97}, + {FREQ_SET, 1, 82}, + {FREQ_SET, 2, 41}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 87}, + {FREQ_SET, 2, 43}, + {FREQ_SET, 3, 174}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 92}, + {FREQ_SET, 2, 46}, + {FREQ_SET, 3, 185}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 98}, + {FREQ_SET, 2, 49}, + {FREQ_SET, 3, 196}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 104}, + {FREQ_SET, 2, 52}, + {FREQ_SET, 3, 207}, + {DELAY, 0, 117}, + {FREQ_SET, 1, 110}, + {FREQ_SET, 2, 55}, + {FREQ_SET, 3, 220}, + {DELAY, 0, 117}, + {FREQ_SET, 0, 247}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 2, 61}, + {FREQ_SET, 3, 247}, + {DELAY, 0, 191}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 0, 220}, + {FREQ_SET, 1, 110}, + {FREQ_SET, 2, 55}, + {FREQ_SET, 3, 220}, + {DELAY, 0, 191}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 784}, + {DUTY_SET, 0, 6}, + {FREQ_SET, 1, 123}, + {DUTY_SET, 1, 10}, + {FREQ_SET, 2, 61}, + {DUTY_SET, 2, 10}, + {FREQ_SET, 3, 165}, + {FREQ_SET, 3, 165}, + {DUTY_SET, 3, 12}, + {FREQ_SET, 5, 2489}, + {DELAY, 0, 116}, + {FREQ_SET, 0, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 74}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 0, 784}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 2, 61}, + {FREQ_SET, 3, 165}, + {FREQ_SET, 3, 165}, + {FREQ_SET, 4, 2093}, + {FREQ_SET, 5, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 78}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 74}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 42}, + {FREQ_SET, 0, 740}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 2, 61}, + {FREQ_SET, 3, 165}, + {FREQ_SET, 4, 1661}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 2, 61}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 78}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 659}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 2, 61}, + {FREQ_SET, 3, 165}, + {FREQ_SET, 4, 1397}, + {DELAY, 0, 39}, + {FREQ_SET, 4, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 1, 123}, + {FREQ_SET, 2, 61}, + {FREQ_SET, 3, 165}, + {DELAY, 0, 78}, + {FREQ_SET, 1, 0}, + {FREQ_SET, 2, 0}, + {FREQ_SET, 3, 0}, + {DELAY, 0, 39}, + {FREQ_SET, 0, 0}, +}; From b829faa8fe422927d07ff4967dcf2db5684693d5 Mon Sep 17 00:00:00 2001 From: akasaka Date: Mon, 7 Oct 2024 23:03:35 +0900 Subject: [PATCH 11/21] small bugs here and there --- src/app/alarming.cpp | 2 +- src/main.cpp | 1 + src/music/036_odo.cpp | 2 +- src/network/admin_panel.cpp | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/app/alarming.cpp b/src/app/alarming.cpp index d2a8f98..638baf5 100644 --- a/src/app/alarming.cpp +++ b/src/app/alarming.cpp @@ -252,7 +252,7 @@ void app_alarming_process() { break; case SNOOZE_HOLD_COUNTDOWN: - if(!hid_test_key_any(KEY_LEFT | KEY_UP | KEY_DOWN) && snooze_hold_remain > 0) { + if(!hid_test_key_any(KEY_LEFT | KEY_UP | KEY_DOWN | KEY_HEADPAT) && snooze_hold_remain > 0) { state = HINTING_SNOOZE; // fail to hold framecount = 0; } else if(snooze_hold_remain == 0) { diff --git a/src/main.cpp b/src/main.cpp index a96dc56..2ea11a4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -134,6 +134,7 @@ void bringup_temp_sensor() { if(!sensors->add(SENSOR_ID_AMBIENT_TEMPERATURE, new Am2322TemperatureSensor(tempSens), pdMS_TO_TICKS(5000))) { con->print("T sens err"); beepola->beep_blocking(CHANNEL_SYSTEM, 500, 125); + return; } else { con->print("T sensor OK"); } diff --git a/src/music/036_odo.cpp b/src/music/036_odo.cpp index b3f9d78..f2022e3 100644 --- a/src/music/036_odo.cpp +++ b/src/music/036_odo.cpp @@ -2,8 +2,8 @@ extern "C" const POMFHeader POMF_HEAD = { POMF_MAGIC_FILE, POMF_CURVER, - "Ado/Giga/TeddyLoid - Odo", "Odo", + "Ado/Giga/TeddyLoid - Odo", }; extern "C" const melody_item_t POMF_TUNE[] = { diff --git a/src/network/admin_panel.cpp b/src/network/admin_panel.cpp index ec201e9..b0a8b13 100644 --- a/src/network/admin_panel.cpp +++ b/src/network/admin_panel.cpp @@ -568,6 +568,7 @@ void action() { save_string(PREFS_KEY_TIMESERVER); save_string(PREFS_KEY_TIMEZONE); save_int(PREFS_KEY_TIME_SYNC_INTERVAL_SEC, 600, 21600); + save_int(PREFS_KEY_SCRN_TIME_NEXT_ALARM_SECONDS, 0, 3600); save_int(PREFS_KEY_SCRN_TIME_CLOCK_SECONDS, 0, 3600); save_int(PREFS_KEY_SCRN_TIME_INDOOR_SECONDS, 0, 3600); save_int(PREFS_KEY_SCRN_TIME_REMOTE_WEATHER_SECONDS, 0, 3600); From c104f3cee8a30c1c7eb4af5450109fb4ab00e0b5 Mon Sep 17 00:00:00 2001 From: akasaka Date: Wed, 9 Oct 2024 19:48:18 +0900 Subject: [PATCH 12/21] Delete microPISOS target; small fixes --- data/music/036_odo.pomf | Bin 2444 -> 2439 bytes include/app/menu.h | 4 +-- include/device_config.h | 4 --- include/devices/smol_clock.h | 50 --------------------------- include/service/localize.h | 2 +- include/service/prefs.h | 2 ++ include/views/menu/boolean_setting.h | 12 +++++-- platformio.ini | 21 +---------- src/app/alarming.cpp | 6 ++-- src/app/menu.cpp | 9 ++++- src/display/ws0010.cpp | 4 +-- src/main.cpp | 6 ++-- src/network/admin_panel.cpp | 5 +++ src/service/localize.cpp | 5 +-- 14 files changed, 41 insertions(+), 89 deletions(-) delete mode 100644 include/devices/smol_clock.h diff --git a/data/music/036_odo.pomf b/data/music/036_odo.pomf index cbacfffb308b1b34c44823daf9e8bda86c2793b8..9bf0ddd3904e19a21c0e4a3116bfbe1069ab440a 100644 GIT binary patch delta 2307 zcmV+e3H$_7(rxjFGp!-VJ}o=WMp|vZ)s#8Eg(;1Z;>%5 z33PQ@S_ugN0O*l#DiBzShD^0sZ4*)j7Sfo~Ez*&xJAV-By&-fDJD`F zeSOwbx~I5%GBY~+Z#T}KD9o`wz^zqI3YLk9W!d^;azu73`?m*g9~w*->BY zjLMx2n}3%$`*~-R!{gBrMn{Xzh0UQ3EgTNH-8s0aRv_a-7^5WV5;drtG!g*CXBv}XFQ)J@0wH$NImU zQGbHG5Q*zhKv51yCnPzjS-vAY__U^#w?nF=K>du7Wsd;VM?&=Eq*-D*qspdp#CjN^ z^Ns+?#Euw`XKALX;vK<$%5p|-h{LR@j`fDm4Z0m#iAyFhK{>XFr8Y9tY68%!ILJ`umMWCx5G0v{=mpcGnbo$i zT0SdyHwz|E8eGCzswQlQRRi^;wSSxBE)?)W$h24Z{;$oJw)=s~_$!Q492z8{;C?6% zMgQ8KG)0BYl65wcxY}Y9a|I}N}>=EU7lyk6{$ni~7Lo~3BrsWVh?kUG_ z6UunhaMXWKVI|?csjOA@Fx=E=szu?~BY^n%nsUr_M+_ug(aK>wgw%K21b;1M93t`( ze(R~IhIbQtdrD^qgxqpoHKoz~p2{!|rj*kKsV9eTWSz7xgs1xsrV%n8x+;a23Es^` zwrz5VF2;ttKIt^&#{*0+GU52LjpJ5`uURn2ITVqpQF)>>PpR%~dR?LH40|))S-3N7TwCkq^$wFCi2uY+3@Nk?CR)mXc^ zpm8npiFu(J=Ib14eD`5VVpmW<*E}H93TCbOvQlp2?taFRv|(lAdllA^$eoM4Bo+Xe zMPm|?YXy-j%7MPYmf?-&DFJmfmC=dZ_5JMQTq>Y~yY&C_qW%MnUA7aRAj#J6;poeF0k_j9Cp--x1*)pLA_bjeRUUW+CcH2gMTfbiNgjNii?r2JS8rz z$w|@at0C`u9&=rRLCL-<=?X&LYUq(W$v?gXG$mOi7Qrh~NjY~H3QXu)S6$Q8IyD=G zv6U8FZ2XH=W}$FxldI%ztgDF$d4UP2E3om4>vff3`q5!ea(k_qrn0wn(VSBb@JcA` zJsiUAOtp9VR)1D~g_@+SoT-HZv-coYWxU*anP|%9p&|uftc&fHx2S6d^3Mq9Tr@B! zhe^ZBnnV!aJmD^}h%cDdBA)f3P{JcIg&QbhF2Zq;t@8gXiqCi~HM4?}ftA81?%r55e+N>NHFHBW~#1Vt|(`S=; z@->8l>S_SQ*{>`Lrdn$h)L}jfC9kzcAw)s)O6vEJ?xiLG^>4E7M}U$=PS?}Ew4jJ>3rU69SN_A zd=NJMBAb{}F=+r?mXu=Y;jOlgWrB#e-B@0V076HoQdFHTtr@F@_)5a)^egli`l{x$ zeCyKgXI*A}4f5H4Ehw*}3A#FZvmU*^Q0RJ;?0;lzQOft!yAqT{ZoWJva(8ce;s>#| zJQdt2B)yQTCROHIuBldPT0~LBeHRE3S?DHRalYRZC&soao2Umfo8EA}$yJ4^E2>#R z43y5yg8$4V6R#gy5DC;kId5I}NNU91BtBMWrjbSPw}_<~+j) zO@Hn1Bg@#WNG#8I$7eXx$upiC+vr3F)G#+ya76uah?esiK5MM8Wt!LTn|Rc(PlwI^ zBG2yN*{68+RG;0&vvVQ#7fTBqzvM$XdI&zCfi;H28^Z!hiCE9c@+l4A<)25$;Fs>S zl7oCtvyT4qb=bTF<}? zk#8yxq!JC8YO&fTqzWvgF{NABk*Pa>(0$Zv#(HmaceuF;Rr9mE6gIE!AjH}C^;u8p zp5pGw%;@aD-8g%qFuNLO`76BFsMTpic-5+t7#5ph9z*}p{t&L7YKHDH{3PC7GhF4} zk04%+bP36y7>A9hY8fPJ7+zrZADDGT=>Sk4@00=RuUjT6*ip5yb>MNcqrTXG8I?O5 zHZO7Z^UfxR$D<>RjuxE@n?oI1I2>}jb8u6wK*ohIMoH2oYEWHcE5Rdu7+>K%AL%5P zmUa7-&7x{@mvgxQP4J+u;Fa?9Ohh(NkB2N4Jh)TrC?&Ni3GY^Sa+DK_@=3_7ELA|8 zz158z6!jrxfV2?2fpXxEdEb41hTn`ObDY_}9=4tBMM0YFl-8cqgs0rLoJRvh`KCf@U_9KLP-R3wrW9%5le=wdH@upV@Z3$ zn$)f(;Lcx?Ck8vv)0bq=A1-vW*9<$Tf@5yqXc;& z64#-Cq8yG+NODlKd`EcjX-z9{hg3;{`WYk39s#J2gy_jhv&3{pl}+b}^)N!`9RZSw z9Wfry(o9puJA(a`<&4}Ahgnk{>kXe9bUU;XmrP)Sa%>SxZDgj^1fW-SVv8&(MW4=L zsTH!M6A)vDgdL^R^2fLAYIn%(|#>FO4BV=-ExlCwJtiH-Yod!&A#S?FwivWq@&KqmF z8XF2gZ*X*M3pZvyrakXM&1FA^uF@A5RGXcr3go zQsO4v#0bg35bFqj>4*4?ij$6lYEGOf5MxIxsx1{}&qTQbpe_+)6K;E{@588S`K;jG zESNxPa0zFrny?*zRt?mX)^3u!P{0cz(_Z2GzcyRi?guL4uP{z=Xpn@0`=LA({cC&D z6csj0*4aqnW-GnpmR&%xqotMoQ*Sl1N0j4X&cR|L$G1@p(ZDvEmP6#Ys~o>gDC1$n zQU5)Km4x@EvR2u{a8skH7KLAr0OIFs$}!g+F_3gcD~Iua5K`Z16SS0Zh{#L$t*4?I z-c9W7DV-ew#gy7 z7#r^Tq|=li4=}yRgyYLLj$0wVX2BrmP(-Fi<%!NbrMk1}b%nAs?9Gff3FEs8a8ubh zdtPS^09#If$p{K3-RTe=rs0+&{D&bbw2&j8EO2nv5(FH*4sKB-9eoQ{W9{aG#81O1X`@dl^U4hLw%)Rai$NcP{dhSO8!ajY&kV z6-2Hm2l@tEhBun01k}+~MkjKYbGb+#Gf+s@qZ;0SUfuqBdzB**^dJ|sq{2y8Xfk|# zGL>23G8}t+YsaeG_E>TksXZ~Vjk~#^040$d1(9pY(HhH(K>jF9X>=lYHJ4k8lS0#rr)lVeQ4WYlxm+>V!rYw1)+2a z$@uW(#EHY4BdUTU#`Xv?5IfrT&VUM)USj%@ZS|$K2k!&dBNz`WafExirZCLmT|Zb- zk@><`O!=+5z|I$N*ikFqj+Sx<^=47`)m^NAX#>T74z_$I4jW`BE=Iocl(@7eCq<{P zhP>~2%yk6@CHtzRD+qb3p-1i{|M(Knlw^@u1g}IT<=kB;FrjN*bxl+2)NB;SR$6ee z@h?`Hg~GK>u9Ca4t|lhr1ty@bz{W4G*Hwn;M~6Mh?X_Z>%HGyRb51$HE1|IWa0s`5 zGu7VdTUqrLYLc>YrWOj!-h)_`@p9{BqA8n)iWGpcF1A-X(ZHY_CJirZ z5&!O3FjWl_M-1XmpH1e;*ANP- zs{s&azp^NpYOPUFhxsU!yw)0p5CzFAsoz7omzn_7zsb560ZJB)H-_+n*J{>(VuW|c z2VrxdR!6zV>&q(Ri;Or4<4?J8{#(VrQd}ll1i@RXBT+54ybd9y^LejzB)lf_e%SPj zY+_2qqycbQQi`RAx7s?E2_oKhV|gh82pyqHQFXesW~>(CD+#01uh3uUtD4X9txLO~ zb(!@w$Y=kxpuCPI=<4Xrdi45#LZRzXvXikzDc@7?N>CEH`SO&=-M!_BAH>@7RB)$| z^g^ndRGDkJrdp|K5k(dET_8kcp__EY`C(6-7~86Bq8`j_dc*Z5R~4qNsAdH*P&zXU z{xg?MynbjwBv1q8*omJDi-Y&L#bf+x@UmU(G_a;{EJU3bm9FGsJtQT6nez-IG_}Kz zEMvDKu{`4)pW#d=&v #endif -#ifdef DEVICE_MICROPISOS -#include -#endif - // ---- DEPENDENCY RULES #if !HAS(BLUETOOTH_LE) #if HAS(SWITCHBOT_METER_INTEGRATION) diff --git a/include/devices/smol_clock.h b/include/devices/smol_clock.h deleted file mode 100644 index 2b9688d..0000000 --- a/include/devices/smol_clock.h +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once - -#include -#include - -#define HAS_OUTPUT_WS0010 -#define HAS_TEMP_SENSOR -#define HAS_TOUCH_PLANE -#define HAS_SERIAL_MIDI -#define HAS_VARYING_BRIGHTNESS - -// Plasma Information System OS (not DOS, there's no disk in it!) -#define PRODUCT_NAME "uPIS-OS" -#define PRODUCT_VERSION "4" - -// ---- Connection to beeper ---- -const gpio_num_t HWCONF_BEEPER_GPIO = GPIO_NUM_12; -const uint8_t HWCONF_BEEPER_PWM_CHANNEL = 0; - -// ---- Connection to temperature sensor ---- -const gpio_num_t HWCONF_I2C_SDA_GPIO = GPIO_NUM_26; -const gpio_num_t HWCONF_I2C_SCL_GPIO = GPIO_NUM_25; - -// ---- Connection to display ---- -const gpio_num_t HWCONF_WS0010_DATABUS_GPIOS[] = { - GPIO_NUM_5, - GPIO_NUM_0, - GPIO_NUM_23, - GPIO_NUM_2, - GPIO_NUM_22, - GPIO_NUM_15, - GPIO_NUM_4, - GPIO_NUM_21 -}; -const gpio_num_t HWCONF_WS0010_RS_GPIO = GPIO_NUM_19; -const gpio_num_t HWCONF_WS0010_EN_GPIO = GPIO_NUM_18; - -#define HWCONF_DISPLAY_WIDTH_PX 100 -#define HWCONF_DISPLAY_HEIGHT_PX 16 - -// ---- Connection to touch plane ---- -const touch_plane_definition_t HWCONF_TOUCH_PLANE = { - // Screen panel - {/*GPIO_NUM_32*/ TOUCH_PAD_NUM9, {.key = KEY_RIGHT, .press_threshold = 10, .release_threshold = -6}}, - {/*GPIO_NUM_33*/ TOUCH_PAD_NUM8, {.key = KEY_UP, .press_threshold = 7, .release_threshold = -2}}, - {/*GPIO_NUM_27*/ TOUCH_PAD_NUM7, {.key = KEY_DOWN, .press_threshold = 7, .release_threshold = -2}}, - {/*GPIO_NUM_14*/ TOUCH_PAD_NUM6, {.key = KEY_LEFT, .press_threshold = 7, .release_threshold = -2}}, - // Top of case - // {/*GPIO_NUM_13*/ TOUCH_PAD_NUM4, KEY_HEADPAT}, -}; \ No newline at end of file diff --git a/include/service/localize.h b/include/service/localize.h index 6d52518..96f25bd 100644 --- a/include/service/localize.h +++ b/include/service/localize.h @@ -15,7 +15,7 @@ typedef enum spoken_language { } spoken_language_t; display_language_t active_display_language(); -const char * localized_string(const std::string key, display_language_t lang = active_display_language()); +const char * localized_string(const char* key, display_language_t lang = active_display_language()); const char * day_letters(); spoken_language_t active_tts_language(); diff --git a/include/service/prefs.h b/include/service/prefs.h index a9a2c89..78a746c 100644 --- a/include/service/prefs.h +++ b/include/service/prefs.h @@ -24,6 +24,8 @@ typedef enum prefs_brightness_mode { } prefs_brightness_mode_t; static constexpr prefs_key_t PREFS_KEY_BRIGHTNESS_MODE = "disp_bri"; +static constexpr prefs_key_t PREFS_KEY_BUTTON_BEEP = "btn_beep"; + static constexpr prefs_key_t PREFS_KEY_BLINK_SEPARATORS = "blink_separator"; static constexpr prefs_key_t PREFS_KEY_SHOW_SECONDS = "show_seconds"; static constexpr prefs_key_t PREFS_KEY_TICKING_SOUND = "ticking_sound"; diff --git a/include/views/menu/boolean_setting.h b/include/views/menu/boolean_setting.h index 4b9a598..3daf440 100644 --- a/include/views/menu/boolean_setting.h +++ b/include/views/menu/boolean_setting.h @@ -26,9 +26,17 @@ class MenuBooleanSelectorView: public Renderable { class MenuBooleanSettingView: public MenuBooleanSelectorView { public: - MenuBooleanSettingView(const char * title, prefs_key_t prefs_key, key_id_t button = KEY_RIGHT) : + MenuBooleanSettingView(const char * title, prefs_key_t prefs_key, std::function onAfterChange = [](bool){}, key_id_t button = KEY_RIGHT) : key(prefs_key), - MenuBooleanSelectorView(title, prefs_get_bool(prefs_key), [this](bool value) { prefs_set_bool(key, value); }, button) + MenuBooleanSelectorView( + title, + prefs_get_bool(prefs_key), + [this, onAfterChange](bool value) { + prefs_set_bool(key, value); + onAfterChange(value); + }, + button + ) { } diff --git a/platformio.ini b/platformio.ini index d6d9415..d9087f7 100644 --- a/platformio.ini +++ b/platformio.ini @@ -47,9 +47,6 @@ upload_speed = 921600 monitor_speed = 115200 monitor_filters = esp32_exception_decoder -; NB: disabled due to lack of flash memory, reenable someday later and alter partitions.csv accordingly -; Feature-flag: HAS_OTAFVU - [env:bigclock-debug-ota] board = esp32dev build_type = debug @@ -58,25 +55,9 @@ upload_protocol = espota upload_port = 192.168.1.144 upload_flags = --auth=plasma-otafvu -[env:smolclock-debug] -board = esp32dev -build_type = debug -build_flags = -DDEVICE_MICROPISOS ${common.build_flags} -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -DCONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY -upload_speed = 921600 -monitor_speed = 115200 -monitor_filters = esp32_exception_decoder - -[env:smolclock-debug-ota] -board = esp32dev -build_type = debug -build_flags = -DDEVICE_MICROPISOS ${common.build_flags} -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -DCONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY -upload_protocol = espota -upload_port = 192.168.1.115 -upload_flags = --auth=plasma-otafvu - [env:notsosmolclock-release] board = esp32dev -build_type = release +build_type = debug build_flags = -DDEVICE_MINIPISOS ${common.build_flags} -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -DCONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY upload_speed = 921600 monitor_speed = 115200 diff --git a/src/app/alarming.cpp b/src/app/alarming.cpp index 638baf5..fc1ec1a 100644 --- a/src/app/alarming.cpp +++ b/src/app/alarming.cpp @@ -219,8 +219,8 @@ void app_alarming_process() { { if(hid_test_key_any(KEY_LEFT | KEY_UP | KEY_DOWN) && snooze_minutes > 0) { arrows->left = true; - arrows->top = true; - arrows->bottom = true; + arrows->top = false; + arrows->bottom = false; arrows->right = false; state = SNOOZE_HOLD_COUNTDOWN; return; @@ -235,7 +235,7 @@ void app_alarming_process() { } else if(hid_test_key_state(KEY_HEADPAT)) { arrows->left = false; - arrows->top = false; + arrows->top = true; arrows->bottom = false; arrows->right = false; state = (snooze_minutes > 0) ? SNOOZE_HOLD_COUNTDOWN : STOP_HOLD_COUNTDOWN; diff --git a/src/app/menu.cpp b/src/app/menu.cpp index 1b7fa7b..434f189 100644 --- a/src/app/menu.cpp +++ b/src/app/menu.cpp @@ -177,6 +177,9 @@ AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y): ProtoShimNavMe )); #endif display_menu->add_view(new MenuNumberSelectorPreferenceView(localized_string("Turn display off after (s)"), PREFS_KEY_MOTIONLESS_TIME_HV_OFF_SECONDS, 0, 72000, 1, normalActivationFunction)); + display_menu->add_view(new MenuBooleanSettingView(localized_string("Keypress beep"), PREFS_KEY_BUTTON_BEEP, [b](bool newValue) { + hid_set_key_beeper(newValue ? b : nullptr); + })); display_menu->add_view(new MenuBooleanSettingView(localized_string("Use Fahrenheit for temperature"), PREFS_KEY_WEATHER_USE_FAHRENHEIT)); display_menu->add_view(new MenuListSelectorPreferenceView( localized_string("Transition"), @@ -205,9 +208,11 @@ AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y): ProtoShimNavMe normalActivationFunction )); +#if HAS(TEMP_SENSOR) static ListView * calibration_menu = new ListView(); calibration_menu->add_view(new MenuNumberSelectorPreferenceView(localized_string("Temperature (\370C)"), PREFS_KEY_TEMP_SENSOR_TEMP_OFFSET, -50, 50, 1, normalActivationFunction)); calibration_menu->add_view(new MenuNumberSelectorPreferenceView(localized_string("Humidity"), PREFS_KEY_TEMP_SENSOR_HUM_OFFSET, -50, 50, 1, normalActivationFunction)); +#endif static ListView * system_info = new ListView(); system_info->add_view(new MenuInfoItemView(localized_string("OS Type"), PRODUCT_NAME)); @@ -290,7 +295,9 @@ AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y): ProtoShimNavMe static ListView * settings_menu = new ListView(); settings_menu->add_view(new MenuActionItemView(localized_string("Clock"), [this](){ push_submenu(clock_menu); }, &clock_icns)); settings_menu->add_view(new MenuActionItemView(localized_string("Display"), [this](){ push_submenu(display_menu); }, &display_icns)); +#if HAS(TEMP_SENSOR) settings_menu->add_view(new MenuActionItemView(localized_string("Offsets"), [this](){ push_submenu(calibration_menu); }, &icon_thermo_1616)); +#endif settings_menu->add_view(new MenuActionItemView(localized_string("Status"), [this](){ push_submenu(system_info); scroll_guidance->right = false; }, &status_icns)); settings_menu->add_view(new MenuInfoItemView(localized_string("Notice"), localized_string("FULL_SETTINGS_NOTICE"))); settings_menu->add_view(new MenuActionItemView(localized_string("Save & Restart"), [this](){ @@ -336,4 +343,4 @@ void AppShimMenu::pop_renderable(transition_type_t transition) { } ProtoShimNavMenu::pop_renderable(transition); -} \ No newline at end of file +} diff --git a/src/display/ws0010.cpp b/src/display/ws0010.cpp index d277487..86a5924 100644 --- a/src/display/ws0010.cpp +++ b/src/display/ws0010.cpp @@ -7,7 +7,7 @@ #include #ifndef WS0010_BFI_DIMMER_DURATION_US -#define WS0010_BFI_DIMMER_DURATION_US 6000 //<- experimentally found value for roughly 50% brightness @ 3V3 supply +#define WS0010_BFI_DIMMER_DURATION_US 6600 //<- experimentally found value for roughly 50% brightness @ 5v supply #endif static char LOG_TAG[] = "Winstar0010"; @@ -129,7 +129,7 @@ void Ws0010OledDriver::set_show(bool show) { set_is_command(true); set_databus(0b00001000 | (show ? 0b111 : 0)); // cursor and blink always off pulse_clock(); - delayMicroseconds(10); + delayMicroseconds(5); taskEXIT_CRITICAL(&_spinlock); } diff --git a/src/main.cpp b/src/main.cpp index 2ea11a4..b98ca52 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -193,15 +193,17 @@ void bringup_hid() { con->print("TP init err"); beepola->beep_blocking(CHANNEL_SYSTEM, 500, 125); } - // No beeper on non-touch because it will be annoying with physical buttons - hid_set_key_beeper(beepola); ESP_LOGI(LOG_TAG, "Touchpad ready"); #endif #if HAS(KEYPAD) keypad_start(); ESP_LOGI(LOG_TAG, "Keypad ready"); #endif + if(prefs_get_bool(PREFS_KEY_BUTTON_BEEP)) { + hid_set_key_beeper(beepola); + } } +#include static TaskHandle_t bootTaskHandle = NULL; void boot_task(void*) { diff --git a/src/network/admin_panel.cpp b/src/network/admin_panel.cpp index b0a8b13..b5ed113 100644 --- a/src/network/admin_panel.cpp +++ b/src/network/admin_panel.cpp @@ -287,6 +287,7 @@ static void build() { GP.LABEL("Display language (not in WebUI):"); GP.SELECT(PREFS_KEY_DISP_LANGUAGE, "English,Русский", prefs_get_int(PREFS_KEY_DISP_LANGUAGE)); GP.HR(); +#if HAS(VARYING_BRIGHTNESS) GP.LABEL("Display brightness:"); GP.SELECT(PREFS_KEY_BRIGHTNESS_MODE, "Dim,Bright" @@ -295,6 +296,7 @@ static void build() { #endif , prefs_get_int(PREFS_KEY_BRIGHTNESS_MODE)); GP.HR(); +#endif render_int("Show clock for [s]:", PREFS_KEY_SCRN_TIME_CLOCK_SECONDS); GP.BREAK(); render_int("Show next alarm countdown for [s]:", PREFS_KEY_SCRN_TIME_NEXT_ALARM_SECONDS); @@ -328,6 +330,8 @@ static void build() { GP.SELECT(PREFS_KEY_DISP_SCROLL_SPEED, "Slow,Medium,Fast,Sonic", prefs_get_int(PREFS_KEY_DISP_SCROLL_SPEED)); GP.HR(); render_bool("Use Fahrenheit:", PREFS_KEY_WEATHER_USE_FAHRENHEIT); + GP.HR(); + render_bool("Keypress beep:", PREFS_KEY_BUTTON_BEEP); GP.SPOILER_END(); GP.BREAK(); @@ -583,6 +587,7 @@ void action() { save_int(PREFS_KEY_DISP_SCROLL_SPEED, 0, 4); save_int(PREFS_KEY_BRIGHTNESS_MODE, 0, BRIGHTNESS_MAX_INVALID - 1); save_bool(PREFS_KEY_WEATHER_USE_FAHRENHEIT); + save_bool(PREFS_KEY_BUTTON_BEEP); save_int(PREFS_KEY_TEMP_SENSOR_TEMP_OFFSET, -50, 50); save_int(PREFS_KEY_TEMP_SENSOR_HUM_OFFSET, -50, 50); save_int(PREFS_KEY_LIGHTNESS_THRESH_UP, 0, 4096); diff --git a/src/service/localize.cpp b/src/service/localize.cpp index 54469b0..7110833 100644 --- a/src/service/localize.cpp +++ b/src/service/localize.cpp @@ -175,6 +175,7 @@ static const std::map russian = { {"Use Fahrenheit for temperature", "Температура в градусах Фаренгейта"}, {"FPS counter", "Счётчик кадров в секунду"}, {"Weather effects", "Эффекты погоды"}, + {"Keypress beep", "Звук клавиш"}, {"WiFi signal", "Уровень сигнала WiFi"}, {"Disconnected", "Когда нет связи"}, @@ -225,7 +226,7 @@ static const std::map russian = { {"Restarting...", "Перезагрузка..."}, }; -const char * localized_string(const std::string key, display_language_t l) { +const char * localized_string(const char* key, display_language_t l) { const std::map * lang = nullptr; switch(l) { case DSPL_LANG_EN: @@ -239,7 +240,7 @@ const char * localized_string(const std::string key, display_language_t l) { if(lang->count(key)) { return lang->at(key); } else { - return key.c_str(); + return key; } } From 4ef5140f0756592d9d5b7ce16f26e4ebbf67e6e6 Mon Sep 17 00:00:00 2001 From: akasaka Date: Wed, 9 Oct 2024 23:16:04 +0900 Subject: [PATCH 13/21] Headpat in timer editor; flip the keypad upside down in minipisos --- include/devices/mid_clock.h | 5 +++-- src/app/timer_editor.cpp | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/devices/mid_clock.h b/include/devices/mid_clock.h index 281dd2c..e0d0ed3 100644 --- a/include/devices/mid_clock.h +++ b/include/devices/mid_clock.h @@ -11,6 +11,7 @@ #define HAS_TEMP_SENSOR #define HAS_KEYPAD #define HAS_SERIAL_MIDI +#define HAS_VARYING_BRIGHTNESS // Plasma Information System OS (not DOS, there's no disk in it!) #define PRODUCT_NAME "uPIS-OS" @@ -43,8 +44,8 @@ const gpio_num_t HWCONF_WS0010_EN_GPIO = GPIO_NUM_18; // ---- Connection of buttons ---- const keypad_definition_t HWCONF_KEYPAD = { - {GPIO_NUM_14, KEY_LEFT}, - {GPIO_NUM_32, KEY_RIGHT}, + {GPIO_NUM_14, KEY_RIGHT}, + {GPIO_NUM_32, KEY_LEFT}, {GPIO_NUM_34, KEY_UP}, {GPIO_NUM_27, KEY_DOWN}, {GPIO_NUM_35, KEY_HEADPAT}, //<- finally a clock to have hardware headpat! diff --git a/src/app/timer_editor.cpp b/src/app/timer_editor.cpp index 22d3b48..f1670c8 100644 --- a/src/app/timer_editor.cpp +++ b/src/app/timer_editor.cpp @@ -140,8 +140,11 @@ class AppShimTimerEditor::TimerEditorMainScreen: public Composite { cursorPosition = (CursorPosition) (((int) cursorPosition) + 1); } } + else if(hid_test_key_state(KEY_HEADPAT) == KEYSTATE_HIT && !sequencer->is_sequencing()) { + start_stop(); + } - if(hid_test_key_any() && sequencer && sequencer->is_sequencing()) { + if(hid_test_key_any() && sequencer->is_sequencing()) { sequencer->stop_sequence(); secondView->sound = true; minuteView->sound = true; From df63c7a23c0c4ba24e36d8533fb8e99bda9244b5 Mon Sep 17 00:00:00 2001 From: akasaka Date: Thu, 17 Oct 2024 20:37:07 +0900 Subject: [PATCH 14/21] Preliminary support for the Noritake Itron GU7000 series --- include/device_config.h | 4 + include/devices/mid_clock.h | 1 - include/devices/mid_clock_noritake.h | 54 +++++++++ include/display/display.h | 10 +- include/display/gu7000.h | 47 ++++++++ include/input/hid_sensor.h | 13 -- include/input/keys.h | 4 +- platformio.ini | 8 ++ src/display/gu7000.cpp | 172 +++++++++++++++++++++++++++ src/input/keys.cpp | 13 +- src/main.cpp | 4 +- 11 files changed, 310 insertions(+), 20 deletions(-) create mode 100644 include/devices/mid_clock_noritake.h create mode 100644 include/display/gu7000.h delete mode 100644 include/input/hid_sensor.h create mode 100644 src/display/gu7000.cpp diff --git a/include/device_config.h b/include/device_config.h index 70d47d1..47b3e0e 100644 --- a/include/device_config.h +++ b/include/device_config.h @@ -41,6 +41,10 @@ #include #endif +#ifdef DEVICE_MINIPISOS_VFD +#include +#endif + // ---- DEPENDENCY RULES #if !HAS(BLUETOOTH_LE) #if HAS(SWITCHBOT_METER_INTEGRATION) diff --git a/include/devices/mid_clock.h b/include/devices/mid_clock.h index e0d0ed3..d7230bc 100644 --- a/include/devices/mid_clock.h +++ b/include/devices/mid_clock.h @@ -11,7 +11,6 @@ #define HAS_TEMP_SENSOR #define HAS_KEYPAD #define HAS_SERIAL_MIDI -#define HAS_VARYING_BRIGHTNESS // Plasma Information System OS (not DOS, there's no disk in it!) #define PRODUCT_NAME "uPIS-OS" diff --git a/include/devices/mid_clock_noritake.h b/include/devices/mid_clock_noritake.h new file mode 100644 index 0000000..da53246 --- /dev/null +++ b/include/devices/mid_clock_noritake.h @@ -0,0 +1,54 @@ +#pragma once + +#include +#include + +// Clock made around the PCB designed in 2024/09 labeled +// 'uPIS-OS Devkit / Genjitsu Labs 2024' +// 'microPIS-OS CPU BD V1.0 2024-09-16' +// +// !! Using the Noritake Itron GU112X16G-7000 display + +#define HAS_OUTPUT_GU7000 +#define HAS_TEMP_SENSOR +#define HAS_KEYPAD +#define HAS_SERIAL_MIDI +#define HAS_VARYING_BRIGHTNESS + +// Plasma Information System OS (not DOS, there's no disk in it!) +#define PRODUCT_NAME "PIS-OS" +#define PRODUCT_VERSION "4" + +// ---- Connection to beeper ---- +const gpio_num_t HWCONF_BEEPER_GPIO = GPIO_NUM_33; +const uint8_t HWCONF_BEEPER_PWM_CHANNEL = 0; + +// ---- Connection to temperature sensor ---- +const gpio_num_t HWCONF_I2C_SDA_GPIO = GPIO_NUM_26; +const gpio_num_t HWCONF_I2C_SCL_GPIO = GPIO_NUM_25; + +// ---- Connection to display ---- +const gpio_num_t HWCONF_GU7000_DATABUS_GPIOS[] = { + GPIO_NUM_5, + GPIO_NUM_0, + GPIO_NUM_23, + GPIO_NUM_2, + GPIO_NUM_22, + GPIO_NUM_15, + GPIO_NUM_4, + GPIO_NUM_21 +}; +const gpio_num_t HWCONF_GU7000_WR_GPIO = GPIO_NUM_18; +const gpio_num_t HWCONF_GU7000_BUSY_GPIO = GPIO_NUM_19; + +#define HWCONF_DISPLAY_WIDTH_PX 112 +#define HWCONF_DISPLAY_HEIGHT_PX 16 + +// ---- Connection of buttons ---- +const keypad_definition_t HWCONF_KEYPAD = { + {GPIO_NUM_14, KEY_RIGHT}, + {GPIO_NUM_32, KEY_LEFT}, + {GPIO_NUM_34, KEY_UP}, + {GPIO_NUM_27, KEY_DOWN}, + {GPIO_NUM_35, KEY_HEADPAT}, //<- finally a clock to have hardware headpat! +}; diff --git a/include/display/display.h b/include/display/display.h index a307494..1c353be 100644 --- a/include/display/display.h +++ b/include/display/display.h @@ -5,6 +5,8 @@ #include #elif HAS(OUTPUT_WS0010) #include +#elif HAS(OUTPUT_GU7000) +#include #endif #if HAS(OUTPUT_MD_PLASMA) @@ -22,6 +24,12 @@ static Ws0010OledDriver display_driver( HWCONF_WS0010_RS_GPIO, HWCONF_WS0010_EN_GPIO ); +#elif HAS(OUTPUT_GU7000) +static ItronGU7000Driver display_driver( + HWCONF_GU7000_DATABUS_GPIOS, + HWCONF_GU7000_WR_GPIO, + HWCONF_GU7000_BUSY_GPIO +); #else -#error Output type not selected +#error Display module type not selected #endif \ No newline at end of file diff --git a/include/display/gu7000.h b/include/display/gu7000.h new file mode 100644 index 0000000..0cc58ca --- /dev/null +++ b/include/display/gu7000.h @@ -0,0 +1,47 @@ +#pragma once +#include +#include + +#if HAS(OUTPUT_GU7000) +// Noritake Itron GU7000 series in parallel write-only mode +// For connection diagram, see AppNote APF200 R2.0 paragraph 4.5.5 +class ItronGU7000Driver: public DisplayDriver { +public: + /// @brief Initialize the interface. Configures the GPIO and prepares the outputs for use, also disables the output and high voltage supply. + /// @note Connect the ~RD pin to Vcc as we won't be reading from the display. + /// @param databus 8 pins connected to the display controller's data bus, DB0 to DB7 + /// @param wr Pin connected to the display controller's ~WR pin + /// @param busy Pin connected to the display controller's BUSY pin + ItronGU7000Driver( + const gpio_num_t databus[8], + const gpio_num_t wr, + const gpio_num_t busy + ); + + void initialize(); + /// @brief Reset the display controller + void reset(); + void clear(); + + /// @brief Enable or disable the high voltage supply + void set_power(bool on); + /// @brief Show or hide the display contents, while keeping the scanning active + void set_show(bool show); + + /// @brief Enable or disable virtual dimming (using BFI, might flicker depending on FPS stability) + void set_bright(bool bright); + + /// @brief Send an array of half-columns to the display controller + void write_fanta(const uint8_t * strides, size_t count); + +private: + gpio_num_t databus_gpios[8]; + gpio_num_t wr_gpio; + gpio_num_t busy_gpio; + + inline void set_databus(uint8_t data); + inline void pulse_clock(); + void write_string(const char *); + inline void wait_shit_through(); +}; +#endif \ No newline at end of file diff --git a/include/input/hid_sensor.h b/include/input/hid_sensor.h deleted file mode 100644 index e5a574b..0000000 --- a/include/input/hid_sensor.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once -#include -#include "keys.h" - -class HidActivitySensor: public TimerSensor { -public: - HidActivitySensor(): TimerSensor(pdMS_TO_TICKS(3000)) {} - - bool poll(int * result) { - if(hid_test_key_any() != KEYSTATE_RELEASED) trigger(); - return TimerSensor::poll(result); - } -}; \ No newline at end of file diff --git a/include/input/keys.h b/include/input/keys.h index 9fbe623..6eabacb 100644 --- a/include/input/keys.h +++ b/include/input/keys.h @@ -1,6 +1,7 @@ #pragma once #include #include +#include typedef enum key_id { KEY_UP = (1 << 0), @@ -31,4 +32,5 @@ key_state_t hid_test_key_state(key_id_t key); key_state_t hid_test_key_all(key_bitmask_t keys); key_state_t hid_test_key_any(key_bitmask_t keys = KEYMASK_ALL); key_state_t hid_peek_key_any(key_bitmask_t keys = KEYMASK_ALL); -key_state_t hid_test_key_state_repetition(key_id_t key); \ No newline at end of file +key_state_t hid_test_key_state_repetition(key_id_t key); +PoolableSensor * hid_get_state_sensor(); diff --git a/platformio.ini b/platformio.ini index d9087f7..264ebd1 100644 --- a/platformio.ini +++ b/platformio.ini @@ -61,4 +61,12 @@ build_type = debug build_flags = -DDEVICE_MINIPISOS ${common.build_flags} -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -DCONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY upload_speed = 921600 monitor_speed = 115200 +monitor_filters = esp32_exception_decoder + +[env:notsosmolclock-vfd-release] +board = esp32dev +build_type = debug +build_flags = -DDEVICE_MINIPISOS_VFD ${common.build_flags} -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -DCONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY +upload_speed = 921600 +monitor_speed = 115200 monitor_filters = esp32_exception_decoder \ No newline at end of file diff --git a/src/display/gu7000.cpp b/src/display/gu7000.cpp new file mode 100644 index 0000000..f94f665 --- /dev/null +++ b/src/display/gu7000.cpp @@ -0,0 +1,172 @@ +#include + +#if HAS(OUTPUT_GU7000) +#include "display/gu7000.h" +#include +#include +#include + +static char LOG_TAG[] = "GU7000"; + +ItronGU7000Driver::ItronGU7000Driver( + const gpio_num_t databus[8], + const gpio_num_t wr, + const gpio_num_t busy +) { + for(int i = 0; i < 8; i++) { + databus_gpios[i] = databus[i]; + } + wr_gpio = wr; + busy_gpio = busy; +} + +void ItronGU7000Driver::initialize() { + // TODO use parlio? + ESP_LOGI(LOG_TAG, "Initializing Noritake Itron GU7000 with data bus: %i %i %i %i %i %i %i %i, wr=%i, busy=%i", databus_gpios[0], databus_gpios[1], databus_gpios[2], databus_gpios[3], databus_gpios[4], databus_gpios[5], databus_gpios[6], databus_gpios[7], wr_gpio, busy_gpio); + + // Set up parallel output + + gpio_config_t io_conf = { + .pin_bit_mask = 0, + .mode = GPIO_MODE_OUTPUT, + .pull_up_en = gpio_pullup_t::GPIO_PULLUP_ENABLE, + }; + + for(int i = 0; i < sizeof(databus_gpios) / sizeof(databus_gpios[0]); i++) { + io_conf.pin_bit_mask |= 1ULL << databus_gpios[i]; + } + + io_conf.pin_bit_mask |= 1ULL << wr_gpio; + + ESP_ERROR_CHECK(gpio_config(&io_conf)); + + gpio_set_level(wr_gpio, 1); + + // Set up busy input + + io_conf = { + .pin_bit_mask = (1ULL << busy_gpio), + .mode = GPIO_MODE_INPUT, + .pull_up_en = gpio_pullup_t::GPIO_PULLUP_DISABLE, + .pull_down_en = gpio_pulldown_t::GPIO_PULLDOWN_DISABLE, + }; + + ESP_ERROR_CHECK(gpio_config(&io_conf)); + + wait_shit_through(); + delay(2000); +} + +void ItronGU7000Driver::wait_shit_through() { + delayMicroseconds(2); + while(gpio_get_level(busy_gpio)) { + delayMicroseconds(2); + } + delayMicroseconds(2); // min 1.5us before next bus cycle +} + +void ItronGU7000Driver::set_databus(uint8_t data) { + uint8_t local_sts = data; + for(int i = 0; i < 8; i++) { + uint8_t cur_state = (local_sts & 1); + gpio_set_level(databus_gpios[i], cur_state); + local_sts >>= 1; + } +} + +void ItronGU7000Driver::pulse_clock() { + gpio_set_level(wr_gpio, 0); + delayMicroseconds(1); + gpio_set_level(wr_gpio, 1); + delayMicroseconds(1); + wait_shit_through(); +} + +void ItronGU7000Driver::write_string(const char * s) { + int len = strlen(s); + for(int i = 0; i < len; i++) { + set_databus(s[i]); + pulse_clock(); + } +} + +void ItronGU7000Driver::reset() { + // taskENTER_CRITICAL(&_spinlock); + wait_shit_through(); + + // Bringup Step 1: Initialize display + write_string("\x1B\x40"); + + // Power on + set_power(true); + + // Cursor OFF (oof the Cstring hits again!) + write_string("\x1F\x43"); set_databus(0); pulse_clock(); + + clear(); + write_string("uPIS-OS Noritake GU7000 Init"); + + vTaskDelay(pdMS_TO_TICKS(1000)); + + clear(); + write_string("\x1F\x24"); // cursor move to 0 + set_databus(0); + pulse_clock(); pulse_clock(); pulse_clock(); pulse_clock(); +} + +void ItronGU7000Driver::set_show(bool show) { + +} + +void ItronGU7000Driver::set_power(bool power) { + write_string("\x1F\x28\x61\x40"); + set_databus(power ? 0x1 : 0x0); + pulse_clock(); +} + +void ItronGU7000Driver::clear() { + set_databus(0x0c); + pulse_clock(); +} + +inline uint8_t flipByte(uint8_t c){ + char r=0; + for(uint8_t i = 0; i < 8; i++){ + r <<= 1; + r |= c & 1; + c >>= 1; + } + return r; +} + +void ItronGU7000Driver::write_fanta(const uint8_t * strides, size_t count) { + write_string("\x1F\x24"); // cursor move to 0 + set_databus(0); + pulse_clock(); pulse_clock(); pulse_clock(); pulse_clock(); + + write_string("\x1F\x28\x66\x11"); + set_databus(HWCONF_DISPLAY_WIDTH_PX & 0x00FF); + pulse_clock(); + set_databus(HWCONF_DISPLAY_WIDTH_PX & 0xFF00); + pulse_clock(); + set_databus((HWCONF_DISPLAY_HEIGHT_PX / 8) & 0x00FF); + pulse_clock(); + set_databus((HWCONF_DISPLAY_HEIGHT_PX / 8) & 0xFF00); + pulse_clock(); + set_databus(1); + pulse_clock(); + + for(int i = 0; i < count; i++) { + set_databus(flipByte(strides[i])); + pulse_clock(); + } + +} + +void ItronGU7000Driver::set_bright(bool bright) { + char brightness = bright ? 6 : 2; // range 1..8, 25% and 75% in this case + write_string("\x1F\x58"); + set_databus(brightness); pulse_clock(); +} + +#endif \ No newline at end of file diff --git a/src/input/keys.cpp b/src/input/keys.cpp index b9b2769..0244b96 100644 --- a/src/input/keys.cpp +++ b/src/input/keys.cpp @@ -4,7 +4,7 @@ #include #include -const TickType_t KEYPRESS_THRESHOLD_TIME = pdMS_TO_TICKS(50); +const TickType_t KEYPRESS_THRESHOLD_TIME = pdMS_TO_TICKS(16); const TickType_t KEYHOLD_THRESHOLD_TIME = pdMS_TO_TICKS(1000); const TickType_t KEYHOLD_REPETITION_TIME = pdMS_TO_TICKS(500); const TickType_t KEYHOLD_REPETITION_SPEEDUP_TIME = pdMS_TO_TICKS(3000); @@ -14,6 +14,7 @@ static std::unordered_set pressed_keycombos = {}; static TickType_t keypress_started_at[KEY_MAX_INVALID] = { 0 }; static TickType_t keypress_repeated_at[KEY_MAX_INVALID] = { 0 }; static Beeper * beepola = nullptr; +static TimerSensor * hid_state_sensor = nullptr; void hid_set_key_beeper(Beeper* b) { beepola = b; @@ -65,6 +66,7 @@ void hid_set_key_state(key_id_t key, bool state) { keypress_started_at[key] = xTaskGetTickCount(); keypress_repeated_at[key] = xTaskGetTickCount(); active_keys |= KEY_ID_TO_BIT(key); + if(hid_state_sensor) hid_state_sensor->trigger(); } else if(!state && (active_keys & KEY_ID_TO_BIT(key)) != 0) { active_keys &= ~KEY_ID_TO_BIT(key); } @@ -110,4 +112,13 @@ key_state_t hid_test_key_state_repetition(key_id_t key) { break; default: return KEYSTATE_RELEASED; } +} + + +PoolableSensor * hid_get_state_sensor() { + if(hid_state_sensor == nullptr) { + hid_state_sensor = new TimerSensor(pdMS_TO_TICKS(3000)); + } + + return hid_state_sensor; } \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index b98ca52..96bd0b4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include @@ -202,8 +201,8 @@ void bringup_hid() { if(prefs_get_bool(PREFS_KEY_BUTTON_BEEP)) { hid_set_key_beeper(beepola); } + sensors->add(VIRTSENSOR_ID_HID_STARTLED, hid_get_state_sensor(), pdMS_TO_TICKS(100)); } -#include static TaskHandle_t bootTaskHandle = NULL; void boot_task(void*) { @@ -246,7 +245,6 @@ void boot_task(void*) { ESP_LOGI(LOG_TAG, "Creating sensor pool"); sensors->add(VIRTSENSOR_ID_WIRELESS_RSSI, new RssiSensor(), pdMS_TO_TICKS(500)); - sensors->add(VIRTSENSOR_ID_HID_STARTLED, new HidActivitySensor(), pdMS_TO_TICKS(125)); bringup_light_sensor(); bringup_motion_sensor(); bringup_temp_sensor(); From 648e5488dbc2e547069c9410e98661b8e58ee49f Mon Sep 17 00:00:00 2001 From: akasaka Date: Fri, 18 Oct 2024 23:57:17 +0900 Subject: [PATCH 15/21] Support for Noritake GU7000 VFD display controller --- include/device_config.h | 4 ++ include/devices/mid_clock_noritake.h | 13 ++--- include/devices/mid_clock_noritake_wide.h | 55 +++++++++++++++++++++ include/views/weather/chart_precipitation.h | 2 +- include/views/weather/chart_pressure.h | 2 +- platformio.ini | 16 ++++-- src/display/gu7000.cpp | 18 +++++++ src/views/weather/daily_forecast.cpp | 2 +- 8 files changed, 99 insertions(+), 13 deletions(-) create mode 100644 include/devices/mid_clock_noritake_wide.h diff --git a/include/device_config.h b/include/device_config.h index 47b3e0e..200f273 100644 --- a/include/device_config.h +++ b/include/device_config.h @@ -45,6 +45,10 @@ #include #endif +#ifdef DEVICE_MINIPISOS_VFD_WIDE +#include +#endif + // ---- DEPENDENCY RULES #if !HAS(BLUETOOTH_LE) #if HAS(SWITCHBOT_METER_INTEGRATION) diff --git a/include/devices/mid_clock_noritake.h b/include/devices/mid_clock_noritake.h index da53246..8400531 100644 --- a/include/devices/mid_clock_noritake.h +++ b/include/devices/mid_clock_noritake.h @@ -3,17 +3,15 @@ #include #include -// Clock made around the PCB designed in 2024/09 labeled -// 'uPIS-OS Devkit / Genjitsu Labs 2024' -// 'microPIS-OS CPU BD V1.0 2024-09-16' -// -// !! Using the Noritake Itron GU112X16G-7000 display - #define HAS_OUTPUT_GU7000 #define HAS_TEMP_SENSOR #define HAS_KEYPAD #define HAS_SERIAL_MIDI #define HAS_VARYING_BRIGHTNESS +#define HAS_LIGHT_SENSOR + +// ↓ Looks like shite on the VFD display +#define COMPOSABLE_NO_EVENODD // Plasma Information System OS (not DOS, there's no disk in it!) #define PRODUCT_NAME "PIS-OS" @@ -27,6 +25,9 @@ const uint8_t HWCONF_BEEPER_PWM_CHANNEL = 0; const gpio_num_t HWCONF_I2C_SDA_GPIO = GPIO_NUM_26; const gpio_num_t HWCONF_I2C_SCL_GPIO = GPIO_NUM_25; +// ---- Connection to light sensors ---- +const gpio_num_t HWCONF_LIGHTSENSE_GPIO = GPIO_NUM_36; + // ---- Connection to display ---- const gpio_num_t HWCONF_GU7000_DATABUS_GPIOS[] = { GPIO_NUM_5, diff --git a/include/devices/mid_clock_noritake_wide.h b/include/devices/mid_clock_noritake_wide.h new file mode 100644 index 0000000..4d8077e --- /dev/null +++ b/include/devices/mid_clock_noritake_wide.h @@ -0,0 +1,55 @@ +#pragma once + +#include +#include + +#define HAS_OUTPUT_GU7000 +#define HAS_TEMP_SENSOR +#define HAS_KEYPAD +#define HAS_SERIAL_MIDI +#define HAS_VARYING_BRIGHTNESS +#define HAS_LIGHT_SENSOR + +// ↓ Looks like shite on the VFD display +#define COMPOSABLE_NO_EVENODD + +// Plasma Information System OS (not DOS, there's no disk in it!) +#define PRODUCT_NAME "wPIS-OS" +#define PRODUCT_VERSION "4" + +// ---- Connection to beeper ---- +const gpio_num_t HWCONF_BEEPER_GPIO = GPIO_NUM_33; +const uint8_t HWCONF_BEEPER_PWM_CHANNEL = 0; + +// ---- Connection to temperature sensor ---- +const gpio_num_t HWCONF_I2C_SDA_GPIO = GPIO_NUM_26; +const gpio_num_t HWCONF_I2C_SCL_GPIO = GPIO_NUM_25; + +// ---- Connection to display ---- +const gpio_num_t HWCONF_GU7000_DATABUS_GPIOS[] = { + GPIO_NUM_5, + GPIO_NUM_0, + GPIO_NUM_23, + GPIO_NUM_2, + GPIO_NUM_22, + GPIO_NUM_15, + GPIO_NUM_4, + GPIO_NUM_21 +}; +const gpio_num_t HWCONF_GU7000_WR_GPIO = GPIO_NUM_18; +const gpio_num_t HWCONF_GU7000_BUSY_GPIO = GPIO_NUM_19; + +// ---- Connection to light sensors ---- +const gpio_num_t HWCONF_LIGHTSENSE_GPIO = GPIO_NUM_36; + +#define HWCONF_DISPLAY_WIDTH_PX 140 +#define HWCONF_DISPLAY_HEIGHT_PX 16 + +// ---- Connection of buttons ---- +const keypad_definition_t HWCONF_KEYPAD = { + {GPIO_NUM_14, KEY_RIGHT}, + {GPIO_NUM_32, KEY_LEFT}, + {GPIO_NUM_34, KEY_UP}, + {GPIO_NUM_27, KEY_DOWN}, + {GPIO_NUM_35, KEY_HEADPAT}, //<- finally a clock to have hardware headpat! +}; diff --git a/include/views/weather/chart_precipitation.h b/include/views/weather/chart_precipitation.h index cbc57df..183f0c2 100644 --- a/include/views/weather/chart_precipitation.h +++ b/include/views/weather/chart_precipitation.h @@ -46,7 +46,7 @@ class WeatherPrecipitationChart: public WeatherChartCommon { cursor_index = -1; tk_time_of_day_t now = get_current_time_coarse(); int p = 0; - for(int i = 0; i < 24; i++) { + for(int i = 0; i < HWCONF_DISPLAY_WIDTH_PX/4; i++) { const hourly_weather_t * f = weather_get_hourly(i); if(f != nullptr) { for(int x = 0; x < 4; x++) { diff --git a/include/views/weather/chart_pressure.h b/include/views/weather/chart_pressure.h index 07c2fcc..cec0a78 100644 --- a/include/views/weather/chart_pressure.h +++ b/include/views/weather/chart_pressure.h @@ -19,7 +19,7 @@ class WeatherPressureChart: public WeatherChartCommon { cursor_index = -1; tk_time_of_day_t now = get_current_time_coarse(); int p = 0; - for(int i = 0; i < 36; i++) { + for(int i = 0; i < HWCONF_DISPLAY_WIDTH_PX/3; i++) { const hourly_weather_t * f = weather_get_hourly(i); if(f != nullptr) { for(int x = 0; x < 3; x++) { diff --git a/platformio.ini b/platformio.ini index 264ebd1..02f3219 100644 --- a/platformio.ini +++ b/platformio.ini @@ -39,7 +39,7 @@ lib_deps = extra_scripts = post:helper/build-all-music.py -[env:bigclock-debug] +[env:PLASMA] board = esp32dev build_type = debug build_flags = -DDEVICE_PLASMA_CLOCK ${common.build_flags} -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue @@ -47,7 +47,7 @@ upload_speed = 921600 monitor_speed = 115200 monitor_filters = esp32_exception_decoder -[env:bigclock-debug-ota] +[env:PLASMA_OTA] board = esp32dev build_type = debug build_flags = -DDEVICE_PLASMA_CLOCK ${common.build_flags} -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue @@ -55,7 +55,7 @@ upload_protocol = espota upload_port = 192.168.1.144 upload_flags = --auth=plasma-otafvu -[env:notsosmolclock-release] +[env:OLED] board = esp32dev build_type = debug build_flags = -DDEVICE_MINIPISOS ${common.build_flags} -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -DCONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY @@ -63,10 +63,18 @@ upload_speed = 921600 monitor_speed = 115200 monitor_filters = esp32_exception_decoder -[env:notsosmolclock-vfd-release] +[env:NORITAKE_GU112] board = esp32dev build_type = debug build_flags = -DDEVICE_MINIPISOS_VFD ${common.build_flags} -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -DCONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY upload_speed = 921600 monitor_speed = 115200 +monitor_filters = esp32_exception_decoder + +[env:NORITAKE_GU140] +board = esp32dev +build_type = debug +build_flags = -DDEVICE_MINIPISOS_VFD_WIDE ${common.build_flags} -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -DCONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY +upload_speed = 921600 +monitor_speed = 115200 monitor_filters = esp32_exception_decoder \ No newline at end of file diff --git a/src/display/gu7000.cpp b/src/display/gu7000.cpp index f94f665..35866c3 100644 --- a/src/display/gu7000.cpp +++ b/src/display/gu7000.cpp @@ -7,6 +7,7 @@ #include static char LOG_TAG[] = "GU7000"; +static portMUX_TYPE _spinlock = portMUX_INITIALIZER_UNLOCKED; ItronGU7000Driver::ItronGU7000Driver( const gpio_num_t databus[8], @@ -83,11 +84,15 @@ void ItronGU7000Driver::pulse_clock() { } void ItronGU7000Driver::write_string(const char * s) { + taskENTER_CRITICAL(&_spinlock); + int len = strlen(s); for(int i = 0; i < len; i++) { set_databus(s[i]); pulse_clock(); } + + taskEXIT_CRITICAL(&_spinlock); } void ItronGU7000Driver::reset() { @@ -119,14 +124,20 @@ void ItronGU7000Driver::set_show(bool show) { } void ItronGU7000Driver::set_power(bool power) { + taskENTER_CRITICAL(&_spinlock); + write_string("\x1F\x28\x61\x40"); set_databus(power ? 0x1 : 0x0); pulse_clock(); + + taskEXIT_CRITICAL(&_spinlock); } void ItronGU7000Driver::clear() { + taskENTER_CRITICAL(&_spinlock); set_databus(0x0c); pulse_clock(); + taskEXIT_CRITICAL(&_spinlock); } inline uint8_t flipByte(uint8_t c){ @@ -140,6 +151,8 @@ inline uint8_t flipByte(uint8_t c){ } void ItronGU7000Driver::write_fanta(const uint8_t * strides, size_t count) { + taskENTER_CRITICAL(&_spinlock); + write_string("\x1F\x24"); // cursor move to 0 set_databus(0); pulse_clock(); pulse_clock(); pulse_clock(); pulse_clock(); @@ -161,12 +174,17 @@ void ItronGU7000Driver::write_fanta(const uint8_t * strides, size_t count) { pulse_clock(); } + taskEXIT_CRITICAL(&_spinlock); } void ItronGU7000Driver::set_bright(bool bright) { + taskENTER_CRITICAL(&_spinlock); + char brightness = bright ? 6 : 2; // range 1..8, 25% and 75% in this case write_string("\x1F\x58"); set_databus(brightness); pulse_clock(); + + taskEXIT_CRITICAL(&_spinlock); } #endif \ No newline at end of file diff --git a/src/views/weather/daily_forecast.cpp b/src/views/weather/daily_forecast.cpp index 5623ff1..0476312 100644 --- a/src/views/weather/daily_forecast.cpp +++ b/src/views/weather/daily_forecast.cpp @@ -78,7 +78,7 @@ DailyForecastView::DailyForecastView(bool ctl) { rightView = new Column(); rightView->width = 48; - rightView->x_offset = rightView->width + 4; + rightView->x_offset = std::max(rightView->width + 4, HWCONF_DISPLAY_WIDTH_PX/2); add_composable(leftView); add_composable(rightView); From 169b766bcb50413b4dd38530116acd9684688edb Mon Sep 17 00:00:00 2001 From: akasaka Date: Sat, 19 Oct 2024 00:17:03 +0900 Subject: [PATCH 16/21] Turn off speech on headpat --- include/service/prefs.h | 1 + src/app/idle.cpp | 2 +- src/app/menu.cpp | 3 ++- src/network/admin_panel.cpp | 2 ++ src/service/localize.cpp | 3 ++- src/service/power_management.cpp | 1 + src/service/prefs.cpp | 25 +++++++++++++++++++++++++ 7 files changed, 34 insertions(+), 3 deletions(-) diff --git a/include/service/prefs.h b/include/service/prefs.h index 78a746c..0941180 100644 --- a/include/service/prefs.h +++ b/include/service/prefs.h @@ -109,6 +109,7 @@ static constexpr prefs_key_t PREFS_KEY_VOICE_SPEED = "v_spd"; static constexpr prefs_key_t PREFS_KEY_VOICE_ANNOUNCE_HOUR = "v_hrs"; static constexpr prefs_key_t PREFS_KEY_VOICE_ANNOUNCE_DATE = "v_date"; static constexpr prefs_key_t PREFS_KEY_VOICE_MODE_RESAMPLING = "v_samp"; +static constexpr prefs_key_t PREFS_KEY_VOICE_SPEAK_ON_HEADPAT = "v_headp"; static constexpr prefs_key_t PREFS_KEY_DISP_LANGUAGE = "d_lang"; static constexpr prefs_key_t PREFS_KEY_TTS_LANGUAGE = "tts_lang"; diff --git a/src/app/idle.cpp b/src/app/idle.cpp index 124b6c8..550232b 100644 --- a/src/app/idle.cpp +++ b/src/app/idle.cpp @@ -411,7 +411,7 @@ void app_idle_process() { push_state(STATE_MENU, TRANSITION_SLIDE_HORIZONTAL_RIGHT); } #if HAS(AQUESTALK) - else if(hid_test_key_state(KEY_HEADPAT) == KEYSTATE_HIT && !yukkuri->is_speaking()) { + else if(hid_test_key_state(KEY_HEADPAT) == KEYSTATE_HIT && !yukkuri->is_speaking() && prefs_get_bool(PREFS_KEY_VOICE_SPEAK_ON_HEADPAT)) { tk_date_t d = get_current_date(); YukkuriUtterance dateUtterance = localized_utterance_for_date(&d); yukkuri->speak(dateUtterance); diff --git a/src/app/menu.cpp b/src/app/menu.cpp index 434f189..8ee0977 100644 --- a/src/app/menu.cpp +++ b/src/app/menu.cpp @@ -94,7 +94,8 @@ AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y): ProtoShimNavMe y->speak(test_utterance); }; - clock_menu->add_view(new MenuBooleanSettingView(localized_string("Speak hour"), PREFS_KEY_VOICE_ANNOUNCE_HOUR)); + clock_menu->add_view(new MenuBooleanSettingView(localized_string("Speak every hour"), PREFS_KEY_VOICE_ANNOUNCE_HOUR)); + clock_menu->add_view(new MenuBooleanSettingView(localized_string("Speak on headpat"), PREFS_KEY_VOICE_SPEAK_ON_HEADPAT)); clock_menu->add_view(new MenuBooleanSettingView(localized_string("24-hour announcements"), PREFS_KEY_VOICE_24_HRS)); clock_menu->add_view(new MenuBooleanSettingView(localized_string("Speak date on first chime"), PREFS_KEY_VOICE_ANNOUNCE_DATE)); clock_menu->add_view(new MenuNumberSelectorPreferenceView(localized_string("Voice speed"), PREFS_KEY_VOICE_SPEED, 10, 200, 1, normalActivationFunction, yukkuriTestFunction)); diff --git a/src/network/admin_panel.cpp b/src/network/admin_panel.cpp index b5ed113..9d48032 100644 --- a/src/network/admin_panel.cpp +++ b/src/network/admin_panel.cpp @@ -347,6 +347,7 @@ static void build() { GP.HR(); render_int("Speed [1~200]%:", PREFS_KEY_VOICE_SPEED); render_bool("Speak hour on chime", PREFS_KEY_VOICE_ANNOUNCE_HOUR); + render_bool("Speak time on headpat", PREFS_KEY_VOICE_SPEAK_ON_HEADPAT); render_bool("24-hour announcements:", PREFS_KEY_VOICE_24_HRS); render_bool("Speak date on first chime", PREFS_KEY_VOICE_ANNOUNCE_DATE); GP.SPOILER_END(); @@ -614,6 +615,7 @@ void action() { save_int(PREFS_KEY_VOICE_SPEED, 1, 200); save_bool(PREFS_KEY_VOICE_ANNOUNCE_HOUR); save_bool(PREFS_KEY_VOICE_ANNOUNCE_DATE); + save_bool(PREFS_KEY_VOICE_SPEAK_ON_HEADPAT); save_int(PREFS_KEY_DISP_LANGUAGE, 0, 1); save_int(PREFS_KEY_TTS_LANGUAGE, 0, 2); save_int(PREFS_KEY_VOICE_MODE_RESAMPLING, 0, 1); diff --git a/src/service/localize.cpp b/src/service/localize.cpp index 7110833..ea348aa 100644 --- a/src/service/localize.cpp +++ b/src/service/localize.cpp @@ -123,7 +123,8 @@ static const std::map russian = { {"Other chimes", "Остальные"}, {"Chime from", "Первый час"}, {"Chime until", "Последний час"}, - {"Speak hour", "Проговаривать время"}, + {"Speak every hour", "Проговаривать время каждый час"}, + {"Speak on headpat", "Сказать время при нажатии на верхнюю кнопку"}, {"Speak date on first chime", "Проговаривать дату в первый час"}, {"Voice speed", "Скорость голоса"}, diff --git a/src/service/power_management.cpp b/src/service/power_management.cpp index 0eea63b..b0ed209 100644 --- a/src/service/power_management.cpp +++ b/src/service/power_management.cpp @@ -49,6 +49,7 @@ static void wake_up(TickType_t now) { #if HAS(VARYING_BRIGHTNESS) display->set_bright(isBright); #endif + startled_sensor->trigger(); } beeper->set_channel_state(CHANNEL_AMBIANCE, true); diff --git a/src/service/prefs.cpp b/src/service/prefs.cpp index 25d65d4..5f52811 100644 --- a/src/service/prefs.cpp +++ b/src/service/prefs.cpp @@ -1,18 +1,43 @@ #include "service/prefs.h" #include #include "nvs_flash.h" +#include static char LOG_TAG[] = "PREF"; static Preferences * store = nullptr; static constexpr const char * STORE_DOMAIN = "pisos_prefs"; +static constexpr prefs_key_t PREFS_KEY_INITIAL_SETTING_DONE = "init"; + inline void init_store_if_needed() { if(store == nullptr) { ESP_LOGI(LOG_TAG, "Initialize"); store = new Preferences(); nvs_flash_init(); // <- sometimes language settings are being checked before Arduino finished initializing, so we need to bring NVS up on our own if(!store->begin(STORE_DOMAIN)) { + delete store; store = nullptr; + } else { + if(!prefs_get_bool(PREFS_KEY_INITIAL_SETTING_DONE)) { + // Write some sane settings for some of the keys + prefs_set_int(PREFS_KEY_ALARM_SNOOZE_MINUTES, 10); + #if HAS(LIGHT_SENSOR) + prefs_set_int(PREFS_KEY_BRIGHTNESS_MODE, BRIGHTNESS_AUTOMATIC); + #endif + prefs_set_int(PREFS_KEY_VOICE_SPEED, 100); + prefs_set_bool(PREFS_KEY_HOURLY_PRECISE_TIME_SIGNAL, true); + prefs_set_bool(PREFS_KEY_HOURLY_CHIME_ON, true); + prefs_set_bool(PREFS_KEY_TICKING_SOUND, true); + prefs_set_bool(PREFS_KEY_HOURLY_CHIME_ON, true); + prefs_set_int(PREFS_KEY_HOURLY_CHIME_START_HOUR, 9); + prefs_set_int(PREFS_KEY_HOURLY_CHIME_STOP_HOUR, 21); + prefs_set_int(PREFS_KEY_ALARM_MAX_DURATION_MINUTES, 60); + prefs_set_int(PREFS_KEY_HOURLY_CHIME_MELODY, 2); + prefs_set_bool(PREFS_KEY_VOICE_SPEAK_ON_HEADPAT, true); + prefs_set_bool(PREFS_KEY_WEATHER_OVERLAY, true); + + prefs_set_bool(PREFS_KEY_INITIAL_SETTING_DONE, true); + } } } } From 940af1d579d7e2565a9017896a364d4639e304c0 Mon Sep 17 00:00:00 2001 From: akasaka Date: Sat, 19 Oct 2024 00:49:55 +0900 Subject: [PATCH 17/21] SoftAP name/IP screen in idle; word of the day scroll fixes --- include/network/netmgr.h | 1 + include/views/idle_screens/softap.h | 15 ++++++ src/app/idle.cpp | 12 +++-- src/network/netmgr.cpp | 6 ++- src/views/idle_screens/softap.cpp | 55 ++++++++++++++++++++++ src/views/idle_screens/word_of_the_day.cpp | 9 +++- 6 files changed, 93 insertions(+), 5 deletions(-) create mode 100644 include/views/idle_screens/softap.h create mode 100644 src/views/idle_screens/softap.cpp diff --git a/include/network/netmgr.h b/include/network/netmgr.h index bc5f6ca..397b74a 100644 --- a/include/network/netmgr.h +++ b/include/network/netmgr.h @@ -9,6 +9,7 @@ class NetworkManager { static void startup(); /// @brief Whether the network service is initialized and connected or hosting an ad-hoc network static bool is_up(); + static bool is_softAP(); /// @brief Current IP address string static String current_ip(); diff --git a/include/views/idle_screens/softap.h b/include/views/idle_screens/softap.h new file mode 100644 index 0000000..2414be3 --- /dev/null +++ b/include/views/idle_screens/softap.h @@ -0,0 +1,15 @@ +#pragma once +#include +#include + +class SoftApInfoView: public Screen { +public: + SoftApInfoView() {} + void prepare() override; + int desired_display_time() override; +private: + StringScroll * network_name = nullptr; + StringScroll * ip_address = nullptr; + SpriteView * icon = nullptr; + void create_components_if_needed(); +}; \ No newline at end of file diff --git a/src/app/idle.cpp b/src/app/idle.cpp index 550232b..488b5c2 100644 --- a/src/app/idle.cpp +++ b/src/app/idle.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -32,6 +33,7 @@ static char LOG_TAG[] = "APL_IDLE"; typedef enum MainViewId: uint16_t { VIEW_CLOCK = 0, + VIEW_SOFTAP, VIEW_NEXT_ALARM, #if HAS(TEMP_SENSOR) VIEW_INDOOR_WEATHER, @@ -79,6 +81,7 @@ static IndoorView * indoorView; static WoSensorView * remoteWeatherView; #endif +static SoftApInfoView * softApView; static CurrentWeatherView * weatherView; static DailyForecastView * forecastView; static WeatherPrecipitationChart * precipitationView; @@ -260,6 +263,7 @@ void app_idle_init(SensorPool* s, Beeper* b, NewSequencer* seq, Yukkuri* tts) { tick_tock_enable = prefs_get_bool(PREFS_KEY_TICKING_SOUND); + screen_times_ms[VIEW_SOFTAP] = 30000; screen_times_ms[VIEW_CLOCK] = prefs_get_int(PREFS_KEY_SCRN_TIME_CLOCK_SECONDS) * 1000; screen_times_ms[VIEW_NEXT_ALARM] = prefs_get_int(PREFS_KEY_SCRN_TIME_NEXT_ALARM_SECONDS) * 1000; #if HAS(TEMP_SENSOR) @@ -279,16 +283,16 @@ void app_idle_init(SensorPool* s, Beeper* b, NewSequencer* seq, Yukkuri* tts) { bool has_at_least_one_screen = false; for(int i = 0; i < VIEW_MAX; i++) { - if(screen_times_ms[i] != 0) { + if(screen_times_ms[i] != 0 && i != VIEW_SOFTAP) { has_at_least_one_screen = true; break; } } if(!has_at_least_one_screen) { - screen_times_ms[VIEW_CLOCK] = 3600000; + screen_times_ms[VIEW_CLOCK] = 10000; } - current_screen_time_ms = screen_times_ms[VIEW_CLOCK]; + current_screen_time_ms = screen_times_ms[0]; clockView = new SimpleClock(); rain = new RainOverlay(DisplayFramebuffer::width, DisplayFramebuffer::height); @@ -301,6 +305,7 @@ void app_idle_init(SensorPool* s, Beeper* b, NewSequencer* seq, Yukkuri* tts) { pressureView = new WeatherPressureChart(); fb2kView = new Fb2kView(); nextAlarmView = new NextAlarmView(); + softApView = new SoftApInfoView(); touchArrows = new TouchArrowOverlay(); touchArrows->bottom = true; @@ -314,6 +319,7 @@ void app_idle_init(SensorPool* s, Beeper* b, NewSequencer* seq, Yukkuri* tts) { slideShow = new ViewMultiplexor(); slideShow->add_view(thunderClock, VIEW_CLOCK); + slideShow->add_view(softApView, VIEW_SOFTAP); slideShow->add_view(nextAlarmView, VIEW_NEXT_ALARM); #if HAS(TEMP_SENSOR) indoorView = new IndoorView(sensors); diff --git a/src/network/netmgr.cpp b/src/network/netmgr.cpp index 177527b..27baf80 100644 --- a/src/network/netmgr.cpp +++ b/src/network/netmgr.cpp @@ -92,7 +92,11 @@ const char * NetworkManager::network_name() { bool NetworkManager::is_up() { return (WiFi.getMode() == WIFI_STA && WiFi.status() == WL_CONNECTED && has_ip) - || (WiFi.getMode() == WIFI_AP && (WiFi.getStatusBits() & AP_STARTED_BIT != 0)); + || is_softAP(); +} + +bool NetworkManager::is_softAP() { + return (WiFi.getMode() == WIFI_AP && (WiFi.getStatusBits() & AP_STARTED_BIT != 0)); } String NetworkManager::current_ip() { diff --git a/src/views/idle_screens/softap.cpp b/src/views/idle_screens/softap.cpp new file mode 100644 index 0000000..f56daab --- /dev/null +++ b/src/views/idle_screens/softap.cpp @@ -0,0 +1,55 @@ +#include "views/idle_screens/softap.h" +#include +#include + +static const uint8_t icon_data[] = { + 0x00, 0x00, 0x00, 0xfe, 0x01, 0x01, 0x01, 0x55, 0x01, 0x01, 0x01, 0x55, 0x11, 0x01, 0x19, 0x51, + 0xfd, 0x01, 0x19, 0x01, 0x11, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7d, 0x01, 0x01, 0x00, 0xfe +}; + +static const sprite_t icon_spr = { + .width = 16, .height = 16, + .data = icon_data, .mask = nullptr, + .format = SPRFMT_HORIZONTAL +}; + +int SoftApInfoView::desired_display_time() { + if(!NetworkManager::is_softAP()) return DISP_TIME_DONT_SHOW; + return DISP_TIME_NO_OVERRIDE; +} + +void SoftApInfoView::create_components_if_needed() { + if(network_name == nullptr) { + network_name = new StringScroll(&keyrus0808_font, nullptr); + network_name->x_offset = 17; + network_name->holdoff = 60; + network_name->start_at_visible = true; + add_composable(network_name); + } + + if(ip_address == nullptr) { + ip_address = new StringScroll(&keyrus0808_font, nullptr); + ip_address->set_y_position(8); + ip_address->x_offset = 17; + ip_address->holdoff = 60; + ip_address->start_at_visible = true; + add_composable(ip_address); + } + + if(icon == nullptr) { + icon = new SpriteView(&icon_spr); + add_composable(icon); + } +} + +void SoftApInfoView::prepare() { + create_components_if_needed(); + Composable::prepare(); + + network_name->set_string(NetworkManager::network_name()); + ip_address->set_string(NetworkManager::current_ip().c_str()); + + int width = std::max(network_name->string_width, ip_address->string_width); + network_name->string_width = width; + ip_address->string_width = width; +} \ No newline at end of file diff --git a/src/views/idle_screens/word_of_the_day.cpp b/src/views/idle_screens/word_of_the_day.cpp index 64ed1c5..0e3fa64 100644 --- a/src/views/idle_screens/word_of_the_day.cpp +++ b/src/views/idle_screens/word_of_the_day.cpp @@ -57,7 +57,6 @@ WordOfTheDayView::WordOfTheDayView() { top_line->x_offset = animation->width; top_line->set_y_position(0); top_line->set_string(word_buffer); - top_line->stopped = true; add_composable(top_line); bottom_line = new StringScroll(font); @@ -81,6 +80,14 @@ void WordOfTheDayView::prepare() { ESP_LOGI(LOG_TAG, "New word of the day"); top_line->set_string(word_buffer); bottom_line->set_string(definition_buffer); + + int width = std::max(top_line->string_width, bottom_line->string_width); + if(top_line->string_width > HWCONF_DISPLAY_WIDTH_PX - top_line->x_offset) { + top_line->string_width = width; + } + if(bottom_line->string_width > HWCONF_DISPLAY_WIDTH_PX - bottom_line->x_offset) { + bottom_line->string_width = width; + } } Screen::prepare(); From 00b76a989f17521a6a4f3aa139407fa5009e000a Mon Sep 17 00:00:00 2001 From: akasaka Date: Sat, 19 Oct 2024 01:24:18 +0900 Subject: [PATCH 18/21] Light sensor calibration from OSD --- include/app/menu.h | 3 +- src/app/menu.cpp | 84 ++++++++++++++++++++++++++++++++++++++-- src/main.cpp | 6 ++- src/service/localize.cpp | 2 + 4 files changed, 89 insertions(+), 6 deletions(-) diff --git a/include/app/menu.h b/include/app/menu.h index 72200dd..48bdbfa 100644 --- a/include/app/menu.h +++ b/include/app/menu.h @@ -6,10 +6,11 @@ #include #include #include +#include class AppShimMenu: public ProtoShimNavMenu { public: - AppShimMenu(Beeper*, NewSequencer*, Yukkuri*); + AppShimMenu(Beeper*, NewSequencer*, Yukkuri*, AmbientLightSensor*); void prepare() override; void step() override; diff --git a/src/app/menu.cpp b/src/app/menu.cpp index 8ee0977..3b78b87 100644 --- a/src/app/menu.cpp +++ b/src/app/menu.cpp @@ -33,7 +33,7 @@ class DiskSpaceView: public MenuInfoItemView { void prepare() override { if(buf[0] == 0) { // Having this as a static item view causes a deadlock on boot, so we need to set the value in runtime - snprintf(buf, 23, "%.02dK (%.02dK %s)", LittleFS.totalBytes() / 1024, (LittleFS.totalBytes() - LittleFS.usedBytes()) / 1024, localized_string("free")); + snprintf(buf, 31, "%.02dK (%.02dK %s)", LittleFS.totalBytes() / 1024, (LittleFS.totalBytes() - LittleFS.usedBytes()) / 1024, localized_string("free")); bottom_label->set_string(buf); } MenuInfoItemView::prepare(); @@ -43,7 +43,75 @@ class DiskSpaceView: public MenuInfoItemView { char buf[32] = { 0 }; }; -AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y): ProtoShimNavMenu::ProtoShimNavMenu() { +#if HAS(LIGHT_SENSOR) && HAS(VARYING_BRIGHTNESS) +class LightSensorCalibrationView: public Composite { +public: + LightSensorCalibrationView(const char * title, prefs_key_t key, AmbientLightSensor * lightSensor) { + top_label = new StringScroll(&keyrus0808_font, title); + top_label->start_at_visible = true; + top_label->holdoff = 100; + add_composable(top_label); + sensor = lightSensor; + prefs_key = key; + wants_clear_surface = true; + } + + void prepare() override { + set_value = prefs_get_int(prefs_key); + Composite::prepare(); + } + + void render(FantaManipulator *fb) override { + Composite::render(fb); + + int steps_per_division = (max_value - min_value) / (fb->get_width() - 3); + int set_val_px = (set_value - min_value) / steps_per_division; + int cur_val_px = (cur_value - min_value) / steps_per_division; + + // Backdrop + fb->rect(0, 9, fb->get_width() - 2, 14, false); + + // Filled line for the pointer + fb->line(cur_val_px + 1, 9, cur_val_px + 1, 14); + + // Two dots on the outline for the current setting + fb->plot_pixel(set_val_px + 1, 8, true); + fb->plot_pixel(set_val_px + 1, 15, true); + // and a blinking line + if(cursor_visible) { + fb->line(set_val_px + 1, 9, set_val_px + 1, 14); + } + } + + void step() { + cur_value = sensor->read(); + + if(hid_test_key_state(KEY_RIGHT) == KEYSTATE_HIT) { + set_value = cur_value; + prefs_set_int(prefs_key, set_value); + } + + cursor_counter ++; + if(cursor_counter == 30) { + cursor_visible ^= 1; + cursor_counter = 0; + } + } + +private: + AmbientLightSensor * sensor = nullptr; + StringScroll * top_label = nullptr; + prefs_key_t prefs_key = nullptr; + int cur_value = 0; + int min_value = 0; + int max_value = 4096; + int set_value = 0; + bool cursor_visible = false; + uint8_t cursor_counter = 0; +}; +#endif + +AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y, AmbientLightSensor *als): ProtoShimNavMenu::ProtoShimNavMenu() { beeper = b; yukkuri = y; std::function normalActivationFunction = [this](bool isActive, Renderable* instance) { @@ -209,10 +277,20 @@ AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y): ProtoShimNavMe normalActivationFunction )); -#if HAS(TEMP_SENSOR) +#if (HAS(TEMP_SENSOR) || (HAS(LIGHT_SENSOR) && HAS(VARYING_BRIGHTNESS))) static ListView * calibration_menu = new ListView(); + #if HAS(TEMP_SENSOR) calibration_menu->add_view(new MenuNumberSelectorPreferenceView(localized_string("Temperature (\370C)"), PREFS_KEY_TEMP_SENSOR_TEMP_OFFSET, -50, 50, 1, normalActivationFunction)); calibration_menu->add_view(new MenuNumberSelectorPreferenceView(localized_string("Humidity"), PREFS_KEY_TEMP_SENSOR_HUM_OFFSET, -50, 50, 1, normalActivationFunction)); + #endif + #if HAS(LIGHT_SENSOR) && HAS(VARYING_BRIGHTNESS) + calibration_menu->add_view(new LightSensorCalibrationView( + localized_string("Display dimming threshold"), PREFS_KEY_LIGHTNESS_THRESH_DOWN, als + )); + calibration_menu->add_view(new LightSensorCalibrationView( + localized_string("Display brightening threshold"), PREFS_KEY_LIGHTNESS_THRESH_UP, als + )); + #endif #endif static ListView * system_info = new ListView(); diff --git a/src/main.cpp b/src/main.cpp index 96bd0b4..91e9f1e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -60,6 +60,7 @@ static OTAFVUManager * ota; static Beeper * beepola; static NewSequencer * seq; static Yukkuri * yukkuri = nullptr; +static AmbientLightSensor * als = nullptr; void change_state(device_state_t to, transition_type_t transition) { if(to == STATE_OTAFVU) { @@ -111,7 +112,8 @@ void bringup_sound() { void bringup_light_sensor() { #if HAS(LIGHT_SENSOR) - sensors->add(SENSOR_ID_AMBIENT_LIGHT, new AmbientLightSensor(HWCONF_LIGHTSENSE_GPIO), pdMS_TO_TICKS(250)); + als = new AmbientLightSensor(HWCONF_LIGHTSENSE_GPIO); + sensors->add(SENSOR_ID_AMBIENT_LIGHT, als, pdMS_TO_TICKS(250)); con->print("L sensor OK"); ESP_LOGI(LOG_TAG, "Light sensor ready"); #endif @@ -265,7 +267,7 @@ void boot_task(void*) { ESP_LOGI(LOG_TAG, "Constructing desktop"); appHost->add_view(new AppShimIdle(sensors, beepola, seq, yukkuri), STATE_IDLE); appHost->add_view(new AppShimAlarming(seq), STATE_ALARMING); - appHost->add_view(new AppShimMenu(beepola, seq, yukkuri), STATE_MENU); + appHost->add_view(new AppShimMenu(beepola, seq, yukkuri, als), STATE_MENU); appHost->add_view(new AppShimAlarmEditor(beepola, seq), STATE_ALARM_EDITOR); appHost->add_view(new AppShimTimerEditor(beepola, seq), STATE_TIMER_EDITOR); appHost->add_view(new AppShimStopwatch(beepola), STATE_STOPWATCH); diff --git a/src/service/localize.cpp b/src/service/localize.cpp index ea348aa..53d7673 100644 --- a/src/service/localize.cpp +++ b/src/service/localize.cpp @@ -185,6 +185,8 @@ static const std::map russian = { {"Temperature (\370C)", "Температура (\370C)"}, {"Humidity", "Влажность"}, + {"Display dimming threshold", "Нижний порог освещённости"}, + {"Display brightening threshold", "Верхний порог освещённости"}, {"OS Type", "Операционная система"}, {"OS Version", "Версия системы"}, From 942b0fe09c887f8821fc3f7111690c7e103dcad7 Mon Sep 17 00:00:00 2001 From: akasaka Date: Sat, 19 Oct 2024 18:04:26 +0900 Subject: [PATCH 19/21] PaPIRs support; don't hang when wifi pass is bad --- include/devices/mid_clock_noritake_wide.h | 4 +++- src/app/menu.cpp | 2 +- src/display/gu7000.cpp | 1 + src/main.cpp | 2 +- src/network/netmgr.cpp | 6 +++++- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/include/devices/mid_clock_noritake_wide.h b/include/devices/mid_clock_noritake_wide.h index 4d8077e..f337220 100644 --- a/include/devices/mid_clock_noritake_wide.h +++ b/include/devices/mid_clock_noritake_wide.h @@ -4,7 +4,8 @@ #include #define HAS_OUTPUT_GU7000 -#define HAS_TEMP_SENSOR +// #define HAS_TEMP_SENSOR +#define HAS_MOTION_SENSOR #define HAS_KEYPAD #define HAS_SERIAL_MIDI #define HAS_VARYING_BRIGHTNESS @@ -40,6 +41,7 @@ const gpio_num_t HWCONF_GU7000_WR_GPIO = GPIO_NUM_18; const gpio_num_t HWCONF_GU7000_BUSY_GPIO = GPIO_NUM_19; // ---- Connection to light sensors ---- +const gpio_num_t HWCONF_MOTION_GPIO = GPIO_NUM_39; const gpio_num_t HWCONF_LIGHTSENSE_GPIO = GPIO_NUM_36; #define HWCONF_DISPLAY_WIDTH_PX 140 diff --git a/src/app/menu.cpp b/src/app/menu.cpp index 3b78b87..7955741 100644 --- a/src/app/menu.cpp +++ b/src/app/menu.cpp @@ -374,7 +374,7 @@ AppShimMenu::AppShimMenu(Beeper *b, NewSequencer *s, Yukkuri *y, AmbientLightSen static ListView * settings_menu = new ListView(); settings_menu->add_view(new MenuActionItemView(localized_string("Clock"), [this](){ push_submenu(clock_menu); }, &clock_icns)); settings_menu->add_view(new MenuActionItemView(localized_string("Display"), [this](){ push_submenu(display_menu); }, &display_icns)); -#if HAS(TEMP_SENSOR) +#if (HAS(TEMP_SENSOR) || (HAS(LIGHT_SENSOR) && HAS(VARYING_BRIGHTNESS))) settings_menu->add_view(new MenuActionItemView(localized_string("Offsets"), [this](){ push_submenu(calibration_menu); }, &icon_thermo_1616)); #endif settings_menu->add_view(new MenuActionItemView(localized_string("Status"), [this](){ push_submenu(system_info); scroll_guidance->right = false; }, &status_icns)); diff --git a/src/display/gu7000.cpp b/src/display/gu7000.cpp index 35866c3..42b2413 100644 --- a/src/display/gu7000.cpp +++ b/src/display/gu7000.cpp @@ -109,6 +109,7 @@ void ItronGU7000Driver::reset() { write_string("\x1F\x43"); set_databus(0); pulse_clock(); clear(); + write_string("\x1F\x58\x01"); write_string("uPIS-OS Noritake GU7000 Init"); vTaskDelay(pdMS_TO_TICKS(1000)); diff --git a/src/main.cpp b/src/main.cpp index 91e9f1e..d5f11cb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -121,7 +121,7 @@ void bringup_light_sensor() { void bringup_motion_sensor() { #if HAS(MOTION_SENSOR) - sensors->add(SENSOR_ID_MOTION, new MotionSensor(HWCONF_MOTION_GPIO), pdMS_TO_TICKS(1000)); + sensors->add(SENSOR_ID_MOTION, new MotionSensor(HWCONF_MOTION_GPIO), pdMS_TO_TICKS(250)); con->print("M sensor OK"); ESP_LOGI(LOG_TAG, "Motion sensor ready"); #endif diff --git a/src/network/netmgr.cpp b/src/network/netmgr.cpp index 27baf80..0b6202d 100644 --- a/src/network/netmgr.cpp +++ b/src/network/netmgr.cpp @@ -83,7 +83,11 @@ void NetworkManager::connect(const char * name, const char * pw) { has_ip = false; WiFi.disconnect(false, true); WiFi.mode(WIFI_MODE_STA); - WiFi.begin(ssid, pass); + wl_status_t rslt = WiFi.begin(ssid, pass); + if(rslt != WL_CONNECTED) { + ESP_LOGI(LOG_TAG, "WiFi connection error (%i): fallback to SoftAP"); + ap_fallback(); + } } const char * NetworkManager::network_name() { From 635e0cbfa64d435d1f6dd793994bb05ca4f21c65 Mon Sep 17 00:00:00 2001 From: akasaka Date: Sun, 20 Oct 2024 09:29:05 +0900 Subject: [PATCH 20/21] No signal icon when running SoftAP --- src/network/netmgr.cpp | 2 +- src/views/overlays/signal_icon.cpp | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/network/netmgr.cpp b/src/network/netmgr.cpp index 0b6202d..aff63e1 100644 --- a/src/network/netmgr.cpp +++ b/src/network/netmgr.cpp @@ -121,5 +121,5 @@ void NetworkManager::ap_fallback() { } int NetworkManager::rssi() { - return WiFi.RSSI(); + return is_softAP ? 1 : WiFi.RSSI(); } \ No newline at end of file diff --git a/src/views/overlays/signal_icon.cpp b/src/views/overlays/signal_icon.cpp index ef710e1..54615bc 100644 --- a/src/views/overlays/signal_icon.cpp +++ b/src/views/overlays/signal_icon.cpp @@ -1,6 +1,5 @@ #include "views/overlays/signal_icon.h" #include -#include #define RSSI_LOWEST_DBM -90 From 7199dbb583595532c0eda1b97d2c4bf37edd3652 Mon Sep 17 00:00:00 2001 From: akasaka Date: Sun, 20 Oct 2024 09:44:57 +0900 Subject: [PATCH 21/21] Try to create CI script --- .github/actions/prepare_pio.yml | 20 +++++++++++++++++++ .github/workflows/main.yml | 35 +++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 .github/actions/prepare_pio.yml create mode 100644 .github/workflows/main.yml diff --git a/.github/actions/prepare_pio.yml b/.github/actions/prepare_pio.yml new file mode 100644 index 0000000..630baa5 --- /dev/null +++ b/.github/actions/prepare_pio.yml @@ -0,0 +1,20 @@ +name: Prepare PIO environment + +on: [workflow_call] + +jobs: + prepare_pio: + name: Set up PIO environment + runs-on: ubuntu-latest + steps: + - uses: actions/cache@v4 + with: + path: | + ~/.cache/pip + ~/.platformio/.cache + key: ${{ runner.os }}-pio + - uses: actions/setup-python@v5 + with: + python-version: '3.11' + - name: Install PlatformIO Core + run: pip install --upgrade platformio \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..e13fbc0 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,35 @@ +name: Build production version + +on: + push: + branches: [main] + +jobs: + build-everything: + runs-on: ubuntu-latest + name: Build All Binaries + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Prepare environment + uses: ./.github/actions/prepare_pio + - name: Build all targets + run: pio run + continue-on-error: true # TODO make this more graceful + - name: Upload firmware images + uses: actions/upload-artifact@v4 + with: + name: filesystem + path: ./.pio/build/*/firmware.bin + if-no-files-found: error + - name: Delete WIP tunes + run: rm ./music/wip_*.pomf + - name: Create LittleFS image + run: pio run --target buildfs --environment music-pomf + - name: Upload filesystem image + uses: actions/upload-artifact@v4 + with: + path: ./.pio/build/music-pomf/littlefs.bin + if-no-files-found: error \ No newline at end of file