{"id":302204,"date":"2020-04-20T21:00:12","date_gmt":"2020-04-20T21:00:12","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=302204"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=302204","title":{"rendered":"\u041a\u0430\u043a \u044f \u043f\u0438\u0441\u0430\u043b \u043c\u0443\u0437\u044b\u043a\u0443 \u0438\u0437 \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043b\u0443\u0447\u0435\u0439"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/498218\/\">\n<p>\u0414\u0435\u043d\u044c \u0434\u043e\u0431\u0440\u044b\u0439, \u043a\u0430\u043c\u0440\u0430\u0434\u044b!<\/p>\n<p>  <\/p>\n<p>\u042f \u043f\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0439 \u043c\u0443\u0437\u044b\u043a\u0430\u043d\u0442, \u0437\u0430\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u043f\u044b\u0442 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0418 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0432\u0437\u044f\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0430\u0443\u0434\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u044d\u0442\u043e \u043a\u0430\u043a \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0442\u043e\u043b\u044c\u043a\u043e\u2026 \u043a\u044d\u043f\u044a)?<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u0449\u0435\u043c\u0442\u0430, \u043f\u043b\u0430\u043d \u0442\u0430\u043a\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041d\u0430\u0439\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435<\/li>\n<li>\u041f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u0441\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u0437\u0432\u0443\u043a<\/li>\n<li>\u041f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043a\u0440\u0430\u0441\u0438\u0432\u0448\u0435<\/li>\n<li>\u041e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0435\u0449\u0451 \u0441\u0438\u043b\u044b? goto 1<\/li>\n<\/ul>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h4 id=\"lovim-kosmicheskie-luchi\">\u041b\u043e\u0432\u0438\u043c \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043b\u0443\u0447\u0438<\/h4>\n<p>  <\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u044f \u0432\u0437\u044f\u043b \u0441 \u0441\u0430\u0439\u0442\u0430: <a href=\"http:\/\/www.tien-shan.org\/she\/vardbaccess\/index.html\" rel=\"nofollow\">http:\/\/www.tien-shan.org\/she\/vardbaccess\/index.html<\/a><br \/>  \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0435 \u201c\u0412\u0430\u0440\u0438\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439\u201d \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043b\u0443\u0447\u0435\u0439 \u0437\u0430 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u2014 31.03-10.04 \u2014 Tien-Shan \u0438 Tien-Shan Underground (\u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0435\u0449\u0451 \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u0438 \u0438\u043b\u0438 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0438). \u0418 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u044f \u0441\u043a\u0430\u0447\u0430\u043b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u201c\u0413\u0430\u043c\u043c\u0430-\u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u044f\u201d, \u0442\u043e\u0436\u0435 \u0437\u0430 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u2014 \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 5.04-10.04.<\/p>\n<p>  <\/p>\n<p>Tien-Shan \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">31.03.2020  00:00:00    3813    5504    5187    5251    4637    4071    4568    4998    4922    4858    4956    4271    3997    4358    4715    4077    4160    3980 31.03.2020  00:01:00    3653    5308    5413    5371    4691    4090    4617    5139    5009    4762    5172    4309    4208    4387    4923    4248    4092    4108 31.03.2020  00:02:00    3763    5309    5292    5298    4588    4105    4608    5072    5070    4745    4834    4158    3918    4284    5115    4233    4011    3972 \u2026 09.04.2020  23:57:00    3855    5308    5239    5190    4531    4063    4537    5035    5084    4863    5089    4261    4122    4395    5394    4186    4167    4078 09.04.2020  23:58:00    3955    5492    5416    5406    4458    4037    4474    5122    4942    4733    5168    4330    4026    4357    5283    4059    4174    3857 09.04.2020  23:59:00    3811    5378    5334    5121    4472    3955    4334    4992    4940    4646    4822    4378    4137    4195    4880    4049    4002    3817<\/code><\/pre>\n<p>  <\/p>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a Tien-Shan:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/u6\/ks\/uq\/u6ksuqvsrkicyctmqushnt3jfcq.png\"><\/p>\n<p>  <\/p>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 Tien-Shan Underground \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0432\u044b\u0448\u0435, \u043d\u043e \u0441\u0430\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0438\u0436\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">31.03.2020  00:00:00    20  32  29  26  20  20  17  14  16 31.03.2020  00:01:00    14  16  17  27  20  27  9   15  7 31.03.2020  00:02:00    13  22  16  22  15  18  12  15  11 \u2026 09.04.2020  23:57:00    17  19  20  27  20  17  11  18  16 09.04.2020  23:58:00    14  33  19  19  18  16  15  16  9 09.04.2020  23:59:00    16  31  23  25  21  22  16  10  14<\/code><\/pre>\n<p>  <\/p>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a Tien-Shan Underground:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vr\/jl\/4z\/vrjl4ztxzvlaqgal81ick74hxzi.png\"><\/p>\n<p>  <\/p>\n<p>\u0418 \u0434\u0430\u043d\u043d\u044b\u0435 \u0433\u0430\u043c\u043c\u0430-\u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">05.04.2020  00:00:02    20640   5345    4726    3532    2365    2118    1261    891 655 334 252 194 05.04.2020  00:00:12    21160   5295    4666    3526    2365    2138    1250    852 627 309 235 190 05.04.2020  00:00:22    19581   5189    4562    3536    2401    2130    1229    820 618 324 243 172 \u2026 09.04.2020  23:59:37    22381   5134    4505    3429    2274    2044    1223    823 569 275 205 154 09.04.2020  23:59:47    21917   5186    4577    3448    2273    2044    1166    803 563 293 214 165 09.04.2020  23:59:58    20930   5275    4644    3561    2382    2148    1248    868 609 289 232 176<\/code><\/pre>\n<p>  <\/p>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a Radio point Mu1:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/83\/pv\/tc\/83pvtcipiwimprfy2gfetfsitaw.png\"><\/p>\n<p>  <\/p>\n<p><strong>\u0415\u0441\u043b\u0438 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u2014 \u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044e \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 (\u0430\u0431\u0437\u0430\u0446 \u0432\u044b\u0448\u0435)<\/strong><\/p>\n<p>  <\/p>\n<h3 id=\"pervaya-popytka\">\u041f\u0435\u0440\u0432\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430<\/h3>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0443 \u043d\u0430\u0441 \u0432\u043b\u043e\u0431. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0447\u0438\u0441\u043b\u0430. \u0418, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Audacity \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043d\u0430 \u0432\u0445\u043e\u0434 \u0447\u0438\u0441\u043b\u0430. \u041d\u043e! \u042d\u0442\u0438 \u0447\u0438\u0441\u043b\u0430 \u0440\u0430\u0437\u043d\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043d\u0430\u0448\u0438 \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043b\u0443\u0447\u0438 \u0432\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, Audacity \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 float \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u043e\u0442 -1.00000 \u0434\u043e 1.00000, \u0433\u0434\u0435 -1\/1 = 0dB \u2014 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043d\u0438\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0438 \u043a \u043d\u0443\u043b\u044e \u0441 \u043e\u0431\u0435\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043c \u043d\u0430 \u0440\u0443\u043a\u0443 \u0438\u0433\u0440\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 csv, \u0441\u0443\u0434\u044f \u043f\u043e \u0445\u0435\u043b\u043f\u0443, \u043f\u0430\u0440\u0441\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e <code>(\\s\\t\\n)+<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u0434\u0430\u0436\u0435 \u0441\u043c\u043e\u0436\u0435\u043c \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0449\u0435 \u0432 \u043d\u0438\u0445 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  <\/p>\n<h4 id=\"nemnogo-o-importe-dannyh-v-audacity\">\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Audacity<\/h4>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u044b raw \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f Audacity \u0441 \u0438\u0445 \u0441\u0430\u0439\u0442\u0430:<\/p>\n<p>  <\/p>\n<p>\u041e\u0434\u0438\u043d \u0446\u0438\u043a\u043b \u0432\u043e\u043b\u043d\u044b \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 1\u043a\u0413\u0446:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">;This is a comment and will be ignored. 0.07100 0.14056 0.20727 0.26978 0.32682 0.37724 0.42001 0.45428 0.47933 0.49468 0.50000 0.49518 0.48034 0.45575 0.42193 0.37957 0.32951 0.27277 0.21050 0.14397 0.07452 0.00356 -0.06747 -0.13713 -0.20402 -0.26677 -0.32411 -0.37489 -0.41807 -0.45278 -0.47831 -0.49415 -0.49997 -0.49566 -0.48131 -0.45721 -0.42384 -0.38188 -0.33218 -0.27575 -0.21373 -0.14738 -0.07804 -0.00712 0.06394 0.13370 0.20076 0.26375 0.32139 0.37252 0.41611 0.45125 0.47726 0.49359 0.49992 0.49612 0.48226 0.45864 0.42571 0.38416 0.33483 0.27871 0.21694 0.15078 0.08156 0.01068 -0.06040 -0.13027 -0.19749 -0.26072 -0.31866 -0.37014 -0.41412 -0.44971 -0.47618 -0.49301 -0.49984 -0.49655 -0.48319 -0.46004 -0.42757 -0.38643 -0.33747 -0.28166 -0.22015 -0.15417 -0.08507 -0.01425<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0441\u0442\u0435\u0440\u0435\u043e \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u0434\u0432\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">0.00000 -0.00000 0.10000 -0.10000 0.20000 -0.20000 0.30000 -0.30000 0.40000 -0.40000 0.50000 -0.50000 0.60000 -0.60000 0.70000 -0.70000 0.80000 -0.80000 0.90000 -0.90000 1.00000 -1.00000<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0443 \u043d\u0430\u0441 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0435 \u0443\u0441\u0438\u043b\u0435\u043d\u0438\u0435 \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u0438 \u0432 \u043e\u0431\u043e\u0438\u0445 \u043a\u0430\u043d\u0430\u043b\u0430\u0445, \u043d\u043e \u043f\u0440\u0430\u0432\u044b\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0435\u0432\u043e\u0433\u043e \u0438\u043c\u0435\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0444\u0430\u0437\u0443 (\u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u043b\u043d\u0430 \u0432 \u043b\u0435\u0432\u043e\u043c \u0438\u0434\u0451\u0442 \u0432\u0432\u0435\u0440\u0445, \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u2014 \u0438\u0434\u0451\u0442 \u0432\u043d\u0438\u0437).<\/p>\n<p>  <\/p>\n<p>**\u0424\u0430\u0437\u043e\u0432\u0430\u044f \u0438\u043d\u0432\u0435\u0440\u0441\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043b\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u0438\u0448\u0438\u043d\u0443, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0435\u0440\u0435\u043e \u0441\u043e\u0432\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u043d\u043e. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0430\u0432\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u0437\u043d\u0430\u043a\u043e\u043c \u0430\u043d\u043d\u0438\u0433\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u043d\u043e\u043b\u044c, \u0430 \u043d\u043e\u043b\u044c \u2014 \u044d\u0442\u043e, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u043c\u043d\u0438\u043c, \u0442\u0438\u0448\u0438\u043d\u0430 \u2014 0dB.<\/p>\n<p>  <\/p>\n<h4 id=\"poc---proof-of-concept-chchr---chto-to-chto-rabotaet\">PoC \u2014 Proof of Concept. \u0427\u0427\u0420 \u2014 \u0427\u0442\u043e-\u0442\u043e, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/h4>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043c\u043e\u043d\u043e \u0432 \u043e\u0434\u0438\u043d \u043a\u0430\u043d\u0430\u043b. \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b Audacity \u0441\u044a\u0435\u043b \u043d\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043d\u0435 \u043f\u043e\u0434\u0430\u0432\u0438\u043b\u0441\u044f, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 float [-1.00000-1.00000]. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0432\u0435\u0434\u0451\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c: \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c, \u043c\u0435\u0434\u0438\u0430\u043d\u0430, \u0441\u0440\u0435\u0434\u043d\u0435\u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438 \u043c\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u0411\u0435\u0440\u0451\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a (\u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e F12), \u0438 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043d\u0430\u043c \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>  <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043c \u043a\u043e\u043b\u043e\u043d\u043a\u0438. \u0414\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432 \u0441\u0430\u0431\u043b\u0430\u0439\u043c\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Find &amp; Replace \u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0438: (.+?\\t){x}(.+?)\\t.+?\\n<code>-&gt;<\/code>\\2,`, \u0433\u0434\u0435 \u0445 \u2014 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 + 1 (\u0442\u0430\u043c \u0434\u0432\u0430 \u0441\u0434\u0432\u0438\u0433\u0430 \u0432\u043d\u0430\u0447\u0430\u043b\u0435).<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043c csv \u0432\u0438\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">3813,3790,3801,3833,3674,3822,3639,3848,3866,3794,3747,3938,3823,3989,3963,3852,3836,3694,3883,3748,3802,3884,3790,3684,3895,3872,3885,4011,3844,3901,3713,3870,3868,3772,3866,3939,3856,3720,3640,3929,3905,...<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">a = [1, 2, 3, 4, 5] function parse_array(arr) {     console.log(\u201cMin: \u201c + Math.min(...arr));     console.log(\u201cMax: \u201c + Math.max(...arr));     console.log(\u201cAvg: \u201c + arr.reduce((a, b) =&gt; a + b) \/ arr.length); \/\/ console.log(&quot;Min: &quot; + Math.min(...arr) + &quot;; Max: &quot; + Math.max(...arr) + &quot;; Avg: &quot; + arr.reduce((a, b) =&gt; a + b) \/ arr.length); }  &gt; parse_array(a)     1     5     3<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0443 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0432 \u0444\u0430\u0439\u043b\u0435 Tien-Shan:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">1: Min: 3514; Max: 4192; Avg: 3844.4135528815705 2: Min: 4934; Max: 5741; Avg: 5358.663125307817 3: Min: 4945; Max: 5703; Avg: 5313.77323577007 4: Min: 4882; Max: 5725; Avg: 5281.23640329276 5: Min: 4219; Max: 4953; Avg: 4598.3294167311615 6: Min: 3712; Max: 4426; Avg: 4075.323506648843 7: Min: 4168; Max: 4966; Avg: 4530.841131358616 8: Min: 4576; Max: 5344; Avg: 4973.967775979737 9: Min: 4608; Max: 5478; Avg: 4976.573559417435 10: Min: 4459; Max: 5261; Avg: 4795.212692605362 11: Min: 4574; Max: 5380; Avg: 4989.718215718005 12: Min: 3944; Max: 4757; Avg: 4331.33553788785 13: Min: 0 (3771); Max: 4428; Avg: 4095.4295363399706 14: Min: 0 (4084); Max: 4865; Avg: 4407.586716386407 15: Min: 0 (4384); Max: 5394; Avg: 4866.680292689791 16: Min: 0 (3837); Max: 4703; Avg: 4238.36325898825 17: Min: 0 (3786); Max: 4661; Avg: 4204.146837402378 18: Min: 0 (3753); Max: 4596; Avg: 4152.545697600788<\/code><\/pre>\n<p>  <\/p>\n<p>*\u0412 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044f \u043d\u0443\u043b\u044f, duh.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u043c \u043d\u0430\u0448\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0441\u0440\u0430\u0437\u0443 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043d\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 float [-1.00000-1.00000] \u0444\u043e\u0440\u043c\u0430\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">a = [1, 2, 3, 4, 5] function parse_array(arr) {     arr = arr.filter(a =&gt; a != 0); \/\/ to remove zeros     min = Math.min(...arr);     max = Math.max(...arr);     avg = arr.reduce((a, b) =&gt; a + b) \/ arr.length;    console.log(&quot;Min: &quot; + min + &quot;; Max: &quot; + max + &quot;; Avg: &quot; + avg);     floatify = function (a) {       if (a == 0) return 0;       if (a &gt; avg) {          return (a - avg) \/ (max - avg);       } else {          return (a - min) \/ (avg - min) - 1;    }    console.log(arr.map(a =&gt; floatify(a))); }  &gt; parse_array(a)    Min: 1; Max: 5; Avg: 3    [-1, -0.5, 0, 0.5, 1]<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">-0.09502086396735898 -0.579290635757401 -0.24635516765174703 -0.1646346436621775 -0.1313410968516121 -0.03448714249360363<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0438\u0445 \u0432 Audacity \u0447\u0435\u0440\u0435\u0437 Tools -&gt; Sample Data Import\u2026<\/p>\n<p>  <\/p>\n<p>\u0418 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 (\u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 Tien-Shan):<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jd\/ag\/l_\/jdagl_qqaxkbvipb58cr-zkaehu.png\"><\/p>\n<p>  <\/p>\n<p>\u0417\u0432\u0443\u0447\u0438\u0442 \u043a\u0430\u043a \u0448\u0443\u043c. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u043e, \u043d\u043e \u0430\u0431\u0441\u043b\u044e\u0442\u043d\u043e \u043d\u0435\u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0447\u043d\u043e \u0438 \u043a\u0430\u043a \u043c\u0443\u0437\u044b\u043a\u0430 \u043d\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u0431\u043e\u0439.<\/p>\n<p>  <\/p>\n<h3 id=\"vtoraya-popytka-neudachnaya\">\u0412\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 (\u043d\u0435\u0443\u0434\u0430\u0447\u043d\u0430\u044f)<\/h3>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u041c\u043d\u0435 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0447\u0435\u0441\u0430\u043b\u043e \u043c\u043e\u0437\u0433 \u0442\u043e, \u0447\u0442\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0430\u0448\u0451\u043b \u0434\u0440\u0443\u0433\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0433\u0434\u0435 \u0443\u0436\u0435 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">Timestamp    FractionalDate    UncorrectedCountRate[cts\/min]    CorrectedCountRate[cts\/min]    Pressure[mbar] 2020-03-11T00:00:00Z    71.0000000  7150    6702    991.00 2020-03-11T00:30:00Z    71.0208333  7205    6749    990.91 2020-03-11T01:00:00Z    71.0416667  7214    6750    990.75 2020-03-11T01:30:00Z    71.0625000  7250    6776    990.61 2020-03-11T02:00:00Z    71.0833333  7275    6792    990.45<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0445\u0430\u043e\u0442\u0438\u0447\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u0414\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:<br \/>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0438 \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u044f (\u0434\u0430\u043d\u043d\u044b\u0435-&gt;\u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0430)<br \/>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0438 \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438: detune, \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0438\u0442\u0434<\/p>\n<p>  <\/p>\n<h4 id=\"overtone\">Overtone<\/h4>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0449\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0432\u0443\u043a\u0438 \u0438 \u043c\u0443\u0437\u044b\u043a\u0443, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043a\u0430\u043a\u043e\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u041f\u041e. \u041a\u0430\u043a \u0440\u0430\u0437 \u044f \u0434\u0430\u0432\u043d\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u044f\u0437\u044b\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u0443\u0437\u044b\u043a\u0443. \u0422\u0430\u043a \u0447\u0442\u043e \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Overtone (\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u043e\u0442: <a href=\"https:\/\/www.youtube.com\/watch?v=imoWGsipe4k\" rel=\"nofollow\">https:\/\/www.youtube.com\/watch?v=imoWGsipe4k<\/a>).<\/p>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u043f\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438: <a href=\"https:\/\/github.com\/overtone\/overtone\" rel=\"nofollow\">https:\/\/github.com\/overtone\/overtone<\/a><br \/>  <em>\u0417\u0430\u043f\u0430\u0441\u0438\u0442\u0435\u0441\u044c \u043f\u0430\u0440\u043e\u0439 \u0447\u0430\u0441\u043e\u0432-\u0434\u043d\u0435\u0439 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u043f\u044b\u0442\u0430 \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 Ovetone. \u0422\u0430\u043c \u043d\u0443\u0436\u043d\u044b: Java, Clojure, Supercollider, Leiningen, JackD \u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u0435\u0436\u0434\u0443 jackd, pulseaudio \u0438 alsa. \u042d\u0442\u043e \u0436\u0435 \u043b\u0438\u043d\u0443\u043a\u0441!<br \/>  <strong>\u041d\u0430 \u0432\u0438\u043d\u0434\u0435 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Clojure \u0438 Leiningen.<br \/>  <\/strong><\/em>\u041c\u0430\u043a \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c, \u043d\u043e \u043d\u0430 \u043d\u0451\u043c \u0442\u043e\u0436\u0435 \u043b\u0438\u043d\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0435 \u043c\u043e\u0433\u0443.<\/p>\n<p>  <\/p>\n<h4 id=\"clojure\">Clojure<\/h4>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438, \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043d\u0430\u0448\u0443 \u0441\u0442\u0430\u0442\u044c\u044e. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043f\u0440\u043e\u0448\u043b\u043e \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0432\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0437\u0430\u0447\u0435\u043c \u043c\u044b \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c Clojure, \u0438 \u0434\u0430\u043d\u043d\u044b\u0435.<br \/>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043f\u0435\u0440\u0432\u043e\u0435. \u0412 \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 <code>lein repl<\/code> (\u044d\u0442\u043e \u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u0445 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0431\u044b\u043b\u043e), \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c tone.clj, \u0432 \u043d\u0451\u043c \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0437 repl-\u0430.<\/p>\n<p>  <\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0444\u0430\u0439\u043b \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(demo 0.5 (sin-osc 440))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421 \u0442\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u043f\u043e\u0437\u0436\u0435. \u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0437\u0432\u0443\u043a \u0438\u0437 \u0437\u0432\u0443\u043a\u043e\u0438\u0437\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432<br \/>  <code>lein repl<\/code><br \/>  \u0418\u043c\u043f\u043e\u0440\u0442\u0438\u043c ovetone<br \/>  <code>user=&gt; (use \u2018overtone.live)<\/code><br \/>  \u0418 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0448 \u0444\u0430\u0439\u043b<br \/>  <code>user=&gt; (load-file \u201ctone.clj\u201d)<\/code><\/p>\n<p>  <\/p>\n<p>\u0421\u043b\u044b\u0448\u0438\u043c \u0437\u0432\u0443\u043a? \u0427\u0443\u0434\u0435\u0441\u043d\u043e!<br \/>  \u041d\u0435 \u0441\u043b\u044b\u0448\u0438\u043c? \u0427\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u043d\u0435 \u043f\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u044f \u043d\u0435 \u0441\u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0431\u0435\u0437 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0441\u0442\u0435\u0439\u2026<\/p>\n<p>  <\/p>\n<h4 id=\"dannye\">\u0414\u0430\u043d\u043d\u044b\u0435<\/h4>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0439\u0434\u0451\u043c, \u043a\u0430\u043a \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043a\u0430\u0440\u043c\u043b\u0438\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0448\u0435\u043c\u0443 \u201c\u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440\u0443\u201d.<br \/>  \u041f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0442\u044c\/\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043a\u043e\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0442\u043d\u044e \u0442\u044b\u0441\u044f\u0447 \u0447\u0438\u0441\u0435\u043b \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<p>  <\/p>\n<p>\u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043d\u0435 \u0448\u0438\u0431\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">user=&gt; (def a [1,2,3]) #'user\/a user=&gt; (prn-str a) &quot;[1 2 3]\\n&quot; user=&gt; (spit &quot;stored-array.dat&quot; (prn-str a)) nil user=&gt; (slurp &quot;stored-array.dat&quot;) &quot;[1 2 3]\\n&quot;<\/code><\/pre>\n<p>  <\/p>\n<p>*\u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u0416\u0421, \u044d\u0442\u043e Clojure, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u043f\u0443\u0449\u0435\u043d overtone.live \u2014 \u0441\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u043e\u0434\u043d\u043e \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438, \u0432 \u043a\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432 \u0432 Clojure. \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u043f\u044f\u0442\u044b\u0435 \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0431\u0440\u0430\u043c\u0438\u0442\u044c \u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u043c\u0438 \u0441\u043a\u043e\u0431\u043a\u0430\u043c\u0438, \u0438, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0434\u0430\u0436\u0435 \u0441\u0445\u043b\u043e\u043f\u043d\u0443\u0442\u044c \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u2014 \u044d\u0442\u043e \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c.<\/p>\n<p>  <\/p>\n<p><strong>UPD: \u0414\u0430, \u043a\u043b\u043e\u0436\u0443\u0440\u0430 \u043f\u0430\u0440\u0441\u0438\u0442 \u0438 \\n \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u0430 \u0438 \u0443\u0441\u043b\u0430\u0434\u044b \u0433\u043b\u0430\u0437:<\/strong><\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">user=&gt; (defn trim [input] (clojure.string\/replace input #&quot;\\n&quot; &quot;&quot;)) #'user\/trim<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044b \u0441\u0442\u0440\u043e\u043a \u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u043c\u044b \u0438\u0445 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0442\u0440\u0451\u043c (\\n, \u0430 \u043d\u0435 \u0434\u0430\u043d\u043d\u044b\u0435\u2026):<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">user=&gt; (trim (slurp \u201cstored-array.dat\u201d)) \u201c[1 2 3]\u201d<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0443 \u043c\u0435\u043d\u044f \u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u0440\u0443\u043a\u0438, \u0432\u0438\u0434\u044f \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0443\u0447\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u0443\u043c\u0435\u0442\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0437\u0432\u0443\u043a \u0432 overtone. \u042f \u0434\u0430\u0436\u0435 \u043d\u0435 \u043c\u043e\u0433 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0431\u0449\u0435\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u0440\u0435\u0437\u043a\u043e \u043e\u0431\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u043d\u0430\u0447\u0430\u0432\u0448\u0438\u0441\u044c.<\/p>\n<p>  <\/p>\n<h3 id=\"tretya-popytka\">\u0422\u0440\u0435\u0442\u044c\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430<\/h3>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043b\u0435\u043d\u0438\u0432 \u0438 \u0433\u043b\u0443\u043f, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 overtone, \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0430\u0443\u0437\u0443 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u043a \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u0443\u0436\u0435 \u0441 \u043d\u043e\u0432\u043e\u0439 \u0438\u0434\u0435\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u0418\u043c\u044f \u044d\u0442\u043e\u0439 \u0438\u0434\u0435\u0435 \u2014 <strong>Shadertoy.com<\/strong><\/p>\n<p>  <\/p>\n<p>\u041e\u0436\u0438\u0434\u0430\u043b\u0438? \u042f \u0441\u0430\u043c \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u043b. \u0410 \u0442\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u043d\u043e \u0438 \u0437\u0432\u0443\u043a!<br \/>  \u0418 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/\/ \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 vec2() \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043e\u0433\u043e \u0438 \u043b\u0435\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 vec2 mainSound(float time) {     \/\/ 6.2831 ~ 2pi     \/\/ exp() \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0437\u0430\u0442\u0443\u0445\u0430\u043d\u0438\u0435 \u0437\u0432\u0443\u043a\u0430     \/\/ \u041a\u043e\u0441\u0438\u043d\u0443\u0441 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u043d\u0443\u0441\u043e\u0438\u0434\u044b \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439     return vec2(sin(6.2831 * 440.0 * time) * exp(-2.0 * time)); }<\/code><\/pre>\n<p>  <\/p>\n<p>**(\u043d\u0443\u2026 \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u043d\u043e\u0439\u2026 \u043d\u043e \u0441\u0430\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u0430\u044f \u2014 \u043e\u0434\u043d\u0430)<\/p>\n<p>  <\/p>\n<p>\u0410 \u0435\u0449\u0451 \u0435\u0441\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u2014 <del>shadertoy \u043c\u043e\u0436\u043d\u043e \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u0442\u044c<\/del>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0442 \u0432\u0430\u043c \u043d\u043e\u0442\u0430 \u043b\u044f:<\/p>\n<p>  <\/p>\n<div class=\"oembed\"><a href=\"https:\/\/www.shadertoy.com\/view\/tdSyWV\">https:\/\/www.shadertoy.com\/view\/tdSyWV<\/a><\/div>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/\/ \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 vec2() \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043e\u0433\u043e \u0438 \u043b\u0435\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 vec2 mainSound(float time) {     vec2 result = vec2(sin(6.2831 * 440.0 * time) * exp(-2.0 * time));      \/\/ One second later     if (time &gt; 1.0) {         \/\/ (time - x) \u043d\u0443\u0436\u0435\u043d, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c         \/\/ \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0434\u043b\u044f exp() \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438\u043d\u0430\u0447\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442         \/\/ exp() \u0431\u0443\u0434\u0435\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c \u0438 \u043c\u044b \u0443\u0441\u043b\u044b\u0448\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u0443\u044e \u043d\u043e\u0442\u0443         result = vec2(sin(6.2831 * 262.0 * time) * exp(-2.0 * (time - 1.0)));     }      return result; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043d\u0430 Shadertoy \u043a\u043e\u0434\u0430 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435, \u043d\u043e \u0438 \u043c\u0435\u043b\u043e\u0434\u0438\u044f \u043f\u043e\u0432\u0435\u0441\u0435\u043b\u0435\u0435!<\/p>\n<p>  <\/p>\n<div class=\"oembed\"><a href=\"https:\/\/www.shadertoy.com\/view\/tsByWV\">https:\/\/www.shadertoy.com\/view\/tsByWV<\/a><\/div>\n<p>  <\/p>\n<p>\u0415\u0449\u0451 \u043f\u0430\u0440\u0430 \u0432\u0435\u0449\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0437\u0432\u0443\u043a \u0431\u044b\u043b \u043a\u0440\u0430\u0441\u0438\u0432\u0435\u0435 \u2014 \u044d\u0442\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u043d\u043e\u0442, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c.<br \/> \n<pre><code class=\"cpp\">struct Note { \/\/ \u0432 \u0413\u0435\u0440\u0446\u0430\u0445 float frequency; \/\/ \u041f\u0430\u0443\u0437\u0430 - \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0441\u0435\u043a\u0443\u043d\u0434\u0435 \u0441\u044b\u0433\u0440\u0430\u0442\u044c \u043d\u043e\u0442\u0443 float offset; \/\/ \u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0440\u043e\u0431\u044c\u044e (1, 2, 0.25, 1\/16\u2026) float duration; };<\/code><\/pre>\n<\/li>\n<li>\u0412\u044b\u043d\u0435\u0441\u0442\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b (\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0434\u043b\u044f <code>return<\/code>) \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<br \/> \n<pre><code class=\"cpp\">float noteFreq(Note note, float time) { \/\/ 6.2831 = 2pi \/\/ exp() \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0437\u0430\u0442\u0443\u0445\u0430\u043d\u0438\u0435 \u0437\u0432\u0443\u043a\u0430 \/\/ \u041a\u043e\u0441\u0438\u043d\u0443\u0441 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u043d\u0443\u0441\u043e\u0438\u0434\u044b \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 return cos(6.2831 * note.frequency * time) * exp(-1.0\/note.duration * (time - note.offset)); }<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0418 \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0438\u0437 \u201c\u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043b\u0443\u0447\u0430\u201d, \u043f\u043e\u0434\u0433\u043e\u043d\u044f\u044f \u0435\u0451 \u043f\u043e\u0434 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043d\u043e\u0442\u0443 (\u0432 \u0437\u0430\u043f\u0430\u0434\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435; \u044d\u0442\u043e \u0433\u0434\u0435 12 \u043f\u043e\u043b\u0443\u0442\u043e\u043d\u043e\u0432 \u0438 \u0432\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0430).<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/\/ Maps frequency to the nearest note from [scale] float nearestNote(float value) { \/\/ \u041d\u0430\u0439\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043d\u043e\u0442\u0443 \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430, \u0447\u044c\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 for (int i = 1; i &lt; scale.length(); i++) {     if (scale[i] &gt; value) {         return scale[i - 1];     } }  \/\/ \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 return scale[0]; }<\/code><\/pre>\n<p>  <\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041e\u0431\u0430 \u0431\u043b\u043e\u043a\u0430 \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0434 <code>vec2 mainSound(float time) {...}<\/code> \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c, \u0433\u0440\u0443\u0431\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c boilerplate \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0438.<\/p>\n<p>  <\/p>\n<h4 id=\"kosmicheskie-luchi\">\u041a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043b\u0443\u0447\u0438<\/h4>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0448\u043b\u0430 \u043f\u043e\u0440\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043b\u0443\u0447\u0438 \u0432 \u043d\u0430\u0448 \u043a\u043e\u0434. \u042f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0442\u043e\u0433\u043e \u0436\u0435 \u0422\u044f\u043d\u044c-\u0428\u0430\u043d\u044f, \u0431\u043b\u0430\u0433\u043e \u0441\u043c\u043e\u0433 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u0438\u0445 \u043e\u0444\u043e\u0440\u043c\u0438\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0437\u0430\u0434\u0443\u043c\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043a\u0443\u0447\u043d\u043e, \u044f \u0432\u0437\u044f\u043b \u0442\u0440\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 (\u0434\u0432\u0430 \u0438\u0437 \u043d\u0430\u0434\u0437\u0435\u043c\u043d\u043e\u0439 \u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u043e\u0434\u0437\u0435\u043c\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0446\u0438\u0438). \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u201c\u0432\u044b\u0437\u043e\u0432\u0430\u201d \u043d\u043e\u0442, \u043f\u043e\u043b\u0443\u0447\u0438\u0432 \u043c\u0435\u043b\u043e\u0434\u0438\u044e \u0441 \u0434\u0432\u0443\u043c\u044f \u0440\u0438\u0442\u043c\u0430\u043c\u0438: 2:1 (4:1) \u0443 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0438 \u0431\u0430\u0441 \u043f\u0430\u0440\u0442\u0438\u0439 \u0438 3:1 \u0443 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u043f\u0430\u0440\u0442\u0438\u0438. \u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u043f\u0430\u0440\u0442\u0438\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u044f \u0432\u0437\u044f\u043b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043f\u0430\u0440\u0442\u0438\u0439, \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0442\u0435\u043c\u043f\u0443. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">const float leadTempoRatio = 2.0; \/\/ 2 ticks per second const float midTempoRatio = 2.0\/3.0; \/\/ 1.5 ticks\/second const float bassTempoRatio = 1.0; \/\/ 1 tick per second  \/\/ 200 items, see above const float[] dataLead = float[] (5504.0, 5308.0, 5309.0, 5289.0, 5225.0, 5208.0, 5190.0, 5250.0, 5362.0, 5486.0, 5314.0, 5467.0, 5292.0, 5305.0, 5167.0, 5423.0, 5402.0, 5280.0, 5420.0, 5428.0, 5260.0, 5306.0, 5379.0, 5283.0, 5234.0, 5340.0, 5252.0, 5568.0, 5476.0, 5248.0, 5494.0, 5480.0, 5230.0, 5609.0, 5323.0, 5392.0, 5304.0, 5478.0, 5321.0, 5435.0, 5179.0, 5444.0, 5289.0, 5413.0, 5275.0, 5389.0, 5500.0, 5221.0, 5276.0, 5356.0, 5250.0, 5414.0, 5269.0, 5269.0, 5216.0, 5512.0, 5410.0, 5300.0, 5426.0, 5433.0, 5156.0, 5482.0, 5281.0, 5377.0, 5279.0, 5317.0, 5111.0, 5455.0, 5435.0, 5239.0, 5353.0, 5342.0, 5519.0, 5242.0, 5281.0, 5226.0, 5374.0, 5190.0, 5232.0, 5292.0, 5466.0, 5298.0, 5265.0, 5521.0, 5435.0, 5252.0, 5245.0, 5506.0, 5491.0, 5343.0, 5390.0, 5287.0, 5349.0, 5332.0, 5515.0, 5358.0, 5369.0, 5396.0, 5187.0, 5308.0, 5322.0, 5207.0, 5355.0, 5388.0, 5265.0, 5217.0, 5254.0, 5494.0, 5306.0, 5380.0, 5352.0, 5297.0, 5395.0, 5387.0, 5410.0, 5448.0, 5301.0, 5182.0, 5465.0, 5327.0, 5617.0, 5362.0, 5417.0, 5470.0, 5549.0, 5283.0, 5425.0, 5419.0, 5307.0, 5405.0, 5286.0, 5228.0, 5400.0, 5426.0, 5378.0, 5396.0, 5514.0, 5393.0, 5314.0, 5318.0, 5431.0, 5236.0, 5257.0, 5239.0, 5447.0, 5439.0, 5399.0, 5484.0, 5455.0, 5226.0, 5586.0, 5491.0, 5338.0, 5390.0, 5275.0, 5278.0, 5474.0, 5332.0, 5320.0, 5355.0, 5387.0, 5435.0, 5406.0, 5196.0, 5363.0, 5500.0, 5466.0, 5443.0, 5248.0, 5510.0, 5342.0, 5270.0, 5123.0, 5485.0, 5318.0, 5469.0, 5249.0, 5330.0, 5406.0, 5543.0, 5203.0, 5281.0, 5395.0, 5416.0, 5249.0, 5252.0, 5372.0, 5397.0, 5327.0, 5260.0, 5430.0, 5334.0, 5309.0, 5435.0, 5381.0, 5324.0, 5399.0, 5504.0, 5320.0, 5458.0);  \/\/ 150 items const float[] dataMid = float[] (3813.0, 3653.0, 3763.0, 3790.0, 3801.0, 3833.0, 3674.0, 3822.0, 3639.0, 3848.0, 3866.0, 3794.0, 3747.0, 3938.0, 3823.0, 3989.0, 3963.0, 3852.0, 3836.0, 3694.0, 3883.0, 3748.0, 3802.0, 3884.0, 3790.0, 3684.0, 3895.0, 3872.0, 3885.0, 4011.0, 3844.0, 3901.0, 3713.0, 3870.0, 3868.0, 3772.0, 3866.0, 3939.0, 3856.0, 3720.0, 3640.0, 3929.0, 3905.0, 3811.0, 3811.0, 3899.0, 3699.0, 3868.0, 3892.0, 3746.0, 3878.0, 3778.0, 3894.0, 3740.0, 3709.0, 3710.0, 3812.0, 3856.0, 3811.0, 3935.0, 3850.0, 3859.0, 3800.0, 3748.0, 3725.0, 3814.0, 3897.0, 3745.0, 3763.0, 3833.0, 3964.0, 3770.0, 3846.0, 3776.0, 3945.0, 3791.0, 3799.0, 3709.0, 3922.0, 3825.0, 3804.0, 3869.0, 3829.0, 3770.0, 3838.0, 3820.0, 3734.0, 3979.0, 3765.0, 3764.0, 3857.0, 3861.0, 3869.0, 3787.0, 3963.0, 3780.0, 3847.0, 3759.0, 3857.0, 3782.0, 3711.0, 3843.0, 3909.0, 3839.0, 3811.0, 3874.0, 3849.0, 3883.0, 3925.0, 3752.0, 3847.0, 3731.0, 3824.0, 3905.0, 3901.0, 3926.0, 3897.0, 3751.0, 3896.0, 3752.0, 3854.0, 3936.0, 3767.0, 3812.0, 3933.0, 3889.0, 3808.0, 3703.0, 3948.0, 3883.0, 3872.0, 3762.0, 3870.0, 3899.0, 3818.0, 3900.0, 3774.0, 3951.0, 3818.0, 3893.0, 3821.0, 3823.0, 3801.0, 3833.0, 3744.0, 3769.0, 3864.0, 3923.0, 3974.0, 3810.0);  \/\/ 100 items const float[] dataBass = float[] (20.0, 14.0, 13.0, 14.0, 10.0, 23.0, 16.0, 18.0, 6.0, 16.0, 18.0, 7.0, 15.0, 13.0, 14.0, 22.0, 12.0, 14.0, 12.0, 14.0, 19.0, 18.0, 8.0, 16.0, 13.0, 12.0, 21.0, 17.0, 22.0, 19.0, 11.0, 16.0, 16.0, 24.0, 16.0, 20.0, 18.0, 20.0, 17.0, 22.0, 23.0, 14.0, 17.0, 16.0, 23.0, 14.0, 15.0, 10.0, 12.0, 14.0, 20.0, 22.0, 14.0, 14.0, 20.0, 24.0, 14.0, 23.0, 20.0, 25.0, 14.0, 17.0, 21.0, 21.0, 18.0, 18.0, 13.0, 11.0, 21.0, 22.0, 16.0, 13.0, 24.0, 26.0, 29.0, 27.0, 18.0, 23.0, 15.0, 18.0, 8.0, 17.0, 24.0, 14.0, 12.0, 18.0, 16.0, 15.0, 25.0, 12.0, 19.0, 11.0, 18.0, 25.0, 21.0, 16.0, 19.0, 24.0, 19.0, 14.0);<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u0441\u0430\u043c\u044b\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435. \u0410 \u0447\u0442\u043e \u0432\u0430\u0436\u043d\u0435\u0435 \u2014 \u043e\u043d\u0438 \u043d\u0435 \u043d\u0435\u0441\u0443\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0432 \u043f\u043b\u0430\u043d\u0435 \u043c\u0443\u0437\u044b\u043a\u0438 (\u043d\u0435 \u0432 \u043f\u043b\u0430\u043d\u0435 \u0444\u0438\u0437\u0438\u043a\u0438 \u0437\u0432\u0443\u043a\u0430, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043f\u043b\u0430\u043d\u0435 \u043c\u0443\u0437\u044b\u043a\u0438). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043f\u0430\u0440\u0442\u0438\u0439 (\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434):<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/\/ \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u0430\u0440\u0442\u0438\u0438 \u0432 \u201c\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e\u201d \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \/\/ \u041c\u043e\u0436\u043d\u043e \u043d\u0435 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0438\u0447\u0430\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e nearestNote() \/\/ \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442 \u0432\u0441\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f \u043e\u0442 \u201c\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0445\u201d \u043d\u043e\u0442 float fixLead(float value) {     return nearestNote(value \/ 8.0); }  \/\/ \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u043f\u0430\u0440\u0442\u0438\u0438 \u0432 \u201c\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e\u201d \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 float fixMid(float value) {     return nearestNote(value \/ 10.0); }  \/\/ \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0430\u0441 \u043f\u0430\u0440\u0442\u0438\u0438 \u0432 \u201c\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e\u201d \u0431\u0430\u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 float fixBass(float value) {     return nearestNote(value * 7.0); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0448\u0442\u0440\u0438\u0445 \u2014 \u044d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0448\u0443 \u0433\u0430\u043c\u043c\u0443 \u2014 \u043d\u0430\u0448 \u043d\u0430\u0431\u043e\u0440 \u043d\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0432\u0443\u0447\u0430\u0442\u044c.<br \/>  \u041e\u0434\u0438\u043d \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u043c\u0443\u0437\u044b\u043a\u0438 \u2014 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0442\u0440\u043e\u0439), \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0448\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u2014 \u0442\u0435\u043c \u043f\u0440\u0438\u044f\u0442\u043d\u0435\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0437\u0432\u0443\u043a\u0438.<br \/>  \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0433\u0430\u043c\u043c. \u0422\u043e\u0447\u043d\u0435\u0435, \u043f\u043e\u0438\u0441\u043a. \u0422\u043e\u0447\u043d\u0435\u0435, \u043f\u0440\u043e\u0441\u0442\u043e copy-paste, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0433\u0430\u043c\u043c\u044b \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u044b \ud83d\ude42<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/\/&quot;\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435&quot; \u043d\u043e\u0442\u044b. \u0417\u0434\u0435\u0441\u044c - C Major \u0433\u0430\u043c\u043c\u0430 \u043e\u0442 C0 \u0434\u043e B8 const float[] scale = float[] (16.35, 18.35, 20.60, 21.83, 24.50, 27.50, 30.87, 32.70, 36.71, 41.20, 43.65, 49.00, 55.00, 61.74, 65.41, 73.42, 82.41, 87.31, 98.00, 110.00, 123.47, 130.81, 146.83, 164.81, 174.61, 196.00, 220.00, 246.94, 261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88, 523.25, 587.33, 659.25, 698.46, 783.99, 880.00, 987.77, 1046.50, 1174.66, 1318.51, 1396.91, 1567.98, 1760.00, 1975.53, 2093.00, 2349.32, 2637.02, 2793.83, 3135.96, 3520.00, 3951.07, 4186.01, 4698.63, 5274.04, 5587.65, 6271.93, 7040.00, 7902.13);<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044d\u0442\u043e \u0433\u0430\u043c\u043c\u0430 \u0414\u043e \u041c\u0430\u0436\u043e\u0440 \u043e\u0442 C0 \u0434\u043e B8, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0432 \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u0435\u0441\u0442\u044c 8 \u043e\u043a\u0442\u0430\u0432 \u043f\u043e 7 \u043d\u043e\u0442. \u0418 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0437\u0432\u0443\u0447\u0430\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c (\u0435\u0441\u043b\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e).<\/p>\n<p>  <\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u043a \u044d\u0442\u0438\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u0430\u043c \u0431\u0443\u0434\u0443\u0442 \u201c\u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c\u0441\u044f\u201d \u043d\u0430\u0448\u0438 \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u0432\u0443\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0433\u043e\u043d\u0438\u043c \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 <code>fix*()<\/code> \u0444\u0443\u043d\u043a\u0446\u0438\u044e.<\/p>\n<p>  <\/p>\n<p>\u0412\u0430\u0436\u043d\u043e: \u041d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c \u0447\u0438\u0441\u043b\u043e \u043a \u0447\u0430\u0441\u0442\u043e\u0442\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u044d\u0442\u0443 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043d\u043e\u0442\u0435.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435, \u0432 <code>mainSound(float time) {...}<\/code> \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u043f\u043e \u0432\u0441\u0435\u043c \u043d\u0430\u0448\u0438\u043c \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u043c, \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0437\u0432\u0443\u043a\u0430 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0443 \u043f\u043e \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>noteFreq()<\/code>.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">float result = 0.0;  \/\/ \u0412\u044b\u0441\u043e\u043a\u0430\u044f \u043f\u0430\u0440\u0442\u0438\u044f for (int i = 0; i &lt; dataLead.length(); i++) {     \/\/ \u0412\u044b\u0441\u043e\u043a\u0430\u044f \u043f\u0430\u0440\u0442\u0438\u044f; \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c - 2.0x, \u0432\u0441\u0435 \u043d\u043e\u0442\u044b - \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043d\u044b\u0435 (1\/4), \u0441\u0442\u0430\u0440\u0442 \u0441\u043e 2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b     Note noteLead = Note(fixLead(dataLead[i]), float(i) + 2.0, 1.0\/4.0);      \/\/ result = \u0437\u0432\u0443\u043a     \/\/ += \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0437\u0432\u0443\u043a\u0438 \u043d\u043e\u0432\u044b\u0445 \u0438 \u0435\u0449\u0451 \u0437\u0432\u0443\u0447\u0430\u0449\u0438\u0445 \u043d\u043e\u0442     if (time &gt; noteLead.offset) {         float amplitude = noteFreq(noteLead, time);         result += amplitude;     } }  \/\/ \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 vec2() \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043e\u0433\u043e \u0438 \u043b\u0435\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 return vec2(result);<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u043e \u0436\u0435 \u0438 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0430\u0440\u0442\u0438\u0439. \u042d\u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0432 \u043a\u043e\u043d\u0446\u0435. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u043e\u043d\u0443\u0441.<\/p>\n<p>  <\/p>\n<h4 id=\"bonus\">\u0411\u043e\u043d\u0443\u0441<\/h4>\n<p>  <\/p>\n<p>\u0423 Shadertoy \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430 \u2014 \u043e\u043d \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442 \u0430\u0443\u0434\u0438\u043e, \u0430 \u043f\u043e\u0442\u043e\u043c \u0438\u0433\u0440\u0430\u0435\u0442 \u0430\u0443\u0434\u0438\u043e \u043f\u043e\u0432\u0435\u0440\u0445 \u0440\u0435\u0430\u043b-\u0442\u0430\u0439\u043c \u0440\u0435\u043d\u0434\u0435\u0440\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0437\u0432\u043d\u0435 \u0432 \u043c\u0443\u0437\u044b\u043a\u0443 \u043d\u0435 \u0437\u0430\u043b\u0435\u0437\u0442\u044c. \u0418 \u0441\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0443\u0437\u044b\u043a\u0438 \u0442\u0430\u043c \u0442\u043e\u0436\u0435 \u0438\u0437\u0432\u043d\u0435 \u043d\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0439\u0434\u0451\u043c \u043d\u0430 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u0432\u0435\u0441\u044c \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u043a\u043e\u0434 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <code>Sound<\/code>. \u041e\u043d \u0442\u0430\u043c \u0447\u0443\u0434\u0435\u0441\u043d\u043e \u0437\u0432\u0443\u0447\u0430\u043b \u0438 \u043d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435 \u043c\u0435\u0448\u0430\u043b. \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u044d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c. \u0410 \u0435\u0449\u0451 \u043d\u0435\u043b\u044c\u0437\u044f \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e <code>DRY<\/code>, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u043a\u0432\u0430\u043b\u0430\u0439\u0437\u0435\u0440 \u043d\u0430 \u043d\u0430\u0448\u0443 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043c\u0443\u0437\u044b\u043a\u0443, \u0438\u043b\u0438 \u043a\u0430\u043a\u0443\u044e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043d\u0430 \u0437\u0432\u0443\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0451\u043c \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0438\u0437 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 <code>Sound<\/code> \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 <code>Common<\/code>, \u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/\/ \u0417\u0432\u0443\u043a \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u0430 \/\/ \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u0432\u043d\u0435 \/\/ \u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0430\u0443\u0434\u0438\u043e vec2 mainSound(float time) {     \/\/ \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0448\u0430\u0433 \u0432 \u0430\u0443\u0434\u0438\u043e     return _mainSound(time); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0431\u0443\u0444\u0435\u0440 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b (\u0432\u043a\u043b\u0430\u0434\u043a\u0430 <code>Buf A<\/code>):<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">void mainImage( out vec4 fragColor, in vec2 fragCoord ) {     \/\/ \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0448\u0430\u0433 \u0432 \u0430\u0443\u0434\u0438\u043e     _mainSound(iTime);      \/\/ \u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043c \u043d\u0430\u0448 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u0432 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443     fragColor = vec4(FRAG_COLOR); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0448\u0435\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u0440\u0435\u043d\u0434\u0435\u0440\u0435 \u0434\u0432\u0430\u0436\u0434\u044b \u2014 \u0432 \u043f\u0440\u0435\u0440\u0435\u043d\u0434\u0435\u0440\u0435 \u0434\u043b\u044f \u043c\u0443\u0437\u044b\u043a\u0438, \u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0430 \u0434\u043b\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0418 \u043c\u0443\u0437\u044b\u043a\u0430 \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0438\u043c\u0435\u044e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (<code>iTime<\/code> \u0438\u043b\u0438 <code>time<\/code>). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u201c\u043f\u043e\u0434 \u0444\u043e\u043d\u043e\u0433\u0440\u0430\u043c\u043c\u0443\u201d. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u0445 \u0437\u0432\u0443\u043a\u043e\u0432, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0451 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u0446\u0432\u0435\u0442\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u201c\u043d\u043e\u0442\u044b\u201d \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u043d\u043e\u0442\u044b \u2014 \u0441\u0438\u043d\u0438\u0439; \u0441\u0440\u0435\u0434\u043d\u0438\u0435 \u043d\u043e\u0442\u044b \u2014 \u0437\u0435\u043b\u0435\u043d\u044b\u0439; \u043d\u0438\u0437\u043a\u0438\u0435 \u043d\u043e\u0442\u044b \u2014 \u043a\u0440\u0430\u0441\u043d\u044b\u0439):<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">float result = 0.0; vec4 frag_color = vec4(0.0); frag_color.a = 1.0;  \/\/ High voice for (int i = 0; i &lt; dataLead.length(); i++) {     \/\/ \u0412\u044b\u0441\u043e\u043a\u0430\u044f \u043f\u0430\u0440\u0442\u0438\u044f; \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c - 2.0x, \u0432\u0441\u0435 \u043d\u043e\u0442\u044b - \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043d\u044b\u0435 (1\/4), \u0441\u0442\u0430\u0440\u0442 \u0441\u043e 2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b     Note noteLead = Note(fixLead(dataLead[i]), float(i) + 2.0, 1.0\/4.0);      \/\/ result = \u0437\u0432\u0443\u043a     \/\/ frag_color = \u0446\u0432\u0435\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u044f     \/\/ += \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0437\u0432\u0443\u043a\u0438 \u043d\u043e\u0432\u044b\u0445 \u0438 \u0435\u0449\u0451 \u0437\u0432\u0443\u0447\u0430\u0449\u0438\u0445 \u043d\u043e\u0442     if (time &gt; noteLead.offset) {         float amplitude = noteFreq(noteLead, time);         result += amplitude;         frag_color.b += amplitude;     } }  \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \/\/ \u042d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Buf A FRAG_COLOR = frag_color;  \/\/ \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 vec2() \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043e\u0433\u043e \u0438 \u043b\u0435\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 return vec2(result);<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043c\u0438\u0433\u0430\u043d\u0438\u0435, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0435 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0435 \u0432\u043e\u043b\u043d\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u0437\u0432\u0443\u043a\u0430. \u0422\u043e \u0435\u0441\u0442\u044c, \u043c\u044b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0438\u0434\u0438\u043c \u0432\u0441\u043f\u044b\u0448\u043a\u0443, \u0430 \u0432\u0438\u0434\u0438\u043c \u0437\u0430\u0442\u0443\u0445\u0430\u044e\u0449\u0435\u0435 \u043c\u0435\u0440\u0446\u0430\u043d\u0438\u0435, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0437\u0430\u0442\u0443\u0445\u0430\u043d\u0438\u0435\u043c \u0437\u0432\u0443\u043a\u0430.<\/p>\n<p>  <\/p>\n<h4 id=\"uborka\">\u0423\u0431\u043e\u0440\u043a\u0430<\/h4>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435, \u0434\u043b\u044f \u043a\u0440\u0430\u0441\u043e\u0442\u044b, \u044f \u0441\u043a\u0430\u0447\u0430\u043b \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0437\u0432\u0451\u0437\u0434, \u0438 \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0441\u0435\u0432\u0434\u043e-\u043c\u0430\u0441\u043a\u0443 \u0438\u0437 \u043d\u0430\u0448\u0435\u0439 \u0446\u0432\u0435\u0442\u043d\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0437\u0432\u0451\u0437\u0434\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0440\u0446\u0430\u043b\u0438 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0435 \u043d\u043e\u0442\u044b.<br \/>  **\u0414\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Shadertoy \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0431\u0435\u043a\u0430\u043f\u0430 \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0441 \u0448\u0443\u043c\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043d\u0430 \u0447\u0442\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u044f \u043d\u0430\u0448\u0451\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0437\u0432\u0451\u0437\u0434 \u0432 \u043a\u043e\u0441\u043c\u043e\u0441\u0435 (<a href=\"https:\/\/www.shadertoy.com\/view\/XlfGRj\" rel=\"nofollow\">https:\/\/www.shadertoy.com\/view\/XlfGRj<\/a>) \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0435\u0433\u043e \u0432 \u043a\u043e\u0434. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043e\u0442\u0440\u044f\u0441\u043d\u043e!<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438 (\u0441 \u0442\u0435\u043c \u0447\u0443\u0436\u0438\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u043c):<\/p>\n<p>  <\/p>\n<div class=\"oembed\"><a href=\"https:\/\/www.shadertoy.com\/view\/wsjyWK\">https:\/\/www.shadertoy.com\/view\/wsjyWK<\/a><\/div>\n<p>  <\/p>\n<p>\u0412\u0438\u0434\u0435\u043e \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043c\u043d\u043e\u0439 \u0437\u0432\u0451\u0437\u0434\u043d\u044b\u043c \u043d\u0435\u0431\u043e\u043c \u044f \u0437\u0430\u043f\u0438\u0441\u0430\u043b \u0438 \u0432\u044b\u043b\u043e\u0436\u0438\u043b \u043d\u0430 \u044e\u0442\u0443\u0431: <a href=\"https:\/\/www.youtube.com\/watch?v=r-4RJfCpepE\" rel=\"nofollow\">https:\/\/www.youtube.com\/watch?v=r-4RJfCpepE<\/a><\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u043a\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e, \u0432\u043e\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 wav \u0444\u0430\u0439\u043b: <a href=\"https:\/\/soundcloud.com\/arsenii-lisunov\/cosmic-rays\" rel=\"nofollow\">https:\/\/soundcloud.com\/arsenii-lisunov\/cosmic-rays<\/a><br \/>  **\u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c&#8230;<\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u0435\u043c \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u0430\u0448 \u0438\u043d\u0442\u0435\u0440\u0435\u0441!<br \/>  \u042f \u043d\u0435 \u043c\u043e\u0433\u0443 \u0440\u0443\u0447\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0442\u0435\u043a\u0441\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043d\u043e \u043c\u043e\u0433\u0443 \u043e\u0431\u0435\u0449\u0430\u0442\u044c \u0440\u0430\u0437\u0436\u0435\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0441\u0430\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u044e) \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u0435\u043c \ufe0f<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/498218\/\"> https:\/\/habr.com\/ru\/post\/498218\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/498218\/\">\n<p>\u0414\u0435\u043d\u044c \u0434\u043e\u0431\u0440\u044b\u0439, \u043a\u0430\u043c\u0440\u0430\u0434\u044b!<\/p>\n<p>  <\/p>\n<p>\u042f \u043f\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0439 \u043c\u0443\u0437\u044b\u043a\u0430\u043d\u0442, \u0437\u0430\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u043f\u044b\u0442 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0418 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0432\u0437\u044f\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0430\u0443\u0434\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u044d\u0442\u043e \u043a\u0430\u043a \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0442\u043e\u043b\u044c\u043a\u043e\u2026 \u043a\u044d\u043f\u044a)?<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u0449\u0435\u043c\u0442\u0430, \u043f\u043b\u0430\u043d \u0442\u0430\u043a\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041d\u0430\u0439\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435<\/li>\n<li>\u041f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u0441\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u0437\u0432\u0443\u043a<\/li>\n<li>\u041f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043a\u0440\u0430\u0441\u0438\u0432\u0448\u0435<\/li>\n<li>\u041e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0435\u0449\u0451 \u0441\u0438\u043b\u044b? goto 1<\/li>\n<\/ul>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-302204","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/302204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=302204"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/302204\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=302204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=302204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=302204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}