프로그래밍 기술/미디 파일 구조 및 미디 분석 프로그램 만들기

[미디 파일] 미디 파일 구조 분석 및 프로그래밍 7 - 컨트롤 번호

언제나휴일 2018. 4. 18. 12:48
반응형

[미디 파일] 미디 파일 구조 분석 및 프로그래밍 7 - 컨트롤 번호



 안녕하세요. 언제나 휴일, 언휴예요.


 우리는 앞에서 미디 파일의 구조를 알아보고 이를 분석하는 프로그래밍에 관한 소스 코드를 알아 보았어요.

[미디 파일] 미디 파일 구조 분석 및 프로그래밍 1 - 청크 목록

[미디 파일] 미디 파일 구조 분석 및 프로그래밍 2 - Head 청크, Mthd

[미디 파일] 미디 파일 구조 분석 및 프로그래밍 3 - Track 청크 1, delta time 구하기

[미디 파일] 미디 파일 구조 분석 및 프로그래밍 4 - Track 청크 2, Meta Event

[미디 파일] 미디 파일 구조 분석 및 프로그래밍 5 - Track 청크 3, 박자, 키 정보 등

[미디 파일] 미디 파일 구조 분석 및 프로그래밍 6 - Track 청크 4, 미디 이벤트 분할


 이번에는 미디 파일에서 Control Change에 사용하는 컨트롤 번호와 이에 대응하는 내용을 문자열 배열로 정의한 소스 코드입니다. 여기에서는 컨트롤 번호를 입력 인자로 받아 컨트롤 내용을 반환하는 메서드를 제공하고 있습니다.


*상태 바이트의 값이 0xBX일 때 미디 이벤트 중에서 Control Change라고 하였습니다. 이 때 컨트롤 번호에 따라 어떠한 컨트롤에 관한 것인지를 나타낼 필요가 있습니다. 이를 위한 코드입니다. 여러분께서는 이러한 부분을 포함하에 보다 상세하게 분석 정보를 제공하는 프로그램으로 발전시켜 보세요.*

BX Control Value : Control Change


     public static class StaticFuns

    {


        static string[] control_str = new string[]

            {

            "0 Bank Select",

            "1 Modulation Wheel",

            "2 Breath controller",

            "3 Undefined",

            "4 Foot Pedal",

            "5 Portamento Time",

            "6 Data Entry",

            "7 Volume",

            "8 Balance",

            "9 Undefined",

            "10 Pan position",

            "11 Expression",

            "12 Effect Control 1",

            "13 Effect Control 2",

            "14 Undefined",

            "15 Undefined",

            "16 Ribbon Controller or General Purpose Slider 1",

            "17 Knob 1 or General Purpose Slider 2",

            "18 General Purpose Slider 3",

            "19 Knob 2 General Purpose Slider 4",

            "20 Knob 3 or Undefined",

            "21 Knob 4 or Undefined",

            "22 Undefined",

            "23 Undefined",

            "24 Undefined",

            "25 Undefined",

            "26 Undefined",

            "27 Undefined",

            "28 Undefined",

            "29 Undefined",

            "30 Undefined",

            "31 Undefined",

            "32 Bank Select",

            "33 Modulation Wheel",

            "34 Breath controller",

            "35 Undefined",

            "36 Foot Pedal",

            "37 Portamento Time",

            "38 Data Entry",

            "39 Volume",

            "40 Balance",

            "41 Undefined",

            "42 Pan position",

            "43 Expression",

            "44 Effect Control 1",

            "45 Effect Control 2",

            "46 Undefined",

            "47 Undefined",

            "48 Undefined",

            "49 Undefined",

            "50 Undefined",

            "51 Undefined",

            "52 Undefined",

            "53 Undefined",

            "54 Undefined",

            "55 Undefined",

            "56 Undefined",

            "57 Undefined",

            "58 Undefined",

            "59 Undefined",

            "60 Undefined",

            "61 Undefined",

            "62 Undefined",

            "63 Undefined",

            "64 Hold Pedal(on/off)",

            "65 Portamento(on/off)",

            "66 Sustenuto Pedal(on/off)",

            "67 Soft Pedal(on/off)",

            "68 Legato Pedal(on/off)",

            "69 Hold 2 Pedal(on/off)",

            "70 Sound Variation",

            "71 Resonance(aka Timbre)",

            "72 Sound Release Time",

            "73 Sound Attack Time",

            "74 Frequency Cutoff(aka Brightness)",

            "75 Sound Control 6",

            "76 Sound Control 7",

            "77 Sound Control 8",

            "78 Sound Control 9",

            "79 Sound Control 10",

            "80 Decay or General Purpose Button 1 (on/off)",

            "81 Hi Pass Filter Frequency or General Purpose Button 2 (on/off)",

            "82 General Purpose Button 3 (on/off) Roland Tone level 3",

            "83 General Purpose Button 4 (on/off) Roland Tone level 4",

            "84 Undefined",

            "85 Undefined",

            "86 Undefined",

            "87 Undefined",

            "88 Undefined",

            "89 Undefined",

            "90 Undefined",

            "91 Reverb Level",

            "92 Tremolo Level",

            "93 Chorus Level",

            "94 Celeste Level or Detune",

            "95 Phaser Level",

            "96 Data Button increment",

            "97 Data Button decrement",

            "98 Non-registered Parameter",

            "99 Non-registered Parameter",

            "100 Registered Parameter",

            "101 Registered Parameter",

                "102 Undefined",

                "103 Undefined",

                "104 Undefined",

                "105 Undefined",

                "106 Undefined",

                "107 Undefined",

                "108 Undefined",

                "109 Undefined",

                "110 Undefined",

                "111 Undefined",

                "112 Undefined",

                "113 Undefined",

                "114 Undefined",

                "115 Undefined",

                "116 Undefined",

                "117 Undefined",

                "118 Undefined",

                "119 Undefined",

            "120 All Sound Off",

            "121 All Controllers Off",

            "122 Local Keyboard(on/off)",

            "123 All Notes Off",

            "124 Omni Mode Off",

            "125 Omni Mode On",

            "126 Mono Operation",

            "127 Poly Operation"

        };

        public static string GetControlStr(byte index)

        {

            return control_str[index&0x7F];

        }

 

        ...중략...

    }


반응형