{"id":3942,"date":"2023-12-10T16:08:06","date_gmt":"2023-12-10T07:08:06","guid":{"rendered":"https:\/\/www.utsbox.com\/?p=3942"},"modified":"2023-12-10T16:37:01","modified_gmt":"2023-12-10T07:37:01","slug":"%e3%82%b9%e3%82%bf%e3%83%b3%e3%83%80%e3%83%bc%e3%83%89midi%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e8%aa%ad%e8%be%bc","status":"publish","type":"post","link":"https:\/\/www.utsbox.com\/?p=3942","title":{"rendered":"\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u8fbc"},"content":{"rendered":"<h1>\u306f\u3058\u3081\u306b<\/h1>\n<p>\u3053\u3053\u3067\u306f\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb(.smf)\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u8aac\u660e\u3068\u7c21\u5358\u306a\u8aad\u8fbc\u30b5\u30f3\u30d7\u30eb\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u307e\u3059\u3002<br \/>\n\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066\u306f\u3001\u300csmf\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u300d\u306a\u3069\u3067\u691c\u7d22\u3059\u308b\u3068\u3059\u3067\u306b\u4ed6\u306e\u30b5\u30a4\u30c8\u3067\u3082\u89e3\u8aac\u3055\u308c\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u7c21\u5358\u306b\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30b5\u30a4\u30c8\u3067\u306f\u300c<a href=\"https:\/\/sites.google.com\/site\/yyagisite\/material\/smfspec\" target=\"_blank\" rel=\"noopener\">\u308f\u3044\u3084\u304e\u306eweb\u30da\u30fc\u30b8<\/a>\u300d\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b\u5185\u5bb9\u3092\u3082\u3068\u306b\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h1 id=\"\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\">\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<\/h1>\n<p>\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306f<strong>RIFF\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u306b\u4f3c\u305f\u5f62\u5f0f\u3092<\/strong>\u3068\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>RIFF\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u306f\u3001\u305d\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u5fc5\u8981\u306a\u30c7\u30fc\u30bf\u3092\u30c1\u30e3\u30f3\u30af\u3068\u547c\u3070\u308c\u308b\u30d6\u30ed\u30c3\u30af\u306b\u5206\u3051\u3066\u4fdd\u5b58\u3057\u3001\u30c1\u30e3\u30f3\u30af\u306bFourCC\u3068\u547c\u3070\u308c\u308b4Byte\u306e\u8b58\u5225\u5b50(ID)\u3092\u4ed8\u3051\u3066\u7ba1\u7406\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u3067\u3059\u3002<br \/>\nRIFF\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066\u306f\u4e0b\u8a18\u306b\u7c21\u5358\u306b\u8a18\u8f09\u3057\u3066\u304a\u308a\u307e\u3059\u3002\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306f\u4e0a\u8a18\u306eRIFF\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u306b\u4f3c\u305f\u5f62\u5f0f\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u305f\u3081\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3054\u53c2\u7167\u304f\u3060\u3055\u3044\u3002<\/p>\n<ul>\n<li><a href=\"https:\/\/www.utsbox.com\/?p=2181\">RIFF\u30d5\u30a1\u30a4\u30eb\u306e\u6982\u8981\u3068\u8aad\u307f\u8fbc\u307f<\/a><\/li>\n<\/ul>\n<p>\u4eca\u56de\u4f5c\u6210\u3059\u308b\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u95a2\u6570\u306e\u30b5\u30f3\u30d7\u30eb\u306f\u3053\u3061\u3089\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002 \u2192\u3000<a href=\"https:\/\/www.utsbox.com\/wp-content\/uploads\/2023\/12\/riffsample_20231210.zip\">riffsample_20231210<\/a><br \/>\n\u203b\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u4ee5\u5916\u306b\u3082wav\u30d5\u30a1\u30a4\u30eb\u3084Soundfont\u30d5\u30a1\u30a4\u30eb\u8aad\u8fbc\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3082\u540c\u68b1\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<h1 id=\"\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u30c1\u30e3\u30f3\u30af\">\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u30c1\u30e3\u30f3\u30af<\/h1>\n<p>\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u30c1\u30e3\u30f3\u30af\u3068\u968e\u5c64\u69cb\u9020\u306f\u4e0b\u8a18\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u5404\u30c1\u30e3\u30f3\u30af\u306e\u8a73\u7d30\u306f\u5f8c\u8ff0\u3057\u307e\u3059\u3002<br \/>\n2\u3064\u306e\u5fc5\u9808\u30c1\u30e3\u30f3\u30af\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u306a\u304a\u3001<strong>\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306fRIFF\u30c1\u30e3\u30f3\u30af\u304b\u3089\u59cb\u307e\u3063\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u53b3\u5bc6\u306b\u306fRIFF\u5f62\u5f0f\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/strong><\/p>\n<p><!--more--><\/p>\n<table>\n<tr>\n<th>\u30c1\u30e3\u30f3\u30af\u540d<\/th>\n<th>\u30bf\u30a4\u30d7<\/th>\n<th>\u5fc5\u9808<br \/>\/\u4efb\u610f<\/th>\n<th>\u30c1\u30e3\u30f3\u30af\u8b58\u5225\u5b50<br \/>(\u30d5\u30a1\u30a4\u30eb\/LIST\u8b58\u5225\u5b50)<\/th>\n<th>\u6982\u8981<\/th>\n<\/tr>\n<tr>\n<td><a href=\"#MThd\u30c1\u30e3\u30f3\u30af\">MThd\u30c1\u30e3\u30f3\u30af<\/a><\/td>\n<td>\u4e00\u822c<\/td>\n<td>\u5fc5\u9808<\/td>\n<td>MThd<\/td>\n<td>\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u30d8\u30c3\u30c0\u60c5\u5831(\u30c8\u30e9\u30c3\u30af\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5f62\u5f0f\u3084\u5206\u89e3\u80fd\u306a\u3069)\u304c\u4fdd\u5b58\u3055\u308c\u305f\u30c1\u30e3\u30f3\u30af<\/td>\n<\/tr>\n<tr>\n<td><a href=\"#MTrk\u30c1\u30e3\u30f3\u30af\">MTrk\u30c1\u30e3\u30f3\u30af<\/a><\/td>\n<td>\u4e00\u822c<\/td>\n<td>\u5fc5\u9808<\/td>\n<td>MTrk<\/td>\n<td>\u5404\u30c8\u30e9\u30c3\u30af\u3054\u3068\u306eMIDI\u30c7\u30fc\u30bf\u304c\u4fdd\u5b58\u3055\u308c\u305f\u30c1\u30e3\u30f3\u30af\u3002\u8907\u6570\u30c8\u30e9\u30c3\u30af\u304c\u3042\u308b\u5834\u5408\u3001\u540c\u3058\u30c1\u30e3\u30f3\u30afID(MTrk)\u304c\u8907\u6570\u5b58\u5728\u3059\u308b\u3053\u3068\u306b\u306a\u308b\u3002<\/td>\n<\/tr>\n<\/table>\n<h1 id=\"\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u5404\u30c1\u30e3\u30f3\u30af\u306e\u8aac\u660e\">\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u5404\u30c1\u30e3\u30f3\u30af\u306e\u8aac\u660e<\/h1>\n<p>\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u5404\u30c1\u30e3\u30f3\u30af\u306b\u3064\u3044\u3066\u8aac\u660e\u3044\u305f\u3057\u307e\u3059\u3002<\/p>\n<h2 id=\"MThd\u30c1\u30e3\u30f3\u30af\">MThd\u30c1\u30e3\u30f3\u30af<\/h2>\n<table>\n<tr>\n<th width=\"15%\">\u6982\u8981<\/th>\n<td colspan=\"3\">\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u30d8\u30c3\u30c0\u60c5\u5831(\u30c8\u30e9\u30c3\u30af\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5f62\u5f0f\u3084\u5206\u89e3\u80fd\u306a\u3069)\u304c\u4fdd\u5b58\u3055\u308c\u305f\u30c1\u30e3\u30f3\u30af\u306b\u306a\u308a\u307e\u3059<\/td>\n<\/tr>\n<tr>\n<th>\u5fc5\u9808\u30fb\u4efb\u610f<\/th>\n<td width=\"35%\">\u5fc5\u9808<\/td>\n<th width=\"15%\">\u30c1\u30e3\u30f3\u30af\u30b5\u30a4\u30ba<\/th>\n<td width=\"35%\">6Byte\u56fa\u5b9a<\/td>\n<\/tr>\n<tr>\n<th>\u30c7\u30fc\u30bf\u90e8<\/th>\n<td colspan=\"3\">\u30c7\u30fc\u30bf\u90e8\u306b\u306f\u4e0b\u8a18 \u69cb\u9020\u4f53\u304c\u5165\u308a\u307e\u3059\u3002<br \/>\n[crayon]<br \/>\nstruct SMFHeader<br \/>\n{<br \/>\n\tWORD format   = 0; \/\/ SMF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<br \/>\n\tWORD tracknum = 0; \/\/ \u30c8\u30e9\u30c3\u30af\u6570<br \/>\n\tWORD timedev  = 0; \/\/ \u6642\u9593\u30d9\u30fc\u30b9\u3002<br \/>\n};<br \/>\n[\/crayon]<br \/>\n(WORD\u578b\u306funsigned short\u3001DWORD\u578b\u306funsinged long\u306e\u518d\u5b9a\u7fa9\u3068\u306a\u308a\u307e\u3059\u3002)<\/p>\n<table>\n<tr>\n<th>\u578b<\/th>\n<th>\u5909\u6570\u540d<\/th>\n<th>\u610f\u5473<\/th>\n<\/tr>\n<tr>\n<td>WORD<\/td>\n<td>format<\/td>\n<td>\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u3059\u3002<br \/>0\u306e\u5834\u5408\u20261\u3064\u306e\u30c8\u30e9\u30c3\u30af\u306b\u3059\u3079\u3066\u306eMIDI\u30c7\u30fc\u30bf\u304c\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002<br \/>1\u306e\u5834\u5408\u2026\u30c1\u30e3\u30f3\u30cd\u30eb\u3084\u30d5\u30ec\u30fc\u30ba\u3054\u3068\u306b\u30c8\u30e9\u30c3\u30af\u3092\u5206\u3051\u3066MIDI\u30c7\u30fc\u30bf\u304c\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002<\/p>\n<tr>\n<td>WORD<\/td>\n<td>tracknum<\/td>\n<td>\u30c8\u30e9\u30c3\u30af\u306e\u6570\u306b\u306a\u308a\u307e\u3059\u3002MTrk\u30c1\u30e3\u30f3\u30af\u306e\u6570\u3068\u7b49\u3057\u304f\u306a\u308a\u307e\u3059\u3002<\/td>\n<\/tr>\n<tr>\n<td>WORD<\/td>\n<td>timedev<\/td>\n<td>\u5206\u89e3\u80fd\u306a\u3069\u3092\u793a\u3059\u5024\u3067\u3059\u3002<br \/>\u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u304c0\u306e\u3068\u304d\u30014\u5206\u97f3\u7b26\u306e\u5206\u89e3\u80fd\u3092\u8868\u3057\u307e\u3059\u3002<br \/>\u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u304c1\u306e\u3068\u304d\u3001\u7d76\u5bfe\u6642\u9593\u30d9\u30fc\u30b9\u3068\u306a\u308a\u307e\u3059\u3002\u7d76\u5bfe\u6642\u9593\u30d9\u30fc\u30b9\u306e\u8a73\u7d30\u306f\u5272\u611b\u3057\u307e\u3059\u3002<\/td>\n<\/tr>\n<\/table>\n<\/td>\n<\/tr>\n<\/table>\n<h2 id=\"MTrk\u30c1\u30e3\u30f3\u30af\">MTrk\u30c1\u30e3\u30f3\u30af<\/h2>\n<table>\n<tr>\n<th width=\"15%\">\u6982\u8981<\/th>\n<td colspan=\"3\">\u5404\u30c8\u30e9\u30c3\u30af\u3054\u3068\u306eMIDI\u30c7\u30fc\u30bf\u304c\u4fdd\u5b58\u3055\u308c\u305f\u30c1\u30e3\u30f3\u30af\u306b\u306a\u308a\u307e\u3059\u3002<br \/>(\u8907\u6570\u30c8\u30e9\u30c3\u30af\u304c\u3042\u308b\u5834\u5408\u3001\u540c\u3058\u30c1\u30e3\u30f3\u30afID(MTrk)\u304c\u8907\u6570\u5b58\u5728\u3059\u308b\u306e\u3067\u6ce8\u610f\u3002)<\/td>\n<\/tr>\n<tr>\n<th>\u5fc5\u9808\u30fb\u4efb\u610f<\/th>\n<td width=\"35%\">\u5fc5\u9808<\/td>\n<th width=\"15%\">\u30c1\u30e3\u30f3\u30af\u30b5\u30a4\u30ba<\/th>\n<td width=\"35%\">\u30c8\u30e9\u30c3\u30af\u5185\u306b\u3042\u308bMIDI\u30c7\u30fc\u30bf\u306e\u5185\u5bb9\u306b\u3088\u308a\u5909\u308f\u308a\u307e\u3059\u3002<\/td>\n<\/tr>\n<tr>\n<th>\u30c7\u30fc\u30bf\u90e8<\/th>\n<td colspan=\"3\">\u30c7\u30eb\u30bf\u30bf\u30a4\u30e0\u30fbMIDI\u30a4\u30d9\u30f3\u30c8\u30fbMIDI\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u306e3\u3064\u30921\u3064\u3068\u3057\u305fMIDI\u30c7\u30fc\u30bf\u304c\u8907\u6570\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002<br \/>\u30c7\u30eb\u30bf\u30bf\u30a4\u30e0\u306f\u53ef\u5909\u9577\u306e\u30c7\u30fc\u30bf\u3067\u3001\u307e\u305f\u3001MIDI\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u306fMIDI\u30a4\u30d9\u30f3\u30c8\u306b\u3088\u3063\u3066\u5909\u308f\u308b\u305f\u3081\u5f8c\u8ff0\u3057\u307e\u3059\u3002<\/td>\n<\/tr>\n<\/table>\n<\/td>\n<\/tr>\n<\/table>\n<h1 id=\"MTrk\u30c1\u30e3\u30f3\u30af\u306e\u30c7\u30fc\u30bf\u5f62\u5f0f\">MTrk\u30c1\u30e3\u30f3\u30af\u306e\u30c7\u30fc\u30bf\u5f62\u5f0f<\/h1>\n<h2>\u30c7\u30eb\u30bf\u30bf\u30a4\u30e0<\/h2>\n<p>(\u4f5c\u6210\u4e2d)<\/p>\n<h2>MIDI\u30a4\u30d9\u30f3\u30c8\u3068MIDI\u30c7\u30fc\u30bf<\/h2>\n<p>(\u4f5c\u6210\u4e2d)<\/p>\n<h1 id=\"\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MID\u30d5\u30a1\u30a4\u30eb\u8aad\u307f\u8fbc\u307f\u30b5\u30f3\u30d7\u30eb\">\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MID\u30d5\u30a1\u30a4\u30eb\u8aad\u307f\u8fbc\u307f\u30b5\u30f3\u30d7\u30eb<\/h1>\n<p>\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MID\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u306e\u6d41\u308c\u306f<\/p>\n<ol>\n<li>MThd\u30c1\u30e3\u30f3\u30af\u3092\u8aad\u307f\u8fbc\u3080<\/li>\n<li>MTrk\u30c1\u30e3\u30f3\u30af\u3092\u8aad\u307f\u8fbc\u307f\u3001\u30c8\u30e9\u30c3\u30af\u5185\u306b\u3042\u308bMIDI\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u4fdd\u5b58\u3059\u308b\u3002<br \/>\u203b\u30c8\u30e9\u30c3\u30af\u6570\u306b\u5fdc\u3058\u3066MTrk\u306e\u8aad\u307f\u8fbc\u307f\u3092\u7e70\u308a\u8fd4\u3059\u3002<\/li>\n<\/ol>\n<p>\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3080\u95a2\u6570\u306e\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3092\u8a18\u8f09\u3057\u307e\u3059\u3002<br \/>\n\u8aac\u660e\u306b\u3064\u3044\u3066\u306f\u30b3\u30fc\u30c9\u5185\u306b\u8a18\u8f09\u3057\u3066\u3044\u308b\u306e\u3067\u5272\u611b\u3057\u307e\u3059\u3002<\/p>\n<p>\u306a\u304a\u3001\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u306b\u306f\u4e0b\u8a18\u306e<a href=\"https:\/\/www.utsbox.com\/?p=2181#RIFF\u30d5\u30a1\u30a4\u30eb\u8aad\u307f\u8fbc\u307f\u30af\u30e9\u30b9\">RIFF\u306e\u8aad\u8fbc\u3092\u884c\u3046\u30af\u30e9\u30b9<\/a>\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u4e0b\u8a18\u3082\u3054\u53c2\u7167\u304f\u3060\u3055\u3044\u3002<\/p>\n<ul>\n<li><a href=\"https:\/\/www.utsbox.com\/?p=2181#RIFF\u30d5\u30a1\u30a4\u30eb\u8aad\u307f\u8fbc\u307f\u30af\u30e9\u30b9\">RIFF\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066 &#8211; RIFF\u30d5\u30a1\u30a4\u30eb\u8aad\u307f\u8fbc\u307f\u30af\u30e9\u30b9<\/a><\/li>\n<\/ul>\n<p>\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u95a2\u6570\u306e\u30b5\u30f3\u30d7\u30eb\u306f\u3053\u3061\u3089\u304b\u3089\u3082\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002 \u2192 \u3000<a href=\"https:\/\/www.utsbox.com\/wp-content\/uploads\/2023\/12\/riffsample_20231210.zip\">riffsample_20231210<\/a><br \/>\n\u203b\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u4ee5\u5916\u306b\u3082wav\u30d5\u30a1\u30a4\u30eb\u3084Soundfont\u30d5\u30a1\u30a4\u30eb\u8aad\u8fbc\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3082\u540c\u68b1\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u3010cmidiloader.h\u3011<br \/>\n[crayon]<br \/>\n#pragma once<\/p>\n<p>#include <stdio.h><br \/>\n#include <vector><br \/>\n#include <\/p>\n<map>\n#include <string><\/p>\n<p>using namespace std;<\/p>\n<p>\/\/#include &#8220;CRiffLoaderMMIO.h&#8221;<br \/>\n#include &#8220;criffloader.h&#8221;<\/p>\n<p>const FOURCC fccMThd = FourCC(&#8216;M&#8217;, &#8216;T&#8217;, &#8216;h&#8217;, &#8216;d&#8217;);<br \/>\nconst FOURCC fccMTrk = FourCC(&#8216;M&#8217;, &#8216;T&#8217;, &#8216;r&#8217;, &#8216;k&#8217;);<\/p>\n<p>constexpr BYTE MIDINoteOff         = 0x80;<br \/>\nconstexpr BYTE MIDINoteOn          = 0x90;<br \/>\nconstexpr BYTE MIDIPolyPress       = 0xA0;<br \/>\nconstexpr BYTE MIDICC              = 0xB0;<br \/>\nconstexpr BYTE MIDIProgramChange   = 0xC0;<br \/>\nconstexpr BYTE MIDIChannelPress    = 0xD0;<br \/>\nconstexpr BYTE MIDIPitchBend       = 0xE0;<br \/>\nconstexpr BYTE MIDISystemExclusive = 0xF0;<\/p>\n<p>struct SMFHeader<br \/>\n{<br \/>\n\tWORD format   = 0; \/\/ SMF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<br \/>\n\tWORD tracknum = 0; \/\/ \u30c8\u30e9\u30c3\u30af\u6570<br \/>\n\tWORD timedev  = 0; \/\/ \u6642\u9593\u30d9\u30fc\u30b9\u3002<br \/>\n\t                   \/\/ \u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u304c0\u306e\u3068\u304d\u30014\u5206\u97f3\u7b26\u306e\u5206\u89e3\u80fd\u3092\u8868\u3059\u3002<br \/>\n\t\t\t   \/\/ \u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u304c1\u306e\u3068\u304d\u3001\u7d76\u5bfe\u6642\u9593\u30d9\u30fc\u30b9\u3068\u306a\u308b\u304cWeb\u4e0a\u306b\u307b\u3068\u3093\u3069\u60c5\u5831\u304c\u306a\u304f\u8a73\u7d30\u4e0d\u660e\u3002<br \/>\n};<\/p>\n<p>struct MIDIMessage<br \/>\n{<br \/>\n\tDWORD deltaTime = 0; \/\/ MIDI\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u30c7\u30eb\u30bf\u6642\u9593\u3002(\u524d\u306eMIDI\u30e1\u30c3\u30bb\u30fc\u30b8\u304b\u3089\u306e\u6642\u9593\u3002)<br \/>\n\tDWORD absTime   = 0; \/\/ MIDI\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u7d76\u5bfe\u6642\u9593\u3002(\u66f2\u306e\u6700\u521d\u304b\u3089\u306e\u6642\u9593\u3002\u5fc5\u9808\u3067\u306f\u306a\u3044\u304c\u6271\u3044\u3084\u3059\u3044\u306e\u3067\u4f5c\u6210\u3057\u3066\u3044\u308b\u3002)<br \/>\n\tBYTE  event     = 0; \/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u3002<br \/>\n\tBYTE  channel   = 0; \/\/ MIDI\u30c1\u30e3\u30f3\u30cd\u30eb\u3002<br \/>\n\tvector<BYTE> data;   \/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u306e\u30c7\u30fc\u30bf\u7528\u3002<br \/>\n\tBYTE  sysexmeta = 0; \/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u306e\u30bf\u30a4\u30d7\u3002\u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u3067\u306e\u307f\u4f7f\u7528\u3002<br \/>\n};<\/p>\n<p>typedef vector<MIDIMessage> TrackMIDIMessage;<\/p>\n<p>class CSMFLoader<br \/>\n{<br \/>\npublic:<br \/>\n\tCSMFLoader(string filename)<br \/>\n\t{<br \/>\n\t\tcriffloader.open(filename, true);<br \/>\n\t\tinitialize();<br \/>\n\t};<\/p>\n<p>\t~CSMFLoader()<br \/>\n\t{<br \/>\n\t};<\/p>\n<p>\tvoid initialize()<br \/>\n\t{<br \/>\n\t\t\/\/ &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\t\t\/\/ SMF\u306e\u30d8\u30c3\u30c0\u30c1\u30e3\u30f3\u30af\u306e\u51e6\u7406<\/p>\n<p>\t\t\/\/ SMF\u306e\u30d8\u30c3\u30c0\u30c1\u30e3\u30f3\u30af\u306e\u30b5\u30a4\u30ba\u3092\u53d6\u5f97<br \/>\n\t\tDWORD chunkSize = criffloader.getChunkSize(fccMThd, 0);<br \/>\n\t\tif (chunkSize != 6) { return; } \/\/ \u30d8\u30c3\u30c0\u30c1\u30e3\u30f3\u30af\u306e\u30b5\u30a4\u30ba\u306f6\u56fa\u5b9a\u3002\u305d\u308c\u4ee5\u5916\u306a\u3089\u30a8\u30e9\u30fc\u3002<\/p>\n<p>\t\t\/\/ SMF\u306e\u30d8\u30c3\u30c0\u60c5\u5831\u3092\u53d6\u5f97<br \/>\n\t\tcriffloader.getChunkData(fccMThd, &#038;header, chunkSize,0);<\/p>\n<p>\t\t\/\/ \u30a8\u30f3\u30c7\u30a3\u30a2\u30f3\u306e\u5909\u66f4 (swqap16bit\u306fcriffloader.h\u3067\u5b9a\u7fa9)<br \/>\n\t\theader.format   = swap16bit(header.format);<br \/>\n\t\theader.tracknum = swap16bit(header.tracknum);<br \/>\n\t\theader.timedev  = swap16bit(header.timedev);<\/p>\n<p>\t\t\/\/ \u30a8\u30e9\u30fc\u51e6\u7406<br \/>\n\t\tif (header.format != 0 &#038;&#038; header.format != 1) { return; } \/\/ SMF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306f0\u304b1\u306e\u307f\u5bfe\u5fdc<br \/>\n\t\tif (header.tracknum < 1) { return; }     \/\/ \u30c8\u30e9\u30c3\u30af\u304c\u306a\u3044\u5834\u5408\u306f\u7d42\u4e86\n\t\tif (header.timedev &#038; 0x8000) { return; } \/\/ \u7d76\u5bfe\u6642\u9593\u30d9\u30fc\u30b9\u306f\u975e\u5bfe\u5fdc\u3068\u3059\u308b\u3002(Web\u4e0a\u306b\u60c5\u5831\u304c\u306a\u304f\u3001\u6271\u3044\u5207\u308c\u306a\u3044\u305f\u3081)\n\n\t\t\/\/ --------------------------------------------------------\n\t\t\/\/ SMF\u306e\u30c8\u30e9\u30c3\u30af\u30c1\u30e3\u30f3\u30af\u306e\u51e6\u7406\n\n\t\t\/\/ SMF\u306e\u30c8\u30e9\u30c3\u30af\u30c1\u30e3\u30f3\u30af\u306e\u6570\u3092\u53d6\u5f97\n\t\tint tracknum = (int)criffloader.getChunkNum(fccMTrk);\n\t\tif (tracknum != header.tracknum) { return; } \/\/ \u30c8\u30e9\u30c3\u30af\u30c1\u30e3\u30f3\u30af\u306e\u6570\u304c\u30d8\u30c3\u30c0\u3068\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u30a8\u30e9\u30fc\n\n\t\t\/\/ SMF\u306e\u30c8\u30e9\u30c3\u30af\u30c1\u30e3\u30f3\u30af\u306e\u8aad\u8fbc\n\t\tfor (int i = 0; i < tracknum; i++)\n\t\t{\n\t\t\t\/\/ SMF\u306e\u30c8\u30e9\u30c3\u30af\u30c1\u30e3\u30f3\u30af\u306e\u30b5\u30a4\u30ba\u3092\u53d6\u5f97\n\t\t\tchunkSize = criffloader.getChunkSize(fccMTrk, i);\n\t\t\tif (chunkSize == 0) { continue; }\n\n\t\t\t\/\/ SMF\u306e\u30c8\u30e9\u30c3\u30af\u30c1\u30e3\u30f3\u30af\u306e\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\n\t\t\tvector<BYTE> data(chunkSize, 0);<br \/>\n\t\t\tcriffloader.getChunkData(fccMTrk, &#038;(data[0]), chunkSize, i);<\/p>\n<p>\t\t\t\/\/ SMF\u306e\u30c8\u30e9\u30c3\u30af\u30c1\u30e3\u30f3\u30af\u306e\u30c7\u30fc\u30bf\u3092\u6271\u3044\u3084\u3059\u3044\u3088\u3046\u306b<br \/>\n\t\t\t\/\/ MIDI\u30c7\u30fc\u30bf\u3054\u3068(MIDIMessage\u3054\u3068)\u306b\u3059\u308b<br \/>\n\t\t\tTrackMIDIMessage mididata;<br \/>\n\t\t\tparseTrack(data, mididata);<\/p>\n<p>\t\t\ttrackdata.push_back(mididata);<br \/>\n\t\t}<\/p>\n<p>\t\t\/\/ \u30d5\u30a9\u30fc\u30de\u30c3\u30c80\u306e\u5834\u5408\u30011\u3064\u306e\u30c8\u30e9\u30c3\u30af\u306b\u5168\u30c1\u30e3\u30f3\u30cd\u30eb\u304c\u6df7\u5728\u3059\u308b\u306e\u3067\u3001<br \/>\n\t\t\/\/ \u30c1\u30e3\u30f3\u30cd\u30eb\u3054\u3068\u306b\u30c8\u30e9\u30c3\u30af\u3092\u5206\u3051\u308b<br \/>\n\t\tif (header.format == 0 &#038;&#038; trackdata.size() == 1)<br \/>\n\t\t{<br \/>\n\t\t\ttrackdata = separateTrack(trackdata[0]);<br \/>\n\t\t}<br \/>\n\t};<\/p>\n<p>\t\/\/ SMF\u306e\u30c8\u30e9\u30c3\u30af\u30c1\u30e3\u30f3\u30af\u306e\u30c7\u30fc\u30bf\u3092\u6271\u3044\u3084\u3059\u3044\u3088\u3046\u306bMIDI\u30c7\u30fc\u30bf\u3054\u3068(TrackMIDIMessage\u3054\u3068)\u306b\u3059\u308b\u95a2\u6570<br \/>\n\tvoid parseTrack(vector<BYTE>&#038; data, TrackMIDIMessage&#038; midimsg)<br \/>\n\t{<br \/>\n\t\tDWORD absTime = 0;<br \/>\n\t\tMIDIMessage tmpmidimsg ,initialmidimsg;<\/p>\n<p>\t\tBYTE PrevMIDIEvent = 0; \/\/ \u30e9\u30f3\u30cb\u30f3\u30b0\u30b9\u30c6\u30fc\u30bf\u30b9\u7528<\/p>\n<p>\t\tDWORD sysex_pos = 0;<br \/>\n\t\tDWORD sysex_len = 0;<\/p>\n<p>\t\t\/\/ \u89e3\u6790\u72b6\u614b\u3092\u793a\u3059\u5909\u6570\u3068\u5404\u89e3\u6790\u72b6\u614b<br \/>\n\t\t\/\/ (SMF\u30d5\u30a1\u30a4\u30eb\u306e\u30c8\u30e9\u30c3\u30af\u306f\u30c7\u30fc\u30bf\u304c\u53ef\u5909\u9577\u306a\u306e\u3067\u30011Byte\u305a\u3064\u5185\u5bb9\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<br \/>\n\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u306e\u30c7\u30fc\u30bf\u9577\u3068\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u8fbc\u307f\u72b6\u614b\u306f\u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u3068\u5171\u901a\u306e\u305f\u3081\u3001<br \/>\n\t\t\/\/ MIDI_SYSEXLEN, MIDI_SYSEXDATA\u3092\u5229\u7528\u3059\u308b\u3082\u306e\u3068\u3059\u308b\u3002<br \/>\n\t\tenum {<br \/>\n\t\t\tMIDI_DELTATIME, MIDI_EVENT, MIDI_DATA1, MIDI_DATA2,<br \/>\n\t\t\tMIDI_METATYPE, MIDI_SYSEXLEN, MIDI_SYSEXDATA<br \/>\n\t\t};<br \/>\n\t\tint state = MIDI_DELTATIME;<\/p>\n<p>\t\tfor (int j = 0; j < (int)data.size(); j++)\n\t\t{\n\t\t\tswitch (state)\n\t\t\t{\n\t\t\tcase MIDI_DELTATIME:\n\t\t\t\t\/\/ MIDI\u30c7\u30eb\u30bf\u30bf\u30a4\u30e0\u306f\u3001\u53ef\u5909\u9577\u306e\u30c7\u30fc\u30bf\u306b\u306a\u308b\n\t\t\t\t\/\/ \u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u304c\u30011\u306e\u6642\u306f\u7d99\u7d9a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u30010\u306e\u6642\u306f\u7d99\u7d9a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u306a\u3044\u3053\u3068\u3092\u793a\u3059\u3002\n\t\t\t\t\/\/ \u6b8b\u308a\u306e7\u30d3\u30c3\u30c8\u306f\u30c7\u30fc\u30bf\u306e\u5024\u3092\u793a\u3059\u3002\n\t\t\t\t\/\/ MIDI\u30c7\u30eb\u30bf\u30bf\u30a4\u30e0\u306e\u8aad\u307f\u8fbc\u307f\u304c\u7d42\u308f\u308c\u3070MIDI\u30c7\u30fc\u30bf\u8aad\u8fbc\u72b6\u614b\u306b\u6620\u308b\n\n\t\t\t\t\/\/ \u30c7\u30fc\u30bf\u306e\u5024\u3092\u8db3\u3057\u5408\u308f\u305b\u308b\n\t\t\t\ttmpmidimsg.deltaTime += data[j] &#038; 0x7F;\n\n\t\t\t\tif (data[j] &#038; 0x80) \/\/ \u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u304c1\u306e\u3068\u304d\u306f\u307e\u3060\u7d99\u7d9a\u3059\u308b\u30c7\u30eb\u30bf\u30bf\u30a4\u30e0\u30c7\u30fc\u30bf\u304c\u3042\u308b\u3002\n\t\t\t\t{\n\t\t\t\t\t\/\/ \u7d99\u7d9a\u3059\u308b\u30c7\u30eb\u30bf\u30bf\u30a4\u30e0\u304c\u3042\u308b\u305f\u3081\u3001\u30d3\u30c3\u30c8\u30b7\u30d5\u30c8\u3059\u308b\n\t\t\t\t\ttmpmidimsg.deltaTime = tmpmidimsg.deltaTime << 7;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t\/\/ \u6b21\u306f\u30c7\u30eb\u30bf\u30bf\u30a4\u30e0\u3067\u306f\u306a\u3044\u305f\u3081\u3001\u72b6\u614b\u3092MIDI_EVENT\u306b\u5207\u308a\u66ff\u3048\u308b\n\t\t\t\t\tabsTime += tmpmidimsg.deltaTime;\n\t\t\t\t\ttmpmidimsg.absTime = absTime;\n\n\t\t\t\t\tstate = MIDI_EVENT;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase MIDI_EVENT:\n\t\t\t\t\/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u306f8\u30d0\u30a4\u30c8\u56fa\u5b9a\u306e\u30c7\u30fc\u30bf\u306b\u306a\u308b\u3002\n\t\t\t\t\/\/ \u305f\u3060\u3057\u3001\u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u304c0\u306e\u5834\u5408\u3001\u30e9\u30f3\u30cb\u30f3\u30b0\u30b9\u30c6\u30fc\u30bf\u30b9\u30eb\u30fc\u30eb\u304c\u9069\u7528\u3055\u308c\u3001\n\t\t\t\t\/\/ \u524d\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u9069\u7528\u3059\u308b\u3068\u3068\u3082\u306b\u3001\u8aad\u8fbc\u4f4d\u7f6e\u3092\u9032\u3081\u305a\u306b\u6b21\u306e\u72b6\u614b(MIDI\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf1)\u306b\u79fb\u308b\u3002\n\t\t\t\t\/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u306e\u8aad\u307f\u8fbc\u307f\u304c\u7d42\u308f\u308c\u3070\u6b21\u306e\u72b6\u614b\u306b\u6620\u308b\u3002\n\t\t\t\t\/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u304c\u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u4ee5\u5916\u306fMIDI\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf1\u8aad\u8fbc\u72b6\u614b\u306b\u79fb\u308b\u3002\n\t\t\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u306e\u5834\u5408\u3001\u4e0b\u4f4d4bit\u306e\u5024\u306b\u3088\u308a\u3001\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u304b\u3069\u3046\u304b(0x0F\u304b\u3069\u3046\u304b)\u3092\u5224\u65ad\u3057\n\t\t\t\t\/\/ \u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u306e\u5834\u5408\u306f\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u30bf\u30a4\u30d7\u8aad\u8fbc\u72b6\u614b\u306b\u79fb\u308a\u3001\n\t\t\t\t\/\/ \u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u51fa\u306a\u3044\u5834\u5408\u306f\u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u30c7\u30fc\u30bf\u9577\u8aad\u8fbc\u72b6\u614b\u306b\u79fb\u308b\u3002\n\t\t\t\t\n\t\t\t\t\/\/ \u30e9\u30f3\u30cb\u30f3\u30b0\u30b9\u30c6\u30fc\u30bf\u30b9\u304b\u3069\u3046\u304b\u3092\u8abf\u3079\u308b\u3002\n\t\t\t\tif (data[j] &#038; 0x80) \/\/ \u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u304c1\u306e\u3068\u304d\u306f\u30e9\u30f3\u30cb\u30f3\u30b0\u30b9\u30c6\u30fc\u30bf\u30b9\u3067\u306f\u306a\u3044\u3002\n\t\t\t\t{\n\t\t\t\t\t\/\/ \u901a\u5e38\u306e\u51e6\u7406\n\t\t\t\t\ttmpmidimsg.event = data[j] &#038; 0xF0; \/\/ \u4e0a\u4f4d4\u30d3\u30c3\u30c8\u306fMIDI\u30a4\u30d9\u30f3\u30c8\n\t\t\t\t\ttmpmidimsg.channel = data[j] &#038; 0x0F; \/\/ \u4e0b\u4f4d4\u30d3\u30c3\u30c8\u306fMIDI\u30c1\u30e3\u30f3\u30cd\u30eb\n\n\t\t\t\t\tPrevMIDIEvent = data[j]; \/\/ \u6b21\u306e\u30e9\u30f3\u30cb\u30f3\u30b0\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u305f\u3081\u306b\u73fe\u5728\u306e\u72b6\u614b\u3092\u4fdd\u5b58\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t\/\/ \u30e9\u30f3\u30cb\u30f3\u30b0\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u51e6\u7406\n\t\t\t\t\ttmpmidimsg.event = PrevMIDIEvent &#038; 0xF0; \/\/ \u4e0a\u4f4d4\u30d3\u30c3\u30c8\u306fMIDI\u30a4\u30d9\u30f3\u30c8\n\t\t\t\t\ttmpmidimsg.channel = PrevMIDIEvent &#038; 0x0F; \/\/ \u4e0b\u4f4d4\u30d3\u30c3\u30c8\u306fMIDI\u30c1\u30e3\u30f3\u30cd\u30eb\n\t\t\t\t\tj -= 1; \/\/ \u30c7\u30fc\u30bf\u8aad\u8fbc\u4f4d\u7f6e\u306f\u9032\u3081\u306a\u3044\u3088\u3046\u306b\u3059\u308b\n\t\t\t\t}\n\n\t\t\t\t\/\/ \u72b6\u614b\u3092\u5207\u308a\u66ff\u3048\u308b\n\t\t\t\tif (tmpmidimsg.event == MIDISystemExclusive)\n\t\t\t\t{\n\t\t\t\t\t\/\/ \u4e0b\u4f4d\u30d0\u30a4\u30c8\u3067\u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u304b\u3069\u3046\u304b\u3092\u5224\u65ad\u3059\u308b\u3002\n\t\t\t\t\tif (tmpmidimsg.channel == 0x0F)\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = MIDI_METATYPE;\n\t\t\t\t\t}\n\t\t\t\t\telse \/\/ \u672c\u6765\u306f\u4e0b\u4f4d\u30d0\u30a4\u30c8\u304c 0 \u304b 7 \u306e\u307f\u3067\u5236\u9650\u3059\u308b\u306e\u304c\u671b\u307e\u3057\u3044\u3002\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = MIDI_SYSEXLEN;\n\t\t\t\t\t}\n\n\t\t\t\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u30fb\u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u3067\u306e\u307f\u4f7f\u7528\u3059\u308b\u5909\u6570\u3092\u30af\u30ea\u30a2\u3059\u308b\u3002\n\t\t\t\t\tsysex_pos = 0;\n\t\t\t\t\tsysex_len = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u30fb\u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u3067\u306f\u306a\u3044\u3002\n\t\t\t\t\tstate = MIDI_DATA1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase MIDI_DATA1:\n\t\t\t\t\/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf1\u306f8\u30d0\u30a4\u30c8\u56fa\u5b9a\u306e\u30c7\u30fc\u30bf\u306b\u306a\u308b\u3002\n\t\t\t\t\/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf1\u306e\u8aad\u307f\u8fbc\u307f\u304c\u7d42\u308f\u308c\u3070\u3001\u6b21\u306e\u72b6\u614b\u306b\u79fb\u308b\u3002\n\t\t\t\t\/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u304c\u30d7\u30ed\u30b0\u30e9\u30e0\u30c1\u30a7\u30f3\u30b8\u3084MIDI\u30c1\u30e3\u30f3\u30cd\u30eb\u30d7\u30ec\u30c3\u30b7\u30e3\u30fc\u3067\u3042\u308c\u3070\n\t\t\t\t\/\/ 1\u3064\u306eMIDI\u30c7\u30fc\u30bf\u306e\u8aad\u8fbc\u304c\u5b8c\u4e86\u3068\u306a\u308b\u3002\n\t\t\t\t\/\/ \u305d\u3046\u3067\u306a\u3051\u308c\u3070\u3001MIDI\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf2\u306e\u8aad\u8fbc\u306b\u79fb\u308b\u3002\n\n\t\t\t\t\/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf1\u306f\u7279\u306b\u6c17\u306b\u305b\u305a\u4fdd\u5b58\u3059\u308b\n\t\t\t\ttmpmidimsg.data.push_back(data[j]);\n\n\t\t\t\t\/\/ \u72b6\u614b\u3092\u5207\u308a\u66ff\u3048\u308b\n\t\t\t\tif (tmpmidimsg.event == MIDIProgramChange\n\t\t\t\t\t|| tmpmidimsg.event == MIDIChannelPress)\n\t\t\t\t{\n\t\t\t\t\t\/\/ \u30d7\u30ed\u30b0\u30e9\u30e0\u30c1\u30a7\u30f3\u30b8\u3068\u30c1\u30e3\u30f3\u30cd\u30eb\u30d7\u30ec\u30c3\u30b7\u30e3\u30fc\u306fdata2\u304c\u306a\u3044\u306e\u3067\n\t\t\t\t\t\/\/ \u6b21\u306eMIDI\u30c7\u30fc\u30bf\u306b\u306a\u308b\u305f\u3081\u3001\u72b6\u614b\u306fMIDI_DELTATIME\u306b\u623b\u3059\u3002\n\t\t\t\t\tstate = MIDI_DELTATIME;\n\n\t\t\t\t\t\/\/ 1\u3064\u306eMIDI\u30c7\u30fc\u30bf\u304c\u7d42\u4e86\u3057\u305f\u306e\u3067\u3001midimsg\u914d\u5217\u306b\u8ffd\u52a0\u3002\n\t\t\t\t\tmidimsg.push_back(tmpmidimsg);\n\n\t\t\t\t\t\/\/ \u4e00\u6642MIDI\u30c7\u30fc\u30bf(tmpmidimsg)\u306f\u518d\u5229\u7528\u3059\u308b\u306e\u3067\u30af\u30ea\u30a2\u3059\u308b\u3002\n\t\t\t\t\ttmpmidimsg = initialmidimsg;\n\t\t\t\t\ttmpmidimsg.data.clear();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t\/\/ \u30d7\u30ed\u30b0\u30e9\u30e0\u30c1\u30a7\u30f3\u30b8\u3068\u30c1\u30e3\u30f3\u30cd\u30eb\u30d7\u30ec\u30c3\u30b7\u30e3\u30fc\u4ee5\u5916\u306fMIDI\u30c7\u30fc\u30bf 2\u3064\u76ee\u304c\u3042\u308b\u3002\n\t\t\t\t\tstate = MIDI_DATA2;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase MIDI_DATA2:\n\t\t\t\t\/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf2\u30828\u30d0\u30a4\u30c8\u56fa\u5b9a\u306e\u30c7\u30fc\u30bf\u306b\u306a\u308b\u3002\n\t\t\t\t\/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf2\u306e\u8aad\u307f\u8fbc\u307f\u304c\u7d42\u308f\u308c\u3070\u30011\u3064\u306eMIDI\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u8fbc\u307f\u304c\u5b8c\u4e86\u3068\u306a\u308b\u3002\n\n\t\t\t\t\/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf2\u306f\u7279\u306b\u6c17\u306b\u305b\u305a\u4fdd\u5b58\u3059\u308b\u3002\n\t\t\t\ttmpmidimsg.data.push_back(data[j]);\n\n\t\t\t\t\/\/ \u6b21\u306eMIDI\u30c7\u30fc\u30bf\u306b\u306a\u308b\u305f\u3081\u3001\u72b6\u614b\u306fMIDI_DELTATIME\u306b\u623b\u3059\u3002\n\t\t\t\tstate = MIDI_DELTATIME;\n\n\t\t\t\t\/\/ 1\u3064\u306eMIDI\u30c7\u30fc\u30bf\u304c\u7d42\u4e86\u3057\u305f\u306e\u3067\u3001midimsg\u914d\u5217\u306b\u8ffd\u52a0\u3002\n\t\t\t\tmidimsg.push_back(tmpmidimsg);\n\t\t\t\t\n\t\t\t\t\/\/ \u4e00\u6642MIDI\u30c7\u30fc\u30bf(tmpmidimsg)\u306f\u518d\u5229\u7528\u3059\u308b\u306e\u3067\u30af\u30ea\u30a2\u3059\u308b\u3002\n\t\t\t\ttmpmidimsg = initialmidimsg;\n\t\t\t\ttmpmidimsg.data.clear();\n\n\t\t\t\tbreak;\n\t\t\tcase MIDI_METATYPE: \/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u306e\u30bf\u30a4\u30d7\n\t\t\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u306f8\u30d0\u30a4\u30c8\u56fa\u5b9a\u306e\u30c7\u30fc\u30bf\u306b\u306a\u308b\u3002\n\t\t\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u306f\u8aad\u307f\u8fbc\u307f\u304c\u7d42\u308f\u308c\u3070\u3001\u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u9577\u306e\u8aad\u8fbc\u72b6\u614b\u306b\u79fb\u308b\u3002\n\n\t\t\t\ttmpmidimsg.sysexmeta = data[j];\n\n\t\t\t\tstate = MIDI_SYSEXLEN;\n\t\t\t\tbreak;\n\t\t\tcase MIDI_SYSEXLEN:\n\t\t\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u30fb\u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u306e\u30c7\u30fc\u30bf\u9577\u306f\u53ef\u5909\u9577\u30c7\u30fc\u30bf\u306b\u306a\u308b\u3002\n\t\t\t\t\/\/ \u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u304c\u30011\u306e\u6642\u306f\u7d99\u7d9a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u30010\u306e\u6642\u306f\u7d99\u7d9a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u306a\u3044\u3053\u3068\u3092\u793a\u3059\u3002\n\t\t\t\t\/\/ \u6b8b\u308a\u306e7\u30d3\u30c3\u30c8\u306f\u30c7\u30fc\u30bf\u306e\u5024\u3092\u793a\u3059\u3002\n\t\t\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u30fb\u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u306e\u30c7\u30fc\u30bf\u9577\u306e\u8aad\u307f\u8fbc\u307f\u304c\u7d42\u308f\u308c\u3070\n\t\t\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u30fb\u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u306e\u30c7\u30fc\u30bf\u8aad\u8fbc\u72b6\u614b\u306b\u79fb\u308b\u3002\n\n\t\t\t\tsysex_len += data[j] &#038; 0x7F;\n\t\t\t\tif (data[j] &#038; 0x80) \/\/ \u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u304c1\u306e\u3068\u304d\u306f\u307e\u3060\u7d99\u7d9a\u3059\u308b\u30c7\u30fc\u30bf\u9577\u304c\u3042\u308b\u3002\n\t\t\t\t{\n\t\t\t\t\t\/\/ \u6b21\u306e\u30c7\u30fc\u30bf\u9577\u3055\u306e\u305f\u3081\u30b7\u30d5\u30c8\u3059\u308b\n\t\t\t\t\tsysex_len = sysex_len << 7;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tsysex_pos = 0;\n\t\t\t\t\tstate = MIDI_SYSEXDATA;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase MIDI_SYSEXDATA:\n\t\t\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u30fb\u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u306e\u30c7\u30fc\u30bf\u306f\u53ef\u5909\u9577\u30c7\u30fc\u30bf\u306b\u306a\u308b\u3002\n\t\t\t\t\/\/ MIDI_SYSEXLEN\u3067\u8aad\u307f\u8fbc\u3093\u3060\u30c7\u30fc\u30bf\u9577\u306e\u5206\u3060\u3051\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3080\u3002\n\t\t\t\t\/\/ \u30c7\u30fc\u30bf\u9577\u306e\u5206\u3060\u3051\u8aad\u307f\u8fbc\u307f\u304c\u7d42\u308f\u308c\u3070\u30011\u3064\u306eMIDI\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u8fbc\u307f\u304c\u5b8c\u4e86\u3068\u306a\u308b\u3002\n\n\t\t\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u30fb\u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u306e\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u3002\n\t\t\t\ttmpmidimsg.data.push_back(data[j]);\n\n\t\t\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u30fb\u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u306e\u30c7\u30fc\u30bf\u9577\u3092\n\t\t\t\t\/\/ \u8aad\u307f\u8fbc\u3093\u3060\u30c7\u30fc\u30bf\u6570\u304c\u8d85\u3048\u305f\u3089\u7d42\u4e86\u3002\n\t\t\t\tsysex_pos++;\n\t\t\t\tif (sysex_pos >= sysex_len)<br \/>\n\t\t\t\t{<br \/>\n\t\t\t\t\t\/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30bf\u30a4\u30d9\u30f3\u30c8\u30fb\u30b7\u30b9\u30c6\u30e0\u30a8\u30af\u30b9\u30af\u30eb\u30fc\u30b7\u30d6\u3067\u306e\u307f\u4f7f\u7528\u3059\u308b\u5909\u6570\u3092\u30af\u30ea\u30a2\u3059\u308b\u3002<br \/>\n\t\t\t\t\tsysex_pos = 0;<br \/>\n\t\t\t\t\tsysex_len = 0;<\/p>\n<p>\t\t\t\t\t\/\/ \u6b21\u306eMIDI\u30a4\u30d9\u30f3\u30c8\u306b\u306a\u308b\u305f\u3081\u3001\u72b6\u614b\u306fMIDI_DELTATIME\u306b\u623b\u3059\u3002<br \/>\n\t\t\t\t\tstate = MIDI_DELTATIME;<\/p>\n<p>\t\t\t\t\t\/\/ 1\u3064\u306eMIDI\u30a4\u30d9\u30f3\u30c8\u304c\u7d42\u4e86\u3057\u305f\u306e\u3067\u3001midimsg\u914d\u5217\u306b\u8ffd\u52a0\u3002<br \/>\n\t\t\t\t\tmidimsg.push_back(tmpmidimsg);<\/p>\n<p>\t\t\t\t\t\/\/ \u4e00\u6642MIDI\u30a4\u30d9\u30f3\u30c8(tmpmidimsg)\u306f\u518d\u5229\u7528\u3059\u308b\u306e\u3067\u30af\u30ea\u30a2\u3059\u308b\u3002<br \/>\n\t\t\t\t\ttmpmidimsg = initialmidimsg;<br \/>\n\t\t\t\t\ttmpmidimsg.data.clear();<br \/>\n\t\t\t\t}<br \/>\n\t\t\t\tbreak;<br \/>\n\t\t\t}<br \/>\n\t\t}<br \/>\n\t};<\/p>\n<p>\t\/\/ \u30c1\u30e3\u30f3\u30cd\u30eb\u3054\u3068\u306b\u30c8\u30e9\u30c3\u30af\u3092\u5206\u3051\u308b\u95a2\u6570<br \/>\n\tvector<TrackMIDIMessage> separateTrack(TrackMIDIMessage&#038; midimsg)<br \/>\n\t{<br \/>\n\t\tvector<TrackMIDIMessage> newtrackdata;<br \/>\n\t\tmap<int, TrackMIDIMessage> tmptrackdata;<\/p>\n<p>\t\t\/\/ \u5358\u7d14\u306bMIDI\u30c1\u30e3\u30f3\u30cd\u30eb\u3092\u5206\u96e2\u3059\u308b<br \/>\n\t\tfor (int i = 0; i < (int)midimsg.size(); i++)\n\t\t{\n\t\t\tif (midimsg[i].event == MIDISystemExclusive)\n\t\t\t{\n\t\t\t\tint id = 0;\n\t\t\t\ttmptrackdata[id].push_back(midimsg[i]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tint id = midimsg[i].channel + 1;\n\t\t\t\ttmptrackdata[id].push_back(midimsg[i]);\n\t\t\t}\n\t\t}\n\n\t\t\/\/ \u5206\u96e2\u3057\u305fMIDI\u30c1\u30e3\u30f3\u30cd\u30eb\u306edeltatime\u3092\u4fee\u6b63\u3059\u308b\n\t\tfor (auto x : tmptrackdata)\n\t\t{\n\t\t\tauto tmpmidimsg = x.second;\n\n\t\t\tDWORD prevAbsTime = 0;\n\t\t\tfor (int i = 0; i < (int)tmpmidimsg.size(); i++)\n\t\t\t{\n\t\t\t\ttmpmidimsg[i].deltaTime = tmpmidimsg[i].absTime - prevAbsTime;\n\n\t\t\t\tprevAbsTime = tmpmidimsg[i].absTime;\n\t\t\t}\n\n\t\t\tnewtrackdata.push_back(tmpmidimsg);\n\t\t}\n\n\t\treturn newtrackdata;\n\t}\n\n\tSMFHeader header;\n\tvector<TrackMIDIMessage> trackdata;<\/p>\n<p>protected:<br \/>\n\tCRiffLoader criffloader;<\/p>\n<p>};<br \/>\n[\/crayon]<\/p>\n<p>\u4e0a\u8a18\u306e\u95a2\u6570\u3067\u3067\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br \/>\n\u4e0b\u8a18\u306e\u3088\u3046\u306b\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>[crayon]<br \/>\nint main()<br \/>\n{<br \/>\n\tCSMFLoader smf(&#8220;test.mid&#8221;); \/\/ \u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3080<\/p>\n<p>\t\/\/ \u30c8\u30e9\u30c3\u30af\u3054\u3068\u306bMIDI\u30c7\u30fc\u30bf\u3092\u5229\u7528\u3057\u3066\u51e6\u7406\u3092\u884c\u3046<br \/>\n\tfor (int track = 0; track < smf.trackdata.size(); track++)\n\t{\n\t\tprintf(\"\u30c8\u30e9\u30c3\u30af %d\\n\", track);\n\n\t\tint loops = smf.trackdata[track].size();\n\t\tfor (int i = 0; i < loops; i++)\n\t\t{\n\t\t\tswitch (smf.trackdata[track][i].event) \/\/ MIDI\u30a4\u30d9\u30f3\u30c8\u3054\u3068\u306b\u51e6\u7406\n\t\t\t{\n\t\t\tcase MIDINoteOff:\n\t\t\t\t\/\/\u30c8\u30e9\u30c3\u30af\u5185\u306eMIDI\u30c7\u30fc\u30bf\u300csmf.trackdata[track][i]\u300d\u3092\u4f7f\u3063\u3066\u4f55\u304b\u51e6\u7406\n\t\t\t\tbreak;\n\t\t\tcase MIDINoteOn:\n\n\t\t\t\t\uff5e\uff5e\u4ee5\u4e0b\u7565\uff5e\uff5e\n\t\t\t}\n\t\t}\n\t}\n}\n[\/crayon]\n\n\n\n<h1 id=\"\u6700\u5f8c\u306b\">\u6700\u5f8c\u306b<\/h1>\n<p>\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u306e\u30d5\u30a1\u30a4\u30eb\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3068\u305d\u308c\u305e\u308c\u306e\u30c1\u30e3\u30f3\u30af\u306b\u3064\u3044\u3066\u306e\u8aac\u660e\u306f\u4ee5\u4e0a\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u4eca\u56de\u4f5c\u6210\u3057\u305f\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u30af\u30e9\u30b9\u306e\u30b5\u30f3\u30d7\u30eb\u306f\u3053\u3061\u3089\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002 \u2192 <a href=\"https:\/\/www.utsbox.com\/wp-content\/uploads\/2023\/12\/riffsample_20231210.zip\">riffsample_20231210<\/a><br \/>\n\u203b\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u4ee5\u5916\u306b\u3082wav\u30d5\u30a1\u30a4\u30eb\u3084Soundfont\u30d5\u30a1\u30a4\u30eb\u8aad\u8fbc\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3082\u540c\u68b1\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u4ed6\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u306a\u3069\u306f\u30ea\u30f3\u30af\u306f\u3053\u3061\u3089\u306b\u307e\u3068\u3081\u3066\u304a\u308a\u307e\u3059\u3000\u2192\u3000<a href=\"https:\/\/www.utsbox.com\/?page_id=1316#\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u306e\u53d6\u308a\u6271\u3044\">\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u306e\u53d6\u308a\u6271\u3044<\/a><\/p>\n<p>\u8cea\u554f\u306f\u30b3\u30e1\u30f3\u30c8\u6b04\u3084<a href=\"https:\/\/jbbs.shitaraba.net\/computer\/42917\/\" title=\"\u63b2\u793a\u677f\" target=\"_blank\" rel=\"noopener\">\u63b2\u793a\u677f<\/a>\u3001<a href=\"https:\/\/twitter.com\/vstcpp\">Twitter<\/a>\u3067\u3044\u305f\u3060\u3051\u3070\u3068\u304a\u3082\u3044\u307e\u3059\u3002<br \/>\n\u307e\u305f\u3001\u300c\u3053\u306e\u90e8\u5206\u3092\u8a73\u3057\u304f\u300d\u306a\u3069\u306e\u8981\u671b\u3082<a href=\"https:\/\/jbbs.shitaraba.net\/computer\/42917\/\" title=\"\u63b2\u793a\u677f\" target=\"_blank\" rel=\"noopener\">\u63b2\u793a\u677f<\/a>\u3084<a href=\"https:\/\/twitter.com\/vstcpp\">Twitter<\/a>\u3067\u3044\u305f\u3060\u3051\u308c\u3070\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u25a0<a href=\"https:\/\/jbbs.shitaraba.net\/computer\/42917\/\" title=\"\u63b2\u793a\u677f\" target=\"_blank\" rel=\"noopener\">\u63b2\u793a\u677f<\/a><br \/>\n\u25a0Twitter\u30a2\u30ab\u30a6\u30f3\u30c8\uff1a@vstcpp\u3000\u3000\u3000URL\uff1a<a href=\"https:\/\/twitter.com\/vstcpp\">https:\/\/twitter.com\/vstcpp<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u306f\u3058\u3081\u306b \u3053\u3053\u3067\u306f\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb(.smf)\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u8aac\u660e\u3068\u7c21\u5358\u306a\u8aad\u8fbc\u30b5\u30f3\u30d7\u30eb\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u307e\u3059\u3002 \u30b9\u30bf\u30f3\u30c0\u30fc\u30c9MIDI\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066\u306f\u3001\u300csmf\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u300d\u306a\u3069\u3067\u691c\u7d22\u3059\u308b\u3068\u3059\u3067\u306b\u4ed6\u306e\u30b5\u30a4\u30c8\u3067 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[17],"tags":[],"class_list":["post-3942","post","type-post","status-publish","format-standard","hentry","category-vst3"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p5fXUX-11A","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.utsbox.com\/index.php?rest_route=\/wp\/v2\/posts\/3942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.utsbox.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.utsbox.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.utsbox.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.utsbox.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3942"}],"version-history":[{"count":15,"href":"https:\/\/www.utsbox.com\/index.php?rest_route=\/wp\/v2\/posts\/3942\/revisions"}],"predecessor-version":[{"id":3958,"href":"https:\/\/www.utsbox.com\/index.php?rest_route=\/wp\/v2\/posts\/3942\/revisions\/3958"}],"wp:attachment":[{"href":"https:\/\/www.utsbox.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.utsbox.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.utsbox.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}