{"id":4142,"date":"2015-12-24T02:12:53","date_gmt":"2015-12-23T23:12:53","guid":{"rendered":"http:\/\/unitycoder.com\/blog\/?p=4142"},"modified":"2015-12-24T02:12:53","modified_gmt":"2015-12-23T23:12:53","slug":"open-play-midi-files-with-winmm-dll-in-unity","status":"publish","type":"post","link":"https:\/\/unitycoder.com\/blog\/2015\/12\/24\/open-play-midi-files-with-winmm-dll-in-unity\/","title":{"rendered":"Open &#038; Play MIDI Files with winmm.dll in Unity"},"content":{"rendered":"<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"4143\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2015\/12\/24\/open-play-midi-files-with-winmm-dll-in-unity\/load_play_midi_file_in_unity3d\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/12\/load_play_midi_file_in_unity3d.jpg?fit=589%2C210&amp;ssl=1\" data-orig-size=\"589,210\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"load_play_midi_file_in_unity3d\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/12\/load_play_midi_file_in_unity3d.jpg?fit=300%2C107&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/12\/load_play_midi_file_in_unity3d.jpg?fit=589%2C210&amp;ssl=1\" class=\"alignnone size-full wp-image-4143\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/12\/load_play_midi_file_in_unity3d.jpg?resize=589%2C210\" alt=\"load_play_midi_file_in_unity3d\" width=\"589\" height=\"210\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/12\/load_play_midi_file_in_unity3d.jpg?w=589&amp;ssl=1 589w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/12\/load_play_midi_file_in_unity3d.jpg?resize=300%2C107&amp;ssl=1 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/p>\n<p>Yay &#8211; Playing Midi files in unity!<\/p>\n<p><strong>Notes:<\/strong><br \/>\n&#8211; Works on PC only<br \/>\n&#8211; If you make a build, midi files wont be included automatically (unless they are in StreamingAssets folder, havent tested it though..)<\/p>\n<p><strong>References:<\/strong><br \/>\n&#8211; Midi code from <a href=\"http:\/\/www.codeguru.com\/columns\/dotnet\/making-music-with-midi-and-c.html\" target=\"_blank\">http:\/\/www.codeguru.com\/columns\/dotnet\/making-music-with-midi-and-c.html<br \/>\n<\/a>&#8211; MidiOutCaps c# struct from <a href=\"http:\/\/svn.tapr.org\/repos_sdr_windows\/PowerSDR\/trunk\/Source\/Console\/midi.cs\" target=\"_blank\">http:\/\/svn.tapr.org\/repos_sdr_windows\/PowerSDR\/trunk\/Source\/Console\/midi.cs<\/a><br \/>\n&#8211; Get midi files from internets, like: <a href=\"http:\/\/www.vgmusic.com\/music\/computer\/commodore\/commodore\/\" target=\"_blank\">http:\/\/www.vgmusic.com\/music\/computer\/commodore\/commodore\/<\/a><\/p>\n<p><strong>Source: <\/strong>(attach to gameobject in scene, set proper midi path inside <span class=\"pl-en\">PlayMidi<\/span>())<\/p>\n<style>.gist table { margin-bottom: 0; }<\/style>\n<div style=\"tab-size: 8\" id=\"gist29301902\" class=\"gist\">\n<div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n<div class=\"gist-data\">\n<div class=\"js-gist-file-update-container js-task-list-container\">\n<div id=\"file-midiplayer-cs\" class=\"file my-2\">\n<div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-c  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"MidiPlayer.cs content, created by unitycoder on 11:05PM on December 23, 2015.\"\n    ><\/p>\n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n<p>  <template class=\"js-file-alert-template\"><\/p>\n<div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n    <span><br \/>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br \/>\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a><br \/>\n    <\/span><\/p>\n<div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters<br \/>\n<\/a>\n<\/div>\n<\/div>\n<p><\/template><br \/>\n<template class=\"js-line-alert-template\"><br \/>\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\"><br \/>\n    <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n<\/span><\/template><\/p>\n<table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"MidiPlayer.cs\">\n<tr>\n<td id=\"file-midiplayer-cs-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n<td id=\"file-midiplayer-cs-LC1\" class=\"blob-code blob-code-inner js-file-line\">\/\/ Midi Player &#8211; unitycoder.com<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n<td id=\"file-midiplayer-cs-LC2\" class=\"blob-code blob-code-inner js-file-line\">\/\/ MidiOutCaps struct from http:\/\/svn.tapr.org\/repos_sdr_windows\/PowerSDR\/trunk\/Source\/Console\/midi.cs<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n<td id=\"file-midiplayer-cs-LC3\" class=\"blob-code blob-code-inner js-file-line\">\/\/ Midi code from http:\/\/www.codeguru.com\/columns\/dotnet\/making-music-with-midi-and-c.html<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n<td id=\"file-midiplayer-cs-LC4\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n<td id=\"file-midiplayer-cs-LC5\" class=\"blob-code blob-code-inner js-file-line\">\/\/ USAGE: set proper path+filename inside PlayMidi(), attach this scrip to gameobject in scene and hit play!<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n<td id=\"file-midiplayer-cs-LC6\" class=\"blob-code blob-code-inner js-file-line\">\/\/ Get midi files from internets, like: http:\/\/www.vgmusic.com\/music\/computer\/commodore\/commodore\/<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n<td id=\"file-midiplayer-cs-LC7\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n<td id=\"file-midiplayer-cs-LC8\" class=\"blob-code blob-code-inner js-file-line\">using UnityEngine;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n<td id=\"file-midiplayer-cs-LC9\" class=\"blob-code blob-code-inner js-file-line\">using System.Runtime.InteropServices;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n<td id=\"file-midiplayer-cs-LC10\" class=\"blob-code blob-code-inner js-file-line\">using System.Text;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n<td id=\"file-midiplayer-cs-LC11\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n<td id=\"file-midiplayer-cs-LC12\" class=\"blob-code blob-code-inner js-file-line\">public class MidiPlayer : MonoBehaviour<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n<td id=\"file-midiplayer-cs-LC13\" class=\"blob-code blob-code-inner js-file-line\">{<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n<td id=\"file-midiplayer-cs-LC14\" class=\"blob-code blob-code-inner js-file-line\">    static string res;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n<td id=\"file-midiplayer-cs-LC15\" class=\"blob-code blob-code-inner js-file-line\">    public const int MAXPNAMELEN = 32;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n<td id=\"file-midiplayer-cs-LC16\" class=\"blob-code blob-code-inner js-file-line\">    public struct MidiOutCaps<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n<td id=\"file-midiplayer-cs-LC17\" class=\"blob-code blob-code-inner js-file-line\">    {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n<td id=\"file-midiplayer-cs-LC18\" class=\"blob-code blob-code-inner js-file-line\">        public short wMid;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n<td id=\"file-midiplayer-cs-LC19\" class=\"blob-code blob-code-inner js-file-line\">        public short wPid;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n<td id=\"file-midiplayer-cs-LC20\" class=\"blob-code blob-code-inner js-file-line\">        public int vDriverVersion;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n<td id=\"file-midiplayer-cs-LC21\" class=\"blob-code blob-code-inner js-file-line\">        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAXPNAMELEN)]<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n<td id=\"file-midiplayer-cs-LC22\" class=\"blob-code blob-code-inner js-file-line\">        public string szPname;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n<td id=\"file-midiplayer-cs-LC23\" class=\"blob-code blob-code-inner js-file-line\">        public short wTechnology;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n<td id=\"file-midiplayer-cs-LC24\" class=\"blob-code blob-code-inner js-file-line\">        public short wVoices;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n<td id=\"file-midiplayer-cs-LC25\" class=\"blob-code blob-code-inner js-file-line\">        public short wNotes;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n<td id=\"file-midiplayer-cs-LC26\" class=\"blob-code blob-code-inner js-file-line\">        public short wChannelMask;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n<td id=\"file-midiplayer-cs-LC27\" class=\"blob-code blob-code-inner js-file-line\">        public int dwSupport;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L28\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"28\"><\/td>\n<td id=\"file-midiplayer-cs-LC28\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L29\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"29\"><\/td>\n<td id=\"file-midiplayer-cs-LC29\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L30\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"30\"><\/td>\n<td id=\"file-midiplayer-cs-LC30\" class=\"blob-code blob-code-inner js-file-line\">    \/\/ MCI INterface<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L31\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"31\"><\/td>\n<td id=\"file-midiplayer-cs-LC31\" class=\"blob-code blob-code-inner js-file-line\">    [DllImport(&quot;winmm.dll&quot;)]<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L32\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"32\"><\/td>\n<td id=\"file-midiplayer-cs-LC32\" class=\"blob-code blob-code-inner js-file-line\">    private static extern long mciSendString(string command, StringBuilder returnValue, int returnLength, System.IntPtr winHandle);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L33\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"33\"><\/td>\n<td id=\"file-midiplayer-cs-LC33\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L34\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"34\"><\/td>\n<td id=\"file-midiplayer-cs-LC34\" class=\"blob-code blob-code-inner js-file-line\">    \/\/ Midi API<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L35\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"35\"><\/td>\n<td id=\"file-midiplayer-cs-LC35\" class=\"blob-code blob-code-inner js-file-line\">    [DllImport(&quot;winmm.dll&quot;)]<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L36\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"36\"><\/td>\n<td id=\"file-midiplayer-cs-LC36\" class=\"blob-code blob-code-inner js-file-line\">    private static extern int midiOutGetNumDevs();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L37\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"37\"><\/td>\n<td id=\"file-midiplayer-cs-LC37\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L38\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"38\"><\/td>\n<td id=\"file-midiplayer-cs-LC38\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L39\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"39\"><\/td>\n<td id=\"file-midiplayer-cs-LC39\" class=\"blob-code blob-code-inner js-file-line\">    [DllImport(&quot;winmm.dll&quot;)]<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L40\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"40\"><\/td>\n<td id=\"file-midiplayer-cs-LC40\" class=\"blob-code blob-code-inner js-file-line\">    private static extern int midiOutGetDevCaps(System.Int32 uDeviceID, ref MidiOutCaps lpMidiOutCaps, System.UInt32 cbMidiOutCaps);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L41\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"41\"><\/td>\n<td id=\"file-midiplayer-cs-LC41\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L42\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"42\"><\/td>\n<td id=\"file-midiplayer-cs-LC42\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L43\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"43\"><\/td>\n<td id=\"file-midiplayer-cs-LC43\" class=\"blob-code blob-code-inner js-file-line\">    [DllImport(&quot;winmm.dll&quot;)]<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L44\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"44\"><\/td>\n<td id=\"file-midiplayer-cs-LC44\" class=\"blob-code blob-code-inner js-file-line\">    private static extern int midiOutOpen(ref int handle, int deviceID, MidiCallBack proc, int instance, int flags);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L45\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"45\"><\/td>\n<td id=\"file-midiplayer-cs-LC45\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L46\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"46\"><\/td>\n<td id=\"file-midiplayer-cs-LC46\" class=\"blob-code blob-code-inner js-file-line\">    [DllImport(&quot;winmm.dll&quot;)]<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L47\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"47\"><\/td>\n<td id=\"file-midiplayer-cs-LC47\" class=\"blob-code blob-code-inner js-file-line\">    private static extern int midiOutShortMsg(int handle, int message);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L48\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"48\"><\/td>\n<td id=\"file-midiplayer-cs-LC48\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L49\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"49\"><\/td>\n<td id=\"file-midiplayer-cs-LC49\" class=\"blob-code blob-code-inner js-file-line\">    [DllImport(&quot;winmm.dll&quot;)]<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L50\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"50\"><\/td>\n<td id=\"file-midiplayer-cs-LC50\" class=\"blob-code blob-code-inner js-file-line\">    private static extern int midiOutClose(int handle);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L51\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"51\"><\/td>\n<td id=\"file-midiplayer-cs-LC51\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L52\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"52\"><\/td>\n<td id=\"file-midiplayer-cs-LC52\" class=\"blob-code blob-code-inner js-file-line\">    private delegate void MidiCallBack(int handle, int msg, int instance, int param1, int param2);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L53\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"53\"><\/td>\n<td id=\"file-midiplayer-cs-LC53\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L54\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"54\"><\/td>\n<td id=\"file-midiplayer-cs-LC54\" class=\"blob-code blob-code-inner js-file-line\">    static string Mci(string command)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L55\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"55\"><\/td>\n<td id=\"file-midiplayer-cs-LC55\" class=\"blob-code blob-code-inner js-file-line\">    {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L56\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"56\"><\/td>\n<td id=\"file-midiplayer-cs-LC56\" class=\"blob-code blob-code-inner js-file-line\">        StringBuilder reply = new StringBuilder(256);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L57\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"57\"><\/td>\n<td id=\"file-midiplayer-cs-LC57\" class=\"blob-code blob-code-inner js-file-line\">        mciSendString(command, reply, 256, System.IntPtr.Zero);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L58\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"58\"><\/td>\n<td id=\"file-midiplayer-cs-LC58\" class=\"blob-code blob-code-inner js-file-line\">        return reply.ToString();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L59\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"59\"><\/td>\n<td id=\"file-midiplayer-cs-LC59\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L60\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"60\"><\/td>\n<td id=\"file-midiplayer-cs-LC60\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L61\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"61\"><\/td>\n<td id=\"file-midiplayer-cs-LC61\" class=\"blob-code blob-code-inner js-file-line\">    void Start()<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L62\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"62\"><\/td>\n<td id=\"file-midiplayer-cs-LC62\" class=\"blob-code blob-code-inner js-file-line\">    {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L63\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"63\"><\/td>\n<td id=\"file-midiplayer-cs-LC63\" class=\"blob-code blob-code-inner js-file-line\">        var numDevs = midiOutGetNumDevs();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L64\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"64\"><\/td>\n<td id=\"file-midiplayer-cs-LC64\" class=\"blob-code blob-code-inner js-file-line\">        MidiOutCaps myCaps = new MidiOutCaps();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L65\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"65\"><\/td>\n<td id=\"file-midiplayer-cs-LC65\" class=\"blob-code blob-code-inner js-file-line\">        var res = midiOutGetDevCaps(0, ref myCaps, (System.UInt32)Marshal.SizeOf(myCaps));<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L66\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"66\"><\/td>\n<td id=\"file-midiplayer-cs-LC66\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L67\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"67\"><\/td>\n<td id=\"file-midiplayer-cs-LC67\" class=\"blob-code blob-code-inner js-file-line\">        PlayMidi();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L68\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"68\"><\/td>\n<td id=\"file-midiplayer-cs-LC68\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L69\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"69\"><\/td>\n<td id=\"file-midiplayer-cs-LC69\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L70\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"70\"><\/td>\n<td id=\"file-midiplayer-cs-LC70\" class=\"blob-code blob-code-inner js-file-line\">    static void PlayMidi()<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L71\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"71\"><\/td>\n<td id=\"file-midiplayer-cs-LC71\" class=\"blob-code blob-code-inner js-file-line\">    {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L72\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"72\"><\/td>\n<td id=\"file-midiplayer-cs-LC72\" class=\"blob-code blob-code-inner js-file-line\">        res = System.String.Empty;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L73\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"73\"><\/td>\n<td id=\"file-midiplayer-cs-LC73\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L74\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"74\"><\/td>\n<td id=\"file-midiplayer-cs-LC74\" class=\"blob-code blob-code-inner js-file-line\">        \/\/ set path to midi file here<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L75\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"75\"><\/td>\n<td id=\"file-midiplayer-cs-LC75\" class=\"blob-code blob-code-inner js-file-line\">        string filename = Application.dataPath + &quot;\/Mids\/&quot; + &quot;commando.mid&quot;;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L76\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"76\"><\/td>\n<td id=\"file-midiplayer-cs-LC76\" class=\"blob-code blob-code-inner js-file-line\">        Debug.Log(&quot;Loading midi:&quot; + filename);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L77\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"77\"><\/td>\n<td id=\"file-midiplayer-cs-LC77\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L78\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"78\"><\/td>\n<td id=\"file-midiplayer-cs-LC78\" class=\"blob-code blob-code-inner js-file-line\">        res = Mci(&quot;open \\&quot;&quot; + filename + &quot;\\&quot; alias music&quot;);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L79\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"79\"><\/td>\n<td id=\"file-midiplayer-cs-LC79\" class=\"blob-code blob-code-inner js-file-line\">        res = Mci(&quot;play music&quot;);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L80\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"80\"><\/td>\n<td id=\"file-midiplayer-cs-LC80\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L81\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"81\"><\/td>\n<td id=\"file-midiplayer-cs-LC81\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L82\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"82\"><\/td>\n<td id=\"file-midiplayer-cs-LC82\" class=\"blob-code blob-code-inner js-file-line\">    void OnDestroy()<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L83\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"83\"><\/td>\n<td id=\"file-midiplayer-cs-LC83\" class=\"blob-code blob-code-inner js-file-line\">    {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L84\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"84\"><\/td>\n<td id=\"file-midiplayer-cs-LC84\" class=\"blob-code blob-code-inner js-file-line\">        res = Mci(&quot;close music&quot;);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L85\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"85\"><\/td>\n<td id=\"file-midiplayer-cs-LC85\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L86\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"86\"><\/td>\n<td id=\"file-midiplayer-cs-LC86\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L87\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"87\"><\/td>\n<td id=\"file-midiplayer-cs-LC87\" class=\"blob-code blob-code-inner js-file-line\">    void OnDisable()<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L88\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"88\"><\/td>\n<td id=\"file-midiplayer-cs-LC88\" class=\"blob-code blob-code-inner js-file-line\">    {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L89\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"89\"><\/td>\n<td id=\"file-midiplayer-cs-LC89\" class=\"blob-code blob-code-inner js-file-line\">        res = Mci(&quot;close music&quot;);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L90\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"90\"><\/td>\n<td id=\"file-midiplayer-cs-LC90\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L91\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"91\"><\/td>\n<td id=\"file-midiplayer-cs-LC91\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-midiplayer-cs-L92\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"92\"><\/td>\n<td id=\"file-midiplayer-cs-LC92\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n<\/tr>\n<\/table>\n<\/div><\/div>\n<\/p><\/div>\n<\/div><\/div>\n<div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/unitycoder\/856af22f048f26334cd7\/raw\/f52862d1bee58c5136c1ae0ac829d4dce1ba781e\/MidiPlayer.cs\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a><br \/>\n        <a href=\"https:\/\/gist.github.com\/unitycoder\/856af22f048f26334cd7#file-midiplayer-cs\" class=\"Link--inTextBlock\"><br \/>\n          MidiPlayer.cs<br \/>\n        <\/a><br \/>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n<\/p><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Yay &#8211; Playing Midi files in unity! Notes: &#8211; Works on PC only &#8211; If you make a build, midi files wont be included automatically (unless they are in StreamingAssets folder, havent tested it though..) References: &#8211; Midi code from http:\/\/www.codeguru.com\/columns\/dotnet\/making-music-with-midi-and-c.html &#8211; MidiOutCaps c# struct [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4143,"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":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[804,3],"tags":[843,842,838,846,844,833,845,240],"class_list":["post-4142","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripts","category-unity3d","tag-load","tag-mid","tag-midi","tag-music","tag-open","tag-play","tag-read","tag-sound"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/12\/load_play_midi_file_in_unity3d.jpg?fit=589%2C210&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p1KTaT-14O","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/4142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/comments?post=4142"}],"version-history":[{"count":1,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/4142\/revisions"}],"predecessor-version":[{"id":4144,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/4142\/revisions\/4144"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media\/4143"}],"wp:attachment":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media?parent=4142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/categories?post=4142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/tags?post=4142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}