{"id":345313,"date":"2023-02-11T15:01:29","date_gmt":"2023-02-11T15:01:29","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=345313"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=345313","title":{"rendered":"<span>\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f MIDI-\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u0442\u0430\u043a\u0442\u044b \u0438 \u0434\u043e\u043b\u0438<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/87e\/6a7\/47b\/87e6a747b403ebe560f5cc84652c9279.png\" width=\"780\" height=\"440\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/87e\/6a7\/47b\/87e6a747b403ebe560f5cc84652c9279.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435: \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0448\u0435\u0434\u0435\u0432\u0440 \u0432 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 DAW, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 MIDI-\u0444\u0430\u0439\u043b, \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u043e\u0442\u044b \u0432 \u043d\u0451\u043c \u0438\u043c\u0435\u044e\u0442 \u0432\u043e\u0441\u044c\u043c\u0443\u044e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u044f \u043d\u0430 \u044d\u0442\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u0432\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0435 \u0442\u0432\u043e\u0440\u0438\u0442\u044c. \u041d\u043e, \u043f\u043e\u0441\u0442\u043e\u0439\u0442\u0435. \u0410 \u043a\u0430\u043a DAW, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u043e\u0442\u044b \u0432 \u0444\u0430\u0439\u043b\u0435 \u0432\u043e\u0441\u044c\u043c\u044b\u0435?<\/p>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0432 MIDI-\u0444\u0430\u0439\u043b\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u2013 \u0442\u0430\u043a\u0442\u0430\u043c\u0438 \u0438 \u0434\u043e\u043b\u044f\u043c\u0438. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043d\u0430\u0448\u0438\u0445 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0430 C#.<\/p>\n<hr\/>\n<p>\u041f\u043b\u0430\u043d \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c: \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Digital_audio_workstation\" rel=\"noopener noreferrer nofollow\"><u>DAW<\/u><\/a>, \u0430 \u0437\u0430\u0442\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434, \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0443 <a href=\"#end\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a>.<\/p>\n<h2>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h2>\n<ol>\n<li>\n<p><a href=\"#theory\" rel=\"noopener noreferrer nofollow\">\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0442\u0435\u043e\u0440\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#whatwithbb\" rel=\"noopener noreferrer nofollow\">\u0422\u0430\u043a \u0447\u0442\u043e \u0441 \u0442\u0430\u043a\u0442\u0430\u043c\u0438 \u0438 \u0434\u043e\u043b\u044f\u043c\u0438?<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#morecomplex\" rel=\"noopener noreferrer nofollow\">\u0412\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#code\" rel=\"noopener noreferrer nofollow\">\u041f\u0438\u0448\u0435\u043c \u043a\u043e\u0434<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#end\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<\/ol>\n<p><a class=\"anchor\" name=\"theory\" id=\"theory\"><\/a><\/p>\n<h2>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0442\u0435\u043e\u0440\u0438\u044f<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0435 MIDI-\u0444\u0430\u0439\u043b\u043e\u0432. \u042f \u043a\u0440\u0430\u0442\u043a\u043e \u0438\u0437\u043b\u043e\u0436\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0430\u043b\u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435. \u0422\u0435 \u0436\u0435 \u0438\u0437 \u0432\u0430\u0441, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0442\u0430\u0442\u044c \u0432\u0435\u0447\u0435\u0440 \u0437\u0430 \u0447\u0442\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439, \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a <a href=\"https:\/\/midi.org\/specifications\/midi1-specifications\/m1-v4-2-1-midi-1-0-detailed-specification-96-1-4\" rel=\"noopener noreferrer nofollow\"><u>\u043f\u043e\u043b\u043d\u043e\u043c\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443<\/u><\/a> \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/midi.org\/\" rel=\"noopener noreferrer nofollow\"><u>midi.org<\/u><\/a> (\u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f).<\/p>\n<p>MIDI-\u0444\u0430\u0439\u043b \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0431\u043b\u043e\u043a\u043e\u0432, \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432 \u0445\u0440\u043e\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c MIDI-\u0441\u043e\u0431\u044b\u0442\u0438\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0437\u044f\u0442\u0438\u0435 \u043d\u043e\u0442\u044b \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430). \u041a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0441\u043d\u0430\u0431\u0436\u0435\u043d\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u2013 <strong>delta-time<\/strong>. \u0414\u0435\u043b\u044c\u0442\u044b \u0438\u0437\u043c\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0432 <strong>\u0442\u0438\u043a\u0430\u0445<\/strong> (ticks) \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0435\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u044c\u0442\u0430 20 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043e\u0442\u0441\u0442\u043e\u0438\u0442 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 20. \u041d\u043e \u043d\u0430 20 \u0447\u0435\u0433\u043e? \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0447\u0438\u0441\u0435\u043b \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 MIDI-\u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f division (\u0442\u0438\u043f \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438). \u042d\u0442\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435, \u0438 \u0432 99.(9)% \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0432 \u043d\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e <strong>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0438\u043a\u043e\u0432 \u043d\u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043d\u0443\u044e \u043d\u043e\u0442\u0443<\/strong> (\u043f\u043e \u043f\u0440\u0430\u0432\u0434\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0432\u0442\u043e\u0440\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u2013 MIDI time code \/ SMPTE \u2013 \u043c\u043d\u0435 \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f). \u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435 <code>ticksPerQuarterNote<\/code>.<\/p>\n<p><a class=\"anchor\" name=\"whatwithbb\" id=\"whatwithbb\"><\/a><\/p>\n<h2>\u0422\u0430\u043a \u0447\u0442\u043e \u0441 \u0442\u0430\u043a\u0442\u0430\u043c\u0438 \u0438 \u0434\u043e\u043b\u044f\u043c\u0438?<\/h2>\n<p>\u0418\u043c\u0435\u044f \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u0442\u0435\u043e\u0440\u0438\u044e, \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0434\u043b\u0438\u043d\u044b \u0438\u0437 \u0442\u0438\u043a\u043e\u0432 \u0432 \u0442\u0430\u043a\u0442\u044b (bars) \u0438 \u0434\u043e\u043b\u0438 (beats) \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0434\u0435\u043b\u043e\u043c \u043d\u0435\u0445\u0438\u0442\u0440\u044b\u043c. \u0420\u0430\u0437\u043c\u0435\u0440 (time signature) \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u0435\u043c <code>numerator<\/code> \u0438 \u0437\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u0435\u043c <code>denominator<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0432\u0430\u043b\u044c\u0441\u043e\u0432\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0435 <code>3\/4<\/code> \u0438\u043c\u0435\u0435\u043c <code>numerator = 3<\/code>, \u0430 <code>denominator = 4<\/code>. \u0414\u043b\u0438\u043d\u0430 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0434\u043e\u043b\u0438 <code>1\/denominator<\/code> \u0432 \u0442\u0438\u043a\u0430\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438:<\/p>\n<pre><code>1\/4 = ticksPerQuarterNote 1\/denominator = beatLength<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f <code>beatLength<\/code> \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c:<\/p>\n<pre><code class=\"cs\">private static int GetBeatLength(int denominator, int ticksPerQuarterNote) =>     4 * ticksPerQuarterNote \/ denominator;<\/code><\/pre>\n<p>\u0423\u043c\u043d\u043e\u0436\u0438\u0432 \u043d\u0430 <code>numerator<\/code>, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u043b\u0438\u043d\u0443 \u0442\u0430\u043a\u0442\u0430:<\/p>\n<pre><code class=\"cs\">private static int GetBarLength(int numerator, int denominator, int ticksPerQuarterNote) =>     numerator * GetBeatLength(denominator, ticksPerQuarterNote);<\/code><\/pre>\n<p>\u0417\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u044b \u0442\u0430\u043a\u0442\u0430 \u0438 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0434\u043e\u043b\u0438, \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0438\u043a\u043e\u0432 <code>ticks<\/code> \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0438 \u0434\u043e\u043b\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u043c \u0436\u0430\u0434\u043d\u044b\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c:<\/p>\n<ol>\n<li>\n<p>\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0432 <code>ticks<\/code> \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u0442\u0430\u043a\u0442\u0430 (<code>barLength<\/code>), \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0435\u043b\u044b\u0445 \u0442\u0430\u043a\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0432\u0437\u044f\u0432 \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0432 \u0435\u0433\u043e \u043d\u0430 <code>beatLength<\/code>, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0435\u043b\u044b\u0445 \u0434\u043e\u043b\u0435\u0439;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u0435\u043d \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u043c\u0441\u044f \u0442\u0438\u043a\u0430\u043c.<\/p>\n<\/li>\n<\/ol>\n<p>\u041d\u0430 C# \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">private static (long Bars, long Beats, long Ticks) ConvertToBarsBeatsTicks(     long ticks,     int numerator,     int denominator,     int ticksPerQuarterNote) {     if (ticks == 0)         return (0, 0, 0);      var barLength = GetBarLength(numerator, denominator, ticksPerQuarterNote);     var bars = Math.DivRem(ticks, barLength, out ticks);      var beatLength = GetBeatLength(denominator, ticksPerQuarterNote);     var beats = Math.DivRem(ticks, beatLength, out ticks);      return (bars, beats, ticks); }<\/code><\/pre>\n<p>\u041d\u043e \u043f\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043c \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430\u0448\u0443 \u043b\u043e\u0433\u0438\u043a\u0443, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0437\u043d\u044b\u0435 DAW \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439. \u042f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0444\u0430\u0439\u043b <a href=\"https:\/\/www.dropbox.com\/s\/plg2huukqez14rj\/1B_1b_1s.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>1B_1b_1s.mid<\/u><\/a> \u0441 \u043e\u0434\u043d\u043e\u0439 \u043d\u043e\u0442\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0438:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/31b\/9ea\/f2c\/31b9eaf2cf53a8158ebadad2a8d01be3.png\" width=\"499\" height=\"162\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/31b\/9ea\/f2c\/31b9eaf2cf53a8158ebadad2a8d01be3.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u0433\u043e\u043b\u0443\u0431\u044b\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438 \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u044b \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0430\u043a\u0442\u043e\u0432, \u0441\u0435\u0440\u044b\u043c\u0438 \u0434\u043b\u0438\u043d\u043d\u044b\u043c\u0438 \u2013 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043e\u043b\u0435\u0439, \u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c\u0438 \u0441\u0435\u0440\u044b\u043c\u0438 \u2013 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 <code>4\/4<\/code>, \u0430 \u043d\u043e\u0442\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 <em>1 \u0442\u0430\u043a\u0442 1 \u0434\u043e\u043b\u044e \u0438 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0443\u044e<\/em>.<\/p>\n<p>\u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b \u0432 \u0442\u0440\u0451\u0445 DAW \u043d\u0435 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439: <a href=\"https:\/\/www.steinberg.net\/cubase\" rel=\"noopener noreferrer nofollow\"><u>Steinberg Cubase<\/u><\/a>, <a href=\"https:\/\/www.presonus.com\/products\/Studio-One\" rel=\"noopener noreferrer nofollow\"><u>PreSonus Studio One<\/u><\/a> \u0438 <a href=\"https:\/\/www.reaper.fm\" rel=\"noopener noreferrer nofollow\"><u>Cockos Reaper<\/u><\/a>. \u0415\u0441\u043b\u0438 \u0443 \u043a\u043e\u0433\u043e-\u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0437\u0434\u0435\u0441\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445, \u044f \u0431\u044b\u043b \u0431\u044b \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u0435\u043d.<\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0444\u0430\u0439\u043b \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 <em>\u201d\u041a\u0430\u043a\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u043d\u043e\u0442\u044b \u0432 \u0442\u0430\u043a\u0442\u0430\u0445 \u0438 \u0434\u043e\u043b\u044f\u0445?\u201d<\/em>:<\/p>\n<ul>\n<li>\n<p>Cubase: <code>1.1.1.0<\/code><\/p>\n<\/li>\n<li>\n<p>Studio One: <code>1.1.1.0<\/code><\/p>\n<\/li>\n<li>\n<p>Reaper: <code>1.1.25<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435 \u0438\u0441\u043f\u044b\u0442\u0443\u0435\u043c\u044b\u0435 \u0441\u043e\u0448\u043b\u0438\u0441\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043c\u043d\u0435\u043d\u0438\u0438. \u0421\u0440\u0430\u0437\u0443 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 DAW:<\/p>\n<ul>\n<li>\n<p>Cubase: <code>&lt;\u0442\u0430\u043a\u0442\u044b>.&lt;\u0434\u043e\u043b\u0438>.&lt;\u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435>.&lt;\u0442\u0438\u043a\u0438><\/code><\/p>\n<\/li>\n<li>\n<p>Studio One: <code>&lt;\u0442\u0430\u043a\u0442\u044b>.&lt;\u0434\u043e\u043b\u0438>.&lt;\u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435>.&lt;\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0439><\/code><\/p>\n<\/li>\n<li>\n<p>Reaper: <code>&lt;\u0442\u0430\u043a\u0442\u044b>.&lt;\u0434\u043e\u043b\u0438>.&lt;\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u0434\u043e\u043b\u0438><\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u043e\u0442\u0432\u0435\u0442 Reaper \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0430\u044f \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 25 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 \u0434\u043e\u043b\u0438 (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043d\u0430\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 <code>4\/4<\/code>). \u0417\u0430\u0431\u0430\u0432\u043d\u044b\u0439 \u0444\u0430\u043a\u0442: \u0442\u043e\u043b\u044c\u043a\u043e Steinberg \u0432 \u0441\u0432\u043e\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u044f\u0432\u043d\u043e <a href=\"https:\/\/steinberg.help\/cubase_ai_le_elements\/v9\/en\/cubase_nuendo\/topics\/project_window\/project_window_ruler_display_formats_r.html\" rel=\"noopener noreferrer nofollow\"><u>\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442<\/u><\/a> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u0432 \u0441\u0432\u043e\u0451\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a \u043f\u0440\u043e\u0447\u0438\u043c DAW \u044f \u043d\u0435 \u0441\u0443\u043c\u0435\u043b \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0447\u0442\u043e \u0433\u0440\u0443\u0441\u0442\u043d\u043e.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0442\u0435\u043c\u0443 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0442\u043e\u0432 \u0438 \u0434\u043e\u043b\u0435\u0439 \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u0431\u0430\u0439\u043d\u0430\u0445, \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 Studio One \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u043e\u0442 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0439 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0432 \u0442\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0442\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/65c\/e0e\/17a\/65ce0e17a3adeb359dc384ca3be644c9.png\" width=\"499\" height=\"162\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/65c\/e0e\/17a\/65ce0e17a3adeb359dc384ca3be644c9.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u043e\u0442\u0430 \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 <em>1 \u0442\u0430\u043a\u0442 1 \u0434\u043e\u043b\u044e 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0443\u044e \u0438 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0439<\/em>. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0437\u0434\u0435\u0441\u044c: <a href=\"https:\/\/www.dropbox.com\/s\/yvvyqj97kn8idqu\/1B_1b_1s_half.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>1B_1b_1s_half.mid<\/u><\/a>. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435:<\/p>\n<ul>\n<li>\n<p>Cubase: <code>1.1.1.60<\/code><\/p>\n<\/li>\n<li>\n<p>Studio One: <code>1.1.1.50<\/code><\/p>\n<\/li>\n<li>\n<p>Reaper: <code>1.1.38<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 <code>ticksPerQuarterNote = 480<\/code>. \u0422.\u0435. \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0430\u044f \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043c\u0435\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 <code>120<\/code>, \u0430 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0439 (\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f) \u2013 <code>60<\/code>. Cubase \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <code>60<\/code>, \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0438\u0431\u043e \u0442\u0443\u0442 \u0442\u0438\u043a\u0438. Studio One \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <code>50<\/code> \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0439. Reaper \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <code>38<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e <code>1\/16 + 1\/32<\/code> \u0432 \u0442\u0438\u043a\u0430\u0445 \u044d\u0442\u043e <code>120 + 60 = 180<\/code>, \u0447\u0442\u043e \u0435\u0441\u0442\u044c <code>38<\/code> \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 \u0434\u043e\u043b\u0438 (<code>180 \/ 480 \u2248 0.38<\/code>).<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430\u0448 \u043c\u0435\u0442\u043e\u0434 <code>ConvertToBarsBeatsTicks<\/code>. \u0421\u043f\u0435\u0440\u0432\u0430 \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0444\u0430\u0439\u043b <a href=\"https:\/\/www.dropbox.com\/s\/plg2huukqez14rj\/1B_1b_1s.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>1B_1b_1s.mid<\/u><\/a>. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u043c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"https:\/\/github.com\/melanchall\/drywetmidi\" rel=\"noopener noreferrer nofollow\"><u>DryWetMIDI<\/u><\/a> \u0438\u0437\u0432\u043b\u0435\u0447\u0451\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0438\u043a\u043e\u0432 \u043d\u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043d\u0443\u044e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0434\u043b\u0438\u043d\u0443 \u043d\u043e\u0442\u044b \u0432 \u0444\u0430\u0439\u043b\u0435:<\/p>\n<pre><code class=\"cs\">var midiFile = MidiFile.Read(\"1B_1b_1s.mid\"); var tempoMap = midiFile.GetTempoMap();  var timeSignature = tempoMap.GetTimeSignatureAtTime((MidiTimeSpan)0); var ticksPerQuarterNote = ((TicksPerQuarterNoteTimeDivision)tempoMap.TimeDivision).TicksPerQuarterNote; var noteLength = midiFile.GetNotes().First().Length;<\/code><\/pre>\n<p>\u0412\u044b\u0437\u0432\u0430\u0432 \u043c\u0435\u0442\u043e\u0434 <code>ConvertToBarsBeatsTicks<\/code><\/p>\n<pre><code class=\"cs\">var (bars, beats, ticks) = ConvertToBarsBeatsTicks(     noteLength,     timeSignature.Numerator,     timeSignature.Denominator,     ticksPerQuarterNote); Console.WriteLine($\"{bars}.{beats}.{ticks}\");<\/code><\/pre>\n<p>\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438: <code>1.1.120<\/code>. \u041f\u043e\u043a\u0430 \u0432\u0441\u0451 \u0442\u0430\u043a, \u043a\u0430\u043a \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c: <em>1 \u0442\u0430\u043a\u0442 1 \u0434\u043e\u043b\u044f \u0438 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0430\u044f<\/em> \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0432\u043d\u0430 <code>120<\/code> \u0442\u0438\u043a\u0430\u043c \u043f\u0440\u0438 <code>ticksPerQuarterNote = 480<\/code>).<\/p>\n<p>\u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442: <code>1.1.180<\/code>. \u0422.\u0435. <em>1 \u0442\u0430\u043a\u0442 1 \u0434\u043e\u043b\u044f 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0430\u044f \u0438 1 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f<\/em> \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0432 \u0441\u0443\u043c\u043c\u0435 \u0434\u0430\u044e\u0442 <code>180<\/code> \u0442\u0438\u043a\u043e\u0432. \u041c\u043e\u0436\u043d\u043e \u0441 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430\u0448 \u0443\u043b\u044c\u0442\u0440\u0430\u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442!<\/p>\n<p>\u041d\u043e \u0432\u0440\u044f\u0434 \u043b\u0438 \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c 5 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430, \u0432\u0435\u0440\u043d\u043e?<\/p>\n<p><a class=\"anchor\" name=\"morecomplex\" id=\"morecomplex\"><\/a><\/p>\n<h2>\u0412\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435<\/h2>\n<p>\u0411\u0435\u0441\u043f\u043e\u0449\u0430\u0434\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0432\u0430, \u0447\u0442\u043e \u0432 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0431\u044b\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043e\u0439. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u0430\u043a\u043e\u043c-\u0442\u043e \u0438\u0437 \u0442\u0430\u043a\u0442\u043e\u0432, \u043f\u0440\u0438\u0447\u0451\u043c \u043d\u0435\u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e. \u0412\u043e\u0437\u044c\u043c\u0451\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b (<a href=\"https:\/\/www.dropbox.com\/s\/hiuxqo0agoqykzf\/2B.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>2B.mid<\/u><\/a>):<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fed\/f33\/8e3\/fedf338e317442f688c468cd084c3281.png\" width=\"499\" height=\"162\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fed\/f33\/8e3\/fedf338e317442f688c468cd084c3281.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u043e\u0442\u0430 \u0434\u043b\u0438\u043d\u043e\u0439 \u0432 2 \u0442\u0430\u043a\u0442\u0430, \u043d\u0438\u0447\u0435\u0433\u043e \u0443\u0436\u0430\u0441\u043d\u043e\u0433\u043e. \u041d\u043e \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432 DAW:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/02b\/bc9\/11a\/02bbc911aff163be42f4a4b973ffec6d.png\" width=\"499\" height=\"162\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/02b\/bc9\/11a\/02bbc911aff163be42f4a4b973ffec6d.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u043d\u043e\u0442\u0430 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u043c\u0435\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 2 \u0442\u0430\u043a\u0442\u0430? \u041e\u0442\u0432\u0435\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>Cubase: <code>2.2.3.0<\/code><\/p>\n<\/li>\n<li>\n<p>Studio One: <code>2.0.0.0<\/code><\/p>\n<\/li>\n<li>\n<p>Reaper: <code>2.2.75<\/code><\/p>\n<\/li>\n<\/ul>\n<p>Studio One \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c, \u043d\u043e\u0442\u0430 \u0432\u0441\u0451 \u0442\u0430\u043a \u0436\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 <em>2 \u0442\u0430\u043a\u0442\u0430<\/em>. Cubase \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <em>2 \u0442\u0430\u043a\u0442\u0430 2 \u0434\u043e\u043b\u0438 \u0438 3 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435<\/em>. Reaper \u0441 \u043d\u0438\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d \u0441 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (3 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435 \u044d\u0442\u043e <code>75<\/code> \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 \u0434\u043e\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043d\u0430\u044f).<\/p>\n<p>\u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u043f\u0435\u0440\u0435\u0432\u043e\u0434 MIDI-\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u044b \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0442\u0435\u043c\u0430. \u0420\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 DAW \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0438 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430. \u041d\u043e \u043a\u043e\u043c\u0443 \u0432\u0435\u0440\u0438\u0442\u044c?<\/p>\n<p>\u041f\u043e \u043c\u043d\u0435, \u043f\u0440\u0430\u0432\u044b Cubase \u0438 Reaper. \u042d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u2013 <em>1 \u0442\u0430\u043a\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <\/em><code>4\/4<\/code><em> + 1 \u0442\u0430\u043a\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <\/em><code>5\/16<\/code><em> + 2 \u0434\u043e\u043b\u0438 \u0442\u0430\u043a\u0442\u0430 \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c <\/em><code>3\/4<\/code><em> + 3 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435<\/em>:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/591\/afc\/b21\/591afcb2144811d188d5f073fb87b270.png\" width=\"500\" height=\"184\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/591\/afc\/b21\/591afcb2144811d188d5f073fb87b270.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0438\u043a\u0438 \u0432 \u0442\u0430\u043a\u0442\u044b \u0438 \u0434\u043e\u043b\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e Cubase. \u042d\u0442\u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0432 DryWetMIDI, \u0438 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0432\u0441\u043f\u043e\u043c\u043d\u044e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0432\u0430\u043c\u0438, \u043a\u0430\u043a \u044f \u043a \u043d\u0435\u043c\u0443 \u043f\u0440\u0438\u0448\u0451\u043b. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/melanchall.github.io\/drywetmidi\/articles\/high-level-managing\/Time-and-length.html#bars-beats-and-fraction\" rel=\"noopener noreferrer nofollow\"><u>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c<\/u><\/a> \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 Reaper\u2019\u0430, \u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043b\u043e\u0433\u0438\u043a\u0443, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u0447\u0442\u043e \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u043d\u0430 \u0442\u0430\u043a\u0430\u044f \u0436\u0435.<\/p>\n<p>\u0418 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043c\u044b \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043d\u0430\u0447\u043d\u0451\u043c \u043f\u0440\u043e\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432. \u041f\u0435\u0440\u0432\u044b\u0439 \u2013 <a href=\"https:\/\/www.dropbox.com\/s\/2nk05hjt6v6ubem\/Main.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>Main.mid<\/u><\/a>:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6f2\/fb0\/898\/6f2fb0898d1f3f53c0ccd39701b661f2.png\" width=\"499\" height=\"162\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6f2\/fb0\/898\/6f2fb0898d1f3f53c0ccd39701b661f2.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0437\u0434\u0435\u0441\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u0440\u044f\u043c\u043e \u0432 \u0444\u0430\u0439\u043b. \u0414\u043b\u0438\u043d\u0430 \u043d\u043e\u0442\u044b \u043f\u043e \u043c\u043d\u0435\u043d\u0438\u044e Cubase <code>3.1.1.60<\/code>. \u0418 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0420\u0430\u0437\u043c\u0435\u0442\u0438\u043c \u0442\u0430\u043a\u0442\u044b, \u0434\u043e\u043b\u0438 \u0438 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u043e\u0442\u0430:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/30f\/c2b\/0de\/30fc2b0def6f6cdb518b9e79e14180e5.png\" width=\"500\" height=\"184\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/30f\/c2b\/0de\/30fc2b0def6f6cdb518b9e79e14180e5.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c <em>2 \u043f\u043e\u043b\u043d\u044b\u0445 \u0442\u0430\u043a\u0442\u0430<\/em>: 1 \u0442\u0430\u043a\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <code>5\/16<\/code> \u0438 1 \u0442\u0430\u043a\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <code>3\/8<\/code>. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c 4 \u043f\u043e\u043b\u043d\u044b\u0445 \u0434\u043e\u043b\u0438: 2 \u0434\u043e\u043b\u0438 \u0432 \u0442\u0430\u043a\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <code>4\/4<\/code> \u0438 2 \u0434\u043e\u043b\u0438 \u0432 \u0442\u0430\u043a\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <code>3\/4<\/code>. \u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u0434\u043e\u043b\u0435\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0435\u0449\u0451 1 \u0442\u0430\u043a\u0442.<\/p>\n<p>\u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Cubase \u043f\u0440\u0438 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u043e\u043b\u0435\u0439 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0442\u0430. \u0410 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043e\u043d\u0430 \u0432 \u0442\u0430\u043a\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <code>4\/4<\/code>, \u0442.\u0435. \u0432 \u0442\u0430\u043a\u0442\u0435 \u0441 4 \u0434\u043e\u043b\u044f\u043c\u0438. \u0412\u043e\u0442 \u0438 \u0432\u044b\u0445\u043e\u0434\u0438\u0442, \u0447\u0442\u043e 4 \u0434\u043e\u043b\u0438 \u0434\u0430\u044e\u0442 \u043d\u0430\u043c \u0435\u0449\u0451 1 \u043f\u043e\u043b\u043d\u044b\u0439 \u0442\u0430\u043a\u0442.<\/p>\n<p>\u0418\u0442\u043e\u0433\u043e \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 <em>3 \u0442\u0430\u043a\u0442\u0430<\/em>. \u041d\u043e \u043e\u0442\u043a\u0443\u0434\u0430-\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u0437\u044f\u0442\u044c\u0441\u044f \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0434\u043e\u043b\u044f. 3 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435 \u0441\u043b\u0435\u0432\u0430 \u0438 2 \u0441\u043f\u0440\u0430\u0432\u0430 \u0434\u0430\u044e\u0442 \u043d\u0430\u043c \u0432 \u0441\u0443\u043c\u043c\u0435 5 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0445. \u0418 \u0441\u043d\u043e\u0432\u0430 Cubase \u0432\u044b\u0447\u043b\u0435\u043d\u044f\u0435\u0442 \u0438\u0437 \u043d\u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0443\u043f\u043d\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c, \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043d\u043e\u0442\u044b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u0437 5 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0445 4 \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u0434\u043e\u043b\u044e (<code>1\/4<\/code>). \u0423 \u043d\u0430\u0441 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0430\u044f \u0438 1 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f. \u0418 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c <em>3 \u0442\u0430\u043a\u0442\u0430 1 \u0434\u043e\u043b\u044e 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0443\u044e \u0438 60 \u0442\u0438\u043a\u043e\u0432<\/em>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043c DryWetMIDI \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u043d\u043e\u0442\u044b \u0432 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435:<\/p>\n<pre><code class=\"cs\">var tempoMap = midiFile.GetTempoMap(); var length = midiFile.GetNotes().First().LengthAs&lt;BarBeatTicksTimeSpan>(tempoMap); Console.WriteLine(length);<\/code><\/pre>\n<p>\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 <code>3.1.180<\/code>, \u0447\u0442\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 (<code>180 = 120 + 60 = 1\/16 + 60<\/code>).<\/p>\n<p>\u0412\u044b\u0432\u043e\u0434 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e Cubase \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0430\u043a\u0442\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0442\u0430, \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043d\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e. \u0427\u0442\u043e \u0436, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u2013 <a href=\"https:\/\/www.dropbox.com\/s\/a0wwk4ro4uafvic\/Main2.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>Main2.mid<\/u><\/a>:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dbc\/19b\/266\/dbc19b266d0c1941842b31f4c87e8949.png\" width=\"500\" height=\"184\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dbc\/19b\/266\/dbc19b266d0c1941842b31f4c87e8949.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u044f \u0441\u0440\u0430\u0437\u0443 \u0440\u0430\u0437\u043c\u0435\u0442\u0438\u043b \u0442\u0430\u043a\u0442\u044b \u0438 \u0434\u043e\u043b\u0438. \u0421\u043b\u0435\u0434\u0443\u044f \u043b\u043e\u0433\u0438\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b\u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437, \u043d\u0435\u0442\u0440\u0443\u0434\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u043d\u043e\u0442\u044b \u043f\u043e \u043c\u043d\u0435\u043d\u0438\u044e Cubase \u2013 <code>3.0.0.0<\/code>. \u0415\u0441\u0442\u044c 2 \u043f\u043e\u043b\u043d\u044b\u0445 \u0442\u0430\u043a\u0442\u0430, \u0430 5 \u0434\u043e\u043b\u0435\u0439 (3 \u0441\u043b\u0435\u0432\u0430 \u0438 2 \u0441\u043f\u0440\u0430\u0432\u0430) \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043d\u043e\u0442\u044b. DryWetMIDI \u0432\u044b\u0434\u0430\u0441\u0442 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043e\u0442\u0432\u0435\u0442.<\/p>\n<p>\u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u2013 <a href=\"https:\/\/www.dropbox.com\/s\/e6b2zmy61bca9tq\/Main3.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>Main3.mid<\/u><\/a>:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/875\/64a\/6a6\/87564a6a60d2d5725e35ea05e8a48cc0.png\" width=\"500\" height=\"184\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/875\/64a\/6a6\/87564a6a60d2d5725e35ea05e8a48cc0.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u043e\u0442\u044b <code>3.3.1.60<\/code>. \u0421 3 \u0442\u0430\u043a\u0442\u0430\u043c\u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. 3 \u0434\u043e\u043b\u0438 \u043d\u0435 \u0434\u043e\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0442 \u0434\u043e \u0446\u0435\u043b\u043e\u0433\u043e \u0442\u0430\u043a\u0442\u0430 (\u043d\u0443\u0436\u043d\u043e 5 \u0434\u043e\u043b\u0435\u0439). \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0430\u044f \u0438 1 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f (60 \u0442\u0438\u043a\u043e\u0432). \u041e\u0442\u0432\u0435\u0442 DryWetMIDI \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u2013 <code>3.3.180<\/code>.<\/p>\n<p>\u0418 \u0437\u0434\u0435\u0441\u044c \u043c\u044b, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430.<\/p>\n<p><a class=\"anchor\" name=\"code\" id=\"code\"><\/a><\/p>\n<h2>\u041f\u0438\u0448\u0435\u043c \u043a\u043e\u0434<\/h2>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c, \u0430 \u0430\u0432\u0442\u043e\u0440 \u043a\u043e\u0434\u0430, \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u0433\u043e, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0432\u0438\u043d\u0435\u043d \u0432 \u043a\u0440\u0438\u0432\u043e\u0440\u0443\u043a\u043e\u0441\u0442\u0438. \u0418 \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043b\u043e\u0433\u0438\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0430 \u043a\u043e\u0434 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c \u0443\u0436\u0430\u0441\u043d\u044b\u043c.<\/p>\n<p>\u041e\u043f\u0438\u0448\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0443 \u043c\u0435\u0442\u043e\u0434\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438 \u0438\u0437 \u0442\u0438\u043a\u043e\u0432 \u0432 \u0442\u0430\u043a\u0442\u044b \u0438 \u0434\u043e\u043b\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043f\u0430\u0440\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"cs\">private static (long Bars, long Beats, long Ticks) ConvertToBarsBeatsTicks(     long timeSpan,     long time,     TempoMap tempoMap) {     if (timeSpan == 0)         return (0, 0, 0);      var ticksPerQuarterNote = ((TicksPerQuarterNoteTimeDivision)tempoMap.TimeDivision).TicksPerQuarterNote;     var endTime = time + timeSpan; }<\/code><\/pre>\n<p>\u0433\u0434\u0435 <code>timeSpan<\/code> \u2013 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0432 \u0442\u0438\u043a\u0430\u0445; <code>time<\/code> \u2013 \u0432\u0440\u0435\u043c\u044f \u0432 \u0442\u0438\u043a\u0430\u0445 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u0430\u0439\u043b\u0430, \u0433\u0434\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f <code>timeSpan<\/code>; <code>tempoMap<\/code> \u2013 \u043e\u0431\u044a\u0435\u043a\u0442 \u0442\u0438\u043f\u0430 <a href=\"https:\/\/melanchall.github.io\/drywetmidi\/api\/Melanchall.DryWetMidi.Interaction.TempoMap.html\" rel=\"noopener noreferrer nofollow\"><u>TempoMap<\/u><\/a>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432 \u0441\u0435\u0431\u0435 \u0438 <code>ticksPerQuarterNote<\/code>, \u0438 \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u043f\u0443\u0449\u0435\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043a\u043e\u0434\u0430.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u043d\u044b\u0445 \u0442\u0430\u043a\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u043d\u0430 <code>timeSpan<\/code>:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bc0\/7b5\/466\/bc07b5466fc09f8da43eb2bdb6067da3.png\" width=\"500\" height=\"199\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bc0\/7b5\/466\/bc07b5466fc09f8da43eb2bdb6067da3.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412\u0437\u044f\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0435 <code>timeSpan<\/code>, \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0440\u0443\u0434\u0430:<\/p>\n<pre><code class=\"cs\">var timeSignatureChanges = tempoMap     .GetTimeSignatureChanges()     .Where(change => change.Time >= time &amp;&amp; change.Time &lt;= endTime)     .ToArray();<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438 \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432 <code>timeSignatureChanges<\/code>:<\/p>\n<pre><code class=\"cs\">var bars = 0L;  for (var i = 0; i &lt; timeSignatureChanges.Length - 1; i++) {     var timeSignature = timeSignatureChanges[i].Value;     var barLength = GetBarLength(timeSignature.Numerator, timeSignature.Denominator, ticksPerQuarterNote);          bars += (timeSignatureChanges[i + 1].Time - timeSignatureChanges[i].Time) \/ barLength; }<\/code><\/pre>\n<p>\u041d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e. \u0411\u0435\u0440\u0451\u043c \u043e\u0442\u0440\u0435\u0437\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u043c\u0438 \u043d\u0430 <code>timeSpan<\/code>, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0438 \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f <code>barLength<\/code> \u043c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u043d\u0430\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c <code>GetBarLength<\/code>. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e (\u043c\u0430\u0441\u0441\u0438\u0432 <code>timeSignatureChanges<\/code> \u043f\u0443\u0441\u0442), <code>bars<\/code> \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u044f\u0442\u044c\u0441\u044f <code>0<\/code>.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0447\u0430\u0441\u0442\u0438, \u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0437\u0430 \u043f\u0435\u0440\u0432\u043e\u0435 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7f7\/b4d\/3a0\/7f7b4d3a0bbaf37ff174f8162e1055f8.png\" width=\"500\" height=\"199\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7f7\/b4d\/3a0\/7f7b4d3a0bbaf37ff174f8162e1055f8.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043f\u0435\u0440\u0432\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u043e\u0435 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cs\">var firstTime = timeSignatureChanges.FirstOrDefault()?.Time ?? time; var lastTime = timeSignatureChanges.LastOrDefault()?.Time ?? time;  var firstTimeSignature = tempoMap.GetTimeSignatureAtTime((MidiTimeSpan)time); var lastTimeSignature = tempoMap.GetTimeSignatureAtTime((MidiTimeSpan)lastTime);<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 <code>?.Time ?? time<\/code>. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0431\u044b\u0442\u044c, \u043d\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0447\u0435\u0433\u043e-\u0442\u043e \u043f\u0440\u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <code>timeSignatureChanges<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0437\u044c\u043c\u0451\u043c <code>time<\/code> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u201c\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u201d \u0440\u0430\u0437\u043c\u0435\u0440\u0430.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043e\u0439 \u0438 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0435\u0439 <code>timeSpan<\/code> \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432, \u0434\u043e\u043b\u0435\u0439 \u0438 \u0442\u0438\u043a\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0430\u0448 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 <code>ConvertToBarsBeatsTicks<\/code> \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430:<\/p>\n<pre><code class=\"cs\">var (barsBefore, beatsBefore, ticksBefore) = ConvertToBarsBeatsTicks(     firstTime - time,     firstTimeSignature.Numerator,     firstTimeSignature.Denominator,     ticksPerQuarterNote);  var (barsAfter, beatsAfter, ticksAfter) = ConvertToBarsBeatsTicks(     endTime - lastTime,     lastTimeSignature.Numerator,     lastTimeSignature.Denominator,     ticksPerQuarterNote);<\/code><\/pre>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d69\/656\/4c8\/d696564c8e43a8a95999fd072f9c6235.png\" width=\"499\" height=\"203\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d69\/656\/4c8\/d696564c8e43a8a95999fd072f9c6235.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043a\u043e\u0434\u0443 \u0432\u044b\u0448\u0435, \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u044b \u0432 \u0432\u044b\u0437\u043e\u0432\u0435 <code>ConvertToBarsBeatsTicks<\/code> \u0434\u043b\u044f \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>barsBefore<\/code>, <code>beatsBefore<\/code> \u0438 <code>ticksBefore<\/code> \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u0440\u0430\u0432\u043d\u044b\u043c\u0438 <code>0<\/code>.<\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0442\u0430\u043a\u0442\u044b \u0441\u043b\u0435\u0432\u0430 \u0438 \u0441\u043f\u0440\u0430\u0432\u0430 \u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>bars<\/code>, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u043d\u0435\u0435:<\/p>\n<pre><code class=\"cs\">bars += barsBefore + barsAfter;<\/code><\/pre>\n<p>\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u043c\u0438\u0441\u044f \u0434\u043e\u043b\u044f\u043c\u0438 (<code>beatsBefore<\/code>, <code>beatsAfter<\/code>) \u0438 \u0442\u0438\u043a\u0430\u043c\u0438 (<code>ticksBefore<\/code>, <code>ticksAfter<\/code>):<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/611\/3c1\/58d\/6113c158db680e35f4178ba849841bf3.png\" width=\"500\" height=\"184\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/611\/3c1\/58d\/6113c158db680e35f4178ba849841bf3.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438 \u0440\u0430\u043d\u0435\u0435, \u0434\u043e\u043b\u0438 \u043f\u043e \u043a\u0440\u0430\u044f\u043c \u043c\u043e\u0433\u0443\u0442 \u0441\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0430\u043a\u0442. \u041e\u043f\u0438\u0448\u0435\u043c \u044d\u0442\u0443 \u043b\u043e\u0433\u0438\u043a\u0443 \u0432 \u043a\u043e\u0434\u0435:<\/p>\n<pre><code class=\"cs\">var beats = beatsBefore + beatsAfter; if (beats > 0 &amp;&amp; beatsBefore > 0 &amp;&amp; beats >= firstTimeSignature.Numerator) {     bars++;     beats -= firstTimeSignature.Numerator; }<\/code><\/pre>\n<p>\u0414\u0443\u043c\u0430\u044e, \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432 <code>if<\/code> \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435. \u0410 \u0432\u043e\u0442 \u043a \u0442\u0435\u043b\u0443, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e: \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e 1 \u0442\u0430\u043a\u0442 (<code>bars++<\/code>)? \u041f\u043e \u0438\u0434\u0435\u0435 \u0441\u0442\u043e\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0432\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0439:<\/p>\n<pre><code class=\"cs\">bars += Math.DivRem(beats, firstTimeSignature.Numerator, out beats);<\/code><\/pre>\n<p>\u0412\u043e\u0437\u044c\u043c\u0451\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b \u2013 <a href=\"https:\/\/www.dropbox.com\/s\/3fpn7jhwydn5ba2\/Main4.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>Main4.mid<\/u><\/a>:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/33e\/7ee\/456\/33e7ee456c3da8bc34d583c1b07477f3.png\" width=\"618\" height=\"162\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/33e\/7ee\/456\/33e7ee456c3da8bc34d583c1b07477f3.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c 3 \u0434\u043e\u043b\u0438 \u0441\u043b\u0435\u0432\u0430 \u0438 12 \u0441\u043f\u0440\u0430\u0432\u0430. \u0412 \u0441\u0443\u043c\u043c\u0435 15 \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u0430\u0442\u044c 3 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0430\u043a\u0442\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 <code>5\/8<\/code>. \u041e\u0434\u043d\u0430\u043a\u043e Cubase \u0441\u043a\u0430\u0436\u0435\u0442, \u0447\u0442\u043e \u0434\u043b\u0438\u043d\u0430 \u043d\u043e\u0442\u044b <code>3.10.0.0<\/code>. \u0422.\u0435. \u043e\u043d-\u0442\u0430\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0442\u0430\u043a\u0442, \u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e 2 \u0434\u043e\u043b\u0438 \u0441\u043f\u0440\u0430\u0432\u0430, \u043e\u0441\u0442\u0430\u0432\u0438\u0432 10 \u043d\u0430 \u0441\u0447\u0435\u0442\u0443 \u0442\u0430\u043a\u0442\u0430 \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c <code>13\/8<\/code>:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8bc\/392\/332\/8bc3923325ed5f0397b0fbd677c466c2.png\" width=\"618\" height=\"162\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8bc\/392\/332\/8bc3923325ed5f0397b0fbd677c466c2.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0448 \u043a\u043e\u0434 \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u0442\u0430\u043a \u0436\u0435, \u043f\u0440\u043e\u0431\u0443\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442 \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 <code>time<\/code>.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u0441 \u0442\u0438\u043a\u0430\u043c\u0438:<\/p>\n<pre><code class=\"cs\">var ticks = ticksBefore + ticksAfter; if (ticks > 0) {     var beatLength = GetBeatLength(firstTimeSignature.Denominator, ticksPerQuarterNote);     if (ticksBefore > 0 &amp;&amp; ticks >= beatLength)     {         beats++;         ticks -= beatLength;     } }<\/code><\/pre>\n<p>\u0421\u043d\u043e\u0432\u0430 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u0434\u043e\u043b\u044e \u0441 \u043f\u0440\u0430\u0432\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c, \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 <code>ticks<\/code>.<\/p>\n<p>\u0418 \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0438 \u043c\u0435\u0442\u043e\u0434 \u0433\u043e\u0442\u043e\u0432:<\/p>\n<pre><code class=\"cs\">return (bars, beats, ticks);<\/code><\/pre>\n<p>\u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u043a\u0443\u0447\u0443 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430:<\/p>\n<pre><code class=\"cs\">var fileNames = new[] {     \"Main\",     \"Main2\",     \"Main3\",     \"Main4\" };  foreach (var fileName in fileNames) {     var midiFile = MidiFile.Read($\"{fileName}.mid\");     var tempoMap = midiFile.GetTempoMap();     var note = midiFile.GetNotes().First();      var (bars, beats, ticks) = ConvertToBarsBeatsTicks(         note.Length,         note.Time,         tempoMap);      Console.WriteLine($\"{fileName}: {bars}.{beats}.{ticks}\"); }<\/code><\/pre>\n<p>\u0412\u044b\u0432\u043e\u0434 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430:<\/p>\n<pre><code>Main: 3.1.180 Main2: 3.0.0 Main3: 3.3.180 Main4: 3.10.0<\/code><\/pre>\n<p><a class=\"anchor\" name=\"end\" id=\"end\"><\/a><\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a\u0438\u043c\u0438 \u043b\u043e\u0432\u043a\u0438\u043c\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0440\u0443\u043a \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0438\u0437 MIDI-\u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0432 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u043c\u0443\u0437\u044b\u043a\u0430\u043d\u0442\u0430\u043c \u0442\u0430\u043a\u0442\u044b \u0438 \u0434\u043e\u043b\u0438. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0438 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u0438, \u043a\u0430\u043a \u0440\u0430\u0437\u043d\u044b\u0435 DAW \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b.<\/p>\n<p>\u0412 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b, \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u043c\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0438\u0442\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043a\u043e\u0434\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cs\">private static int GetBeatLength(int denominator, int ticksPerQuarterNote) =>     4 * ticksPerQuarterNote \/ denominator;  private static int GetBarLength(int numerator, int denominator, int ticksPerQuarterNote) =>     numerator * GetBeatLength(denominator, ticksPerQuarterNote);  private static (long Bars, long Beats, long Ticks) ConvertToBarsBeatsTicks(     long ticks,     int numerator,     int denominator,     int ticksPerQuarterNote) {     if (ticks == 0)         return (0, 0, 0);      var barLength = GetBarLength(numerator, denominator, ticksPerQuarterNote);     var bars = Math.DivRem(ticks, barLength, out ticks);      var beatLength = GetBeatLength(denominator, ticksPerQuarterNote);     var beats = Math.DivRem(ticks, beatLength, out ticks);      return (bars, beats, ticks); }  private static (long Bars, long Beats, long Ticks) ConvertToBarsBeatsTicks(     long timeSpan,     long time,     TempoMap tempoMap) {     if (timeSpan == 0)         return (0, 0, 0);      var ticksPerQuarterNote = ((TicksPerQuarterNoteTimeDivision)tempoMap.TimeDivision).TicksPerQuarterNote;     var endTime = time + timeSpan;      var timeSignatureChanges = tempoMap         .GetTimeSignatureChanges()         .Where(change => change.Time >= time &amp;&amp; change.Time &lt;= endTime)         .ToArray();      var bars = 0L;      for (var i = 0; i &lt; timeSignatureChanges.Length - 1; i++)     {         var timeSignature = timeSignatureChanges[i].Value;         var barLength = GetBarLength(timeSignature.Numerator, timeSignature.Denominator, ticksPerQuarterNote);                  bars += (timeSignatureChanges[i + 1].Time - timeSignatureChanges[i].Time) \/ barLength;     }      var firstTime = timeSignatureChanges.FirstOrDefault()?.Time ?? time;     var lastTime = timeSignatureChanges.LastOrDefault()?.Time ?? time;      var firstTimeSignature = tempoMap.GetTimeSignatureAtTime((MidiTimeSpan)time);     var lastTimeSignature = tempoMap.GetTimeSignatureAtTime((MidiTimeSpan)lastTime);      var (barsBefore, beatsBefore, ticksBefore) = ConvertToBarsBeatsTicks(         firstTime - time,         firstTimeSignature.Numerator,         firstTimeSignature.Denominator,         ticksPerQuarterNote);      var (barsAfter, beatsAfter, ticksAfter) = ConvertToBarsBeatsTicks(         endTime - lastTime,         lastTimeSignature.Numerator,         lastTimeSignature.Denominator,         ticksPerQuarterNote);      bars += barsBefore + barsAfter;      var beats = beatsBefore + beatsAfter;     if (beats > 0 &amp;&amp; beatsBefore > 0 &amp;&amp; beats >= firstTimeSignature.Numerator)     {         bars++;         beats -= firstTimeSignature.Numerator;     }      var ticks = ticksBefore + ticksAfter;     if (ticks > 0)     {         var beatLength = GetBeatLength(firstTimeSignature.Denominator, ticksPerQuarterNote);         if (ticksBefore > 0 &amp;&amp; ticks >= beatLength)         {             beats++;             ticks -= beatLength;         }     }      return (bars, beats, ticks); }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \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\/716300\/\"> https:\/\/habr.com\/ru\/post\/716300\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435: \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0448\u0435\u0434\u0435\u0432\u0440 \u0432 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 DAW, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 MIDI-\u0444\u0430\u0439\u043b, \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u043e\u0442\u044b \u0432 \u043d\u0451\u043c \u0438\u043c\u0435\u044e\u0442 \u0432\u043e\u0441\u044c\u043c\u0443\u044e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u044f \u043d\u0430 \u044d\u0442\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u0432\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0435 \u0442\u0432\u043e\u0440\u0438\u0442\u044c. \u041d\u043e, \u043f\u043e\u0441\u0442\u043e\u0439\u0442\u0435. \u0410 \u043a\u0430\u043a DAW, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u043e\u0442\u044b \u0432 \u0444\u0430\u0439\u043b\u0435 \u0432\u043e\u0441\u044c\u043c\u044b\u0435?<\/p>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0432 MIDI-\u0444\u0430\u0439\u043b\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u2013 \u0442\u0430\u043a\u0442\u0430\u043c\u0438 \u0438 \u0434\u043e\u043b\u044f\u043c\u0438. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043d\u0430\u0448\u0438\u0445 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0430 C#.<\/p>\n<hr\/>\n<p>\u041f\u043b\u0430\u043d \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c: \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Digital_audio_workstation\" rel=\"noopener noreferrer nofollow\"><u>DAW<\/u><\/a>, \u0430 \u0437\u0430\u0442\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434, \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0443 <a href=\"#end\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a>.<\/p>\n<h2>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h2>\n<ol>\n<li>\n<p><a href=\"#theory\" rel=\"noopener noreferrer nofollow\">\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0442\u0435\u043e\u0440\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#whatwithbb\" rel=\"noopener noreferrer nofollow\">\u0422\u0430\u043a \u0447\u0442\u043e \u0441 \u0442\u0430\u043a\u0442\u0430\u043c\u0438 \u0438 \u0434\u043e\u043b\u044f\u043c\u0438?<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#morecomplex\" rel=\"noopener noreferrer nofollow\">\u0412\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#code\" rel=\"noopener noreferrer nofollow\">\u041f\u0438\u0448\u0435\u043c \u043a\u043e\u0434<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#end\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<\/ol>\n<p><a class=\"anchor\" name=\"theory\" id=\"theory\"><\/a><\/p>\n<h2>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0442\u0435\u043e\u0440\u0438\u044f<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0435 MIDI-\u0444\u0430\u0439\u043b\u043e\u0432. \u042f \u043a\u0440\u0430\u0442\u043a\u043e \u0438\u0437\u043b\u043e\u0436\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0430\u043b\u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435. \u0422\u0435 \u0436\u0435 \u0438\u0437 \u0432\u0430\u0441, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0442\u0430\u0442\u044c \u0432\u0435\u0447\u0435\u0440 \u0437\u0430 \u0447\u0442\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439, \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a <a href=\"https:\/\/midi.org\/specifications\/midi1-specifications\/m1-v4-2-1-midi-1-0-detailed-specification-96-1-4\" rel=\"noopener noreferrer nofollow\"><u>\u043f\u043e\u043b\u043d\u043e\u043c\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443<\/u><\/a> \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/midi.org\/\" rel=\"noopener noreferrer nofollow\"><u>midi.org<\/u><\/a> (\u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f).<\/p>\n<p>MIDI-\u0444\u0430\u0439\u043b \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0431\u043b\u043e\u043a\u043e\u0432, \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432 \u0445\u0440\u043e\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c MIDI-\u0441\u043e\u0431\u044b\u0442\u0438\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0437\u044f\u0442\u0438\u0435 \u043d\u043e\u0442\u044b \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430). \u041a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0441\u043d\u0430\u0431\u0436\u0435\u043d\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u2013 <strong>delta-time<\/strong>. \u0414\u0435\u043b\u044c\u0442\u044b \u0438\u0437\u043c\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0432 <strong>\u0442\u0438\u043a\u0430\u0445<\/strong> (ticks) \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0435\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u044c\u0442\u0430 20 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043e\u0442\u0441\u0442\u043e\u0438\u0442 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 20. \u041d\u043e \u043d\u0430 20 \u0447\u0435\u0433\u043e? \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0447\u0438\u0441\u0435\u043b \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 MIDI-\u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f division (\u0442\u0438\u043f \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438). \u042d\u0442\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435, \u0438 \u0432 99.(9)% \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0432 \u043d\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e <strong>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0438\u043a\u043e\u0432 \u043d\u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043d\u0443\u044e \u043d\u043e\u0442\u0443<\/strong> (\u043f\u043e \u043f\u0440\u0430\u0432\u0434\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0432\u0442\u043e\u0440\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u2013 MIDI time code \/ SMPTE \u2013 \u043c\u043d\u0435 \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f). \u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435 <code>ticksPerQuarterNote<\/code>.<\/p>\n<p><a class=\"anchor\" name=\"whatwithbb\" id=\"whatwithbb\"><\/a><\/p>\n<h2>\u0422\u0430\u043a \u0447\u0442\u043e \u0441 \u0442\u0430\u043a\u0442\u0430\u043c\u0438 \u0438 \u0434\u043e\u043b\u044f\u043c\u0438?<\/h2>\n<p>\u0418\u043c\u0435\u044f \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u0442\u0435\u043e\u0440\u0438\u044e, \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0434\u043b\u0438\u043d\u044b \u0438\u0437 \u0442\u0438\u043a\u043e\u0432 \u0432 \u0442\u0430\u043a\u0442\u044b (bars) \u0438 \u0434\u043e\u043b\u0438 (beats) \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0434\u0435\u043b\u043e\u043c \u043d\u0435\u0445\u0438\u0442\u0440\u044b\u043c. \u0420\u0430\u0437\u043c\u0435\u0440 (time signature) \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u0435\u043c <code>numerator<\/code> \u0438 \u0437\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u0435\u043c <code>denominator<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0432\u0430\u043b\u044c\u0441\u043e\u0432\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0435 <code>3\/4<\/code> \u0438\u043c\u0435\u0435\u043c <code>numerator = 3<\/code>, \u0430 <code>denominator = 4<\/code>. \u0414\u043b\u0438\u043d\u0430 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0434\u043e\u043b\u0438 <code>1\/denominator<\/code> \u0432 \u0442\u0438\u043a\u0430\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438:<\/p>\n<pre><code>1\/4 = ticksPerQuarterNote 1\/denominator = beatLength<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f <code>beatLength<\/code> \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c:<\/p>\n<pre><code class=\"cs\">private static int GetBeatLength(int denominator, int ticksPerQuarterNote) =>     4 * ticksPerQuarterNote \/ denominator;<\/code><\/pre>\n<p>\u0423\u043c\u043d\u043e\u0436\u0438\u0432 \u043d\u0430 <code>numerator<\/code>, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u043b\u0438\u043d\u0443 \u0442\u0430\u043a\u0442\u0430:<\/p>\n<pre><code class=\"cs\">private static int GetBarLength(int numerator, int denominator, int ticksPerQuarterNote) =>     numerator * GetBeatLength(denominator, ticksPerQuarterNote);<\/code><\/pre>\n<p>\u0417\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u044b \u0442\u0430\u043a\u0442\u0430 \u0438 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0434\u043e\u043b\u0438, \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0438\u043a\u043e\u0432 <code>ticks<\/code> \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0438 \u0434\u043e\u043b\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u043c \u0436\u0430\u0434\u043d\u044b\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c:<\/p>\n<ol>\n<li>\n<p>\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0432 <code>ticks<\/code> \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u0442\u0430\u043a\u0442\u0430 (<code>barLength<\/code>), \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0435\u043b\u044b\u0445 \u0442\u0430\u043a\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0432\u0437\u044f\u0432 \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0432 \u0435\u0433\u043e \u043d\u0430 <code>beatLength<\/code>, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0435\u043b\u044b\u0445 \u0434\u043e\u043b\u0435\u0439;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u0435\u043d \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u043c\u0441\u044f \u0442\u0438\u043a\u0430\u043c.<\/p>\n<\/li>\n<\/ol>\n<p>\u041d\u0430 C# \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">private static (long Bars, long Beats, long Ticks) ConvertToBarsBeatsTicks(     long ticks,     int numerator,     int denominator,     int ticksPerQuarterNote) {     if (ticks == 0)         return (0, 0, 0);      var barLength = GetBarLength(numerator, denominator, ticksPerQuarterNote);     var bars = Math.DivRem(ticks, barLength, out ticks);      var beatLength = GetBeatLength(denominator, ticksPerQuarterNote);     var beats = Math.DivRem(ticks, beatLength, out ticks);      return (bars, beats, ticks); }<\/code><\/pre>\n<p>\u041d\u043e \u043f\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043c \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430\u0448\u0443 \u043b\u043e\u0433\u0438\u043a\u0443, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0437\u043d\u044b\u0435 DAW \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439. \u042f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0444\u0430\u0439\u043b <a href=\"https:\/\/www.dropbox.com\/s\/plg2huukqez14rj\/1B_1b_1s.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>1B_1b_1s.mid<\/u><\/a> \u0441 \u043e\u0434\u043d\u043e\u0439 \u043d\u043e\u0442\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0438:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u0433\u043e\u043b\u0443\u0431\u044b\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438 \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u044b \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0430\u043a\u0442\u043e\u0432, \u0441\u0435\u0440\u044b\u043c\u0438 \u0434\u043b\u0438\u043d\u043d\u044b\u043c\u0438 \u2013 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043e\u043b\u0435\u0439, \u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c\u0438 \u0441\u0435\u0440\u044b\u043c\u0438 \u2013 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 <code>4\/4<\/code>, \u0430 \u043d\u043e\u0442\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 <em>1 \u0442\u0430\u043a\u0442 1 \u0434\u043e\u043b\u044e \u0438 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0443\u044e<\/em>.<\/p>\n<p>\u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b \u0432 \u0442\u0440\u0451\u0445 DAW \u043d\u0435 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439: <a href=\"https:\/\/www.steinberg.net\/cubase\" rel=\"noopener noreferrer nofollow\"><u>Steinberg Cubase<\/u><\/a>, <a href=\"https:\/\/www.presonus.com\/products\/Studio-One\" rel=\"noopener noreferrer nofollow\"><u>PreSonus Studio One<\/u><\/a> \u0438 <a href=\"https:\/\/www.reaper.fm\" rel=\"noopener noreferrer nofollow\"><u>Cockos Reaper<\/u><\/a>. \u0415\u0441\u043b\u0438 \u0443 \u043a\u043e\u0433\u043e-\u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0437\u0434\u0435\u0441\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445, \u044f \u0431\u044b\u043b \u0431\u044b \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u0435\u043d.<\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0444\u0430\u0439\u043b \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 <em>\u201d\u041a\u0430\u043a\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u043d\u043e\u0442\u044b \u0432 \u0442\u0430\u043a\u0442\u0430\u0445 \u0438 \u0434\u043e\u043b\u044f\u0445?\u201d<\/em>:<\/p>\n<ul>\n<li>\n<p>Cubase: <code>1.1.1.0<\/code><\/p>\n<\/li>\n<li>\n<p>Studio One: <code>1.1.1.0<\/code><\/p>\n<\/li>\n<li>\n<p>Reaper: <code>1.1.25<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435 \u0438\u0441\u043f\u044b\u0442\u0443\u0435\u043c\u044b\u0435 \u0441\u043e\u0448\u043b\u0438\u0441\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043c\u043d\u0435\u043d\u0438\u0438. \u0421\u0440\u0430\u0437\u0443 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 DAW:<\/p>\n<ul>\n<li>\n<p>Cubase: <code>&lt;\u0442\u0430\u043a\u0442\u044b>.&lt;\u0434\u043e\u043b\u0438>.&lt;\u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435>.&lt;\u0442\u0438\u043a\u0438><\/code><\/p>\n<\/li>\n<li>\n<p>Studio One: <code>&lt;\u0442\u0430\u043a\u0442\u044b>.&lt;\u0434\u043e\u043b\u0438>.&lt;\u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435>.&lt;\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0439><\/code><\/p>\n<\/li>\n<li>\n<p>Reaper: <code>&lt;\u0442\u0430\u043a\u0442\u044b>.&lt;\u0434\u043e\u043b\u0438>.&lt;\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u0434\u043e\u043b\u0438><\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u043e\u0442\u0432\u0435\u0442 Reaper \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0430\u044f \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 25 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 \u0434\u043e\u043b\u0438 (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043d\u0430\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 <code>4\/4<\/code>). \u0417\u0430\u0431\u0430\u0432\u043d\u044b\u0439 \u0444\u0430\u043a\u0442: \u0442\u043e\u043b\u044c\u043a\u043e Steinberg \u0432 \u0441\u0432\u043e\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u044f\u0432\u043d\u043e <a href=\"https:\/\/steinberg.help\/cubase_ai_le_elements\/v9\/en\/cubase_nuendo\/topics\/project_window\/project_window_ruler_display_formats_r.html\" rel=\"noopener noreferrer nofollow\"><u>\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442<\/u><\/a> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u0432 \u0441\u0432\u043e\u0451\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a \u043f\u0440\u043e\u0447\u0438\u043c DAW \u044f \u043d\u0435 \u0441\u0443\u043c\u0435\u043b \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0447\u0442\u043e \u0433\u0440\u0443\u0441\u0442\u043d\u043e.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0442\u0435\u043c\u0443 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0442\u043e\u0432 \u0438 \u0434\u043e\u043b\u0435\u0439 \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u0431\u0430\u0439\u043d\u0430\u0445, \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 Studio One \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u043e\u0442 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0439 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0432 \u0442\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0442\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u043e\u0442\u0430 \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 <em>1 \u0442\u0430\u043a\u0442 1 \u0434\u043e\u043b\u044e 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0443\u044e \u0438 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0439<\/em>. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0437\u0434\u0435\u0441\u044c: <a href=\"https:\/\/www.dropbox.com\/s\/yvvyqj97kn8idqu\/1B_1b_1s_half.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>1B_1b_1s_half.mid<\/u><\/a>. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435:<\/p>\n<ul>\n<li>\n<p>Cubase: <code>1.1.1.60<\/code><\/p>\n<\/li>\n<li>\n<p>Studio One: <code>1.1.1.50<\/code><\/p>\n<\/li>\n<li>\n<p>Reaper: <code>1.1.38<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 <code>ticksPerQuarterNote = 480<\/code>. \u0422.\u0435. \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0430\u044f \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043c\u0435\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 <code>120<\/code>, \u0430 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0439 (\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f) \u2013 <code>60<\/code>. Cubase \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <code>60<\/code>, \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0438\u0431\u043e \u0442\u0443\u0442 \u0442\u0438\u043a\u0438. Studio One \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <code>50<\/code> \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0439. Reaper \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <code>38<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e <code>1\/16 + 1\/32<\/code> \u0432 \u0442\u0438\u043a\u0430\u0445 \u044d\u0442\u043e <code>120 + 60 = 180<\/code>, \u0447\u0442\u043e \u0435\u0441\u0442\u044c <code>38<\/code> \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 \u0434\u043e\u043b\u0438 (<code>180 \/ 480 \u2248 0.38<\/code>).<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430\u0448 \u043c\u0435\u0442\u043e\u0434 <code>ConvertToBarsBeatsTicks<\/code>. \u0421\u043f\u0435\u0440\u0432\u0430 \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0444\u0430\u0439\u043b <a href=\"https:\/\/www.dropbox.com\/s\/plg2huukqez14rj\/1B_1b_1s.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>1B_1b_1s.mid<\/u><\/a>. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u043c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"https:\/\/github.com\/melanchall\/drywetmidi\" rel=\"noopener noreferrer nofollow\"><u>DryWetMIDI<\/u><\/a> \u0438\u0437\u0432\u043b\u0435\u0447\u0451\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0438\u043a\u043e\u0432 \u043d\u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043d\u0443\u044e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0434\u043b\u0438\u043d\u0443 \u043d\u043e\u0442\u044b \u0432 \u0444\u0430\u0439\u043b\u0435:<\/p>\n<pre><code class=\"cs\">var midiFile = MidiFile.Read(\"1B_1b_1s.mid\"); var tempoMap = midiFile.GetTempoMap();  var timeSignature = tempoMap.GetTimeSignatureAtTime((MidiTimeSpan)0); var ticksPerQuarterNote = ((TicksPerQuarterNoteTimeDivision)tempoMap.TimeDivision).TicksPerQuarterNote; var noteLength = midiFile.GetNotes().First().Length;<\/code><\/pre>\n<p>\u0412\u044b\u0437\u0432\u0430\u0432 \u043c\u0435\u0442\u043e\u0434 <code>ConvertToBarsBeatsTicks<\/code><\/p>\n<pre><code class=\"cs\">var (bars, beats, ticks) = ConvertToBarsBeatsTicks(     noteLength,     timeSignature.Numerator,     timeSignature.Denominator,     ticksPerQuarterNote); Console.WriteLine($\"{bars}.{beats}.{ticks}\");<\/code><\/pre>\n<p>\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438: <code>1.1.120<\/code>. \u041f\u043e\u043a\u0430 \u0432\u0441\u0451 \u0442\u0430\u043a, \u043a\u0430\u043a \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c: <em>1 \u0442\u0430\u043a\u0442 1 \u0434\u043e\u043b\u044f \u0438 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0430\u044f<\/em> \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0432\u043d\u0430 <code>120<\/code> \u0442\u0438\u043a\u0430\u043c \u043f\u0440\u0438 <code>ticksPerQuarterNote = 480<\/code>).<\/p>\n<p>\u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442: <code>1.1.180<\/code>. \u0422.\u0435. <em>1 \u0442\u0430\u043a\u0442 1 \u0434\u043e\u043b\u044f 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0430\u044f \u0438 1 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f<\/em> \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0432 \u0441\u0443\u043c\u043c\u0435 \u0434\u0430\u044e\u0442 <code>180<\/code> \u0442\u0438\u043a\u043e\u0432. \u041c\u043e\u0436\u043d\u043e \u0441 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430\u0448 \u0443\u043b\u044c\u0442\u0440\u0430\u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442!<\/p>\n<p>\u041d\u043e \u0432\u0440\u044f\u0434 \u043b\u0438 \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c 5 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430, \u0432\u0435\u0440\u043d\u043e?<\/p>\n<p><a class=\"anchor\" name=\"morecomplex\" id=\"morecomplex\"><\/a><\/p>\n<h2>\u0412\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435<\/h2>\n<p>\u0411\u0435\u0441\u043f\u043e\u0449\u0430\u0434\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0432\u0430, \u0447\u0442\u043e \u0432 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0431\u044b\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043e\u0439. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u0430\u043a\u043e\u043c-\u0442\u043e \u0438\u0437 \u0442\u0430\u043a\u0442\u043e\u0432, \u043f\u0440\u0438\u0447\u0451\u043c \u043d\u0435\u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e. \u0412\u043e\u0437\u044c\u043c\u0451\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b (<a href=\"https:\/\/www.dropbox.com\/s\/hiuxqo0agoqykzf\/2B.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>2B.mid<\/u><\/a>):<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u043e\u0442\u0430 \u0434\u043b\u0438\u043d\u043e\u0439 \u0432 2 \u0442\u0430\u043a\u0442\u0430, \u043d\u0438\u0447\u0435\u0433\u043e \u0443\u0436\u0430\u0441\u043d\u043e\u0433\u043e. \u041d\u043e \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432 DAW:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u043d\u043e\u0442\u0430 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u043c\u0435\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 2 \u0442\u0430\u043a\u0442\u0430? \u041e\u0442\u0432\u0435\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>Cubase: <code>2.2.3.0<\/code><\/p>\n<\/li>\n<li>\n<p>Studio One: <code>2.0.0.0<\/code><\/p>\n<\/li>\n<li>\n<p>Reaper: <code>2.2.75<\/code><\/p>\n<\/li>\n<\/ul>\n<p>Studio One \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c, \u043d\u043e\u0442\u0430 \u0432\u0441\u0451 \u0442\u0430\u043a \u0436\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 <em>2 \u0442\u0430\u043a\u0442\u0430<\/em>. Cubase \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <em>2 \u0442\u0430\u043a\u0442\u0430 2 \u0434\u043e\u043b\u0438 \u0438 3 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435<\/em>. Reaper \u0441 \u043d\u0438\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d \u0441 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (3 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435 \u044d\u0442\u043e <code>75<\/code> \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 \u0434\u043e\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043d\u0430\u044f).<\/p>\n<p>\u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u043f\u0435\u0440\u0435\u0432\u043e\u0434 MIDI-\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u044b \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0442\u0435\u043c\u0430. \u0420\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 DAW \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0438 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430. \u041d\u043e \u043a\u043e\u043c\u0443 \u0432\u0435\u0440\u0438\u0442\u044c?<\/p>\n<p>\u041f\u043e \u043c\u043d\u0435, \u043f\u0440\u0430\u0432\u044b Cubase \u0438 Reaper. \u042d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u2013 <em>1 \u0442\u0430\u043a\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <\/em><code>4\/4<\/code><em> + 1 \u0442\u0430\u043a\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <\/em><code>5\/16<\/code><em> + 2 \u0434\u043e\u043b\u0438 \u0442\u0430\u043a\u0442\u0430 \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c <\/em><code>3\/4<\/code><em> + 3 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435<\/em>:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0418 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0438\u043a\u0438 \u0432 \u0442\u0430\u043a\u0442\u044b \u0438 \u0434\u043e\u043b\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e Cubase. \u042d\u0442\u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0432 DryWetMIDI, \u0438 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0432\u0441\u043f\u043e\u043c\u043d\u044e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0432\u0430\u043c\u0438, \u043a\u0430\u043a \u044f \u043a \u043d\u0435\u043c\u0443 \u043f\u0440\u0438\u0448\u0451\u043b. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/melanchall.github.io\/drywetmidi\/articles\/high-level-managing\/Time-and-length.html#bars-beats-and-fraction\" rel=\"noopener noreferrer nofollow\"><u>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c<\/u><\/a> \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 Reaper\u2019\u0430, \u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043b\u043e\u0433\u0438\u043a\u0443, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u0447\u0442\u043e \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u043d\u0430 \u0442\u0430\u043a\u0430\u044f \u0436\u0435.<\/p>\n<p>\u0418 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043c\u044b \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043d\u0430\u0447\u043d\u0451\u043c \u043f\u0440\u043e\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432. \u041f\u0435\u0440\u0432\u044b\u0439 \u2013 <a href=\"https:\/\/www.dropbox.com\/s\/2nk05hjt6v6ubem\/Main.mid?dl=1\" rel=\"noopener noreferrer nofollow\"><u>Main.mid<\/u><\/a>:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0437\u0434\u0435\u0441\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u0440\u044f\u043c\u043e \u0432 \u0444\u0430\u0439\u043b. \u0414\u043b\u0438\u043d\u0430 \u043d\u043e\u0442\u044b \u043f\u043e \u043c\u043d\u0435\u043d\u0438\u044e Cubase <code>3.1.1.60<\/code>. \u0418 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0420\u0430\u0437\u043c\u0435\u0442\u0438\u043c \u0442\u0430\u043a\u0442\u044b, \u0434\u043e\u043b\u0438 \u0438 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u043e\u0442\u0430:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c <em>2 \u043f\u043e\u043b\u043d\u044b\u0445 \u0442\u0430\u043a\u0442\u0430<\/em>: 1 \u0442\u0430\u043a\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <code>5\/16<\/code> \u0438 1 \u0442\u0430\u043a\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <code>3\/8<\/code>. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c 4 \u043f\u043e\u043b\u043d\u044b\u0445 \u0434\u043e\u043b\u0438: 2 \u0434\u043e\u043b\u0438 \u0432 \u0442\u0430\u043a\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <code>4\/4<\/code> \u0438 2 \u0434\u043e\u043b\u0438 \u0432 \u0442\u0430\u043a\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <code>3\/4<\/code>. \u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u0434\u043e\u043b\u0435\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0435\u0449\u0451 1 \u0442\u0430\u043a\u0442.<\/p>\n<p>\u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Cubase \u043f\u0440\u0438 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u043e\u043b\u0435\u0439 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0442\u0430. \u0410 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043e\u043d\u0430 \u0432 \u0442\u0430\u043a\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <code>4\/4<\/code>, \u0442.\u0435. \u0432 \u0442\u0430\u043a\u0442\u0435 \u0441 4 \u0434\u043e\u043b\u044f\u043c\u0438. \u0412\u043e\u0442 \u0438 \u0432\u044b\u0445\u043e\u0434\u0438\u0442, \u0447\u0442\u043e 4 \u0434\u043e\u043b\u0438 \u0434\u0430\u044e\u0442 \u043d\u0430\u043c \u0435\u0449\u0451 1 \u043f\u043e\u043b\u043d\u044b\u0439 \u0442\u0430\u043a\u0442.<\/p>\n<p>\u0418\u0442\u043e\u0433\u043e \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 <em>3 \u0442\u0430\u043a\u0442\u0430<\/em>. \u041d\u043e \u043e\u0442\u043a\u0443\u0434\u0430-\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u0437\u044f\u0442\u044c\u0441\u044f \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0434\u043e\u043b\u044f. 3 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0435 \u0441\u043b\u0435\u0432\u0430 \u0438 2 \u0441\u043f\u0440\u0430\u0432\u0430 \u0434\u0430\u044e\u0442 \u043d\u0430\u043c \u0432 \u0441\u0443\u043c\u043c\u0435 5 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0445. \u0418 \u0441\u043d\u043e\u0432\u0430 Cubase \u0432\u044b\u0447\u043b\u0435\u043d\u044f\u0435\u0442 \u0438\u0437 \u043d\u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0443\u043f\u043d\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c, \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043d\u043e\u0442\u044b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u0437 5 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0445 4 \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u0434\u043e\u043b\u044e (<code>1\/4<\/code>). \u0423 \u043d\u0430\u0441 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0430\u044f \u0438 1 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f. \u0418 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c <em>3 \u0442\u0430\u043a\u0442\u0430 1 \u0434\u043e\u043b\u044e 1 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0443\u044e \u0438 60 \u0442\u0438\u043a\u043e\u0432<\/em>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043c DryWetMIDI \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u043d\u043e\u0442\u044b \u0432 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435:<\/p>\n<pre><code class=\"cs\">var tempoMap = midiFile.GetTempoMap(); var length = midiFile.GetNotes().First().LengthAs&lt;BarBeatTicksTimeSpan>(tempoMap<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-345313","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/345313","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=345313"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/345313\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=345313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=345313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=345313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}