⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 conv_i_m.cpp

📁 是使用在雅马哈手机音源
💻 CPP
字号:

/*********************************************************************
  Name:       CONV_I_M.CPP
  Purpose:    Converter Input Interface via memory 
  Programmer: Yuji Hisaminato
  Date:       1999/12/13
                               Copyright (C) 1999 YAMAHA Corporation.
*********************************************************************/
/* C僶乕僕儑儞偺応崌偵曄悢傪愰尵偡傞偨傔偵昁梫 */
#define CONV_IN_MEMORY_DECLARE_MEMBER

#include <memory.h>

#include "conv_i_m.h"



// MA1梡壒怓僷儔儊乕僞丅MA1偺傾僪儗僗偵奿擺偝傟傞弴偵暲傫偱偄傞丅
// 128壒怓. 1999/12/9斉
static UINT8 Voice_parameter[1664] = {
  0x21,0x7B,0x8C,0xA0,0x31,0x57,0x8C,0x00,0x00,0x11,0x22,0x44,0xF1,	// PIANO
  0x61,0x7B,0x89,0x80,0x31,0x57,0x8C,0x00,0x30,0x31,0x62,0x00,0x71,	// BRITE PIANO
  0x71,0x7B,0x89,0x36,0x20,0x5F,0xA8,0x00,0x30,0x31,0x62,0x00,0x71,	// E GRAND PIANO
  0x3B,0x97,0xCD,0x15,0x21,0xCF,0xC0,0x00,0x00,0x11,0x22,0x44,0xF1,	// HONKY-TONK
  0x21,0x7B,0x8D,0x47,0x31,0x57,0x88,0x00,0x00,0x11,0x22,0x44,0xF1,	// ELE PIANO 1
  0xF1,0x7B,0x8D,0x67,0x21,0x57,0x88,0x00,0x00,0x71,0x72,0x00,0x61,	// ELE PIANO 2
  0xCA,0x9B,0x65,0x67,0x5B,0xDF,0x7C,0x08,0x00,0x31,0x62,0x00,0x62,	// HARPSICHORD
  0x3A,0xD7,0xE9,0x25,0x2B,0xDB,0xEC,0x08,0x00,0x11,0x22,0x44,0xF1,	// CLAVI
  0xE1,0xE7,0xD7,0xF0,0x91,0x9F,0xEC,0x00,0x00,0x71,0x72,0x74,0xE3,	// CELESTA
  0xD4,0x3F,0x5F,0x28,0x84,0xDB,0xE8,0x00,0x00,0x31,0x32,0x64,0xE3,	// GLOCKENSPIEL
  0xC0,0x37,0xFC,0xAC,0x59,0x9B,0xFC,0x00,0x00,0x31,0x62,0x00,0x62,	// MUSIC BOX
  0xB4,0x3F,0xDC,0xA8,0x95,0x1B,0xE8,0x00,0x00,0x54,0x64,0x00,0x61,	// VIBRAPHONE
  0xA2,0x77,0xA9,0x07,0x52,0x67,0xF8,0x00,0x00,0x51,0x52,0x00,0x62,	// MARIMBA
  0xE2,0x77,0x68,0xCF,0x93,0xEB,0xFC,0x00,0x00,0x71,0x72,0x74,0xE3,	// XYLOPHONE
  0x7C,0x1F,0xCD,0x94,0xB4,0x9B,0xF8,0x08,0x00,0x35,0x00,0x00,0x21,	// TUBULAR BELLS
  0x72,0x1F,0x14,0x9A,0x21,0x83,0xC0,0x00,0x30,0x31,0x62,0x00,0x71,	// DULCIMAR
  0x3B,0x27,0xC5,0x21,0x2B,0x13,0xC4,0x00,0x00,0x11,0x22,0x44,0xF1,	// DRAW ORGAN
  0x9A,0xEB,0xD5,0x41,0x2A,0xEB,0xC0,0x00,0x20,0x41,0x42,0x00,0x71,	// PERC ORGAN
  0x3A,0xF7,0x84,0x92,0x4A,0xF7,0x44,0x00,0x01,0x12,0x24,0x00,0x71,	// ROCK ORGAN
  0xC9,0xAB,0x89,0x3A,0x59,0xE2,0x84,0x00,0x00,0x31,0x62,0x00,0x62,	// CHURCH ORGN
  0x49,0xEB,0x81,0x3A,0x59,0xE2,0x80,0x00,0x00,0x11,0x22,0x44,0xF2,	// REED ORGN
  0x8B,0x6F,0x88,0x8E,0x5B,0x66,0x44,0x00,0x10,0x21,0x42,0x00,0x72,	// ACORDION
  0x5B,0x13,0x81,0x2E,0x4B,0x12,0xC0,0x00,0x00,0x11,0x22,0x44,0xF2,	// HARMONICA
  0xBA,0x53,0x41,0xD8,0x4A,0x93,0x00,0x00,0x00,0x52,0x62,0x00,0x61,	// TANGO ACD
  0x41,0xDB,0xE5,0x7E,0x32,0xDB,0xF0,0x00,0x10,0x21,0x42,0x00,0x71,	// NYLON GUITAR
  0x67,0x5B,0xE5,0x4E,0x36,0x93,0xF8,0x00,0x30,0x31,0x62,0x00,0x71,	// STEEL GUITAR
  0x7B,0x53,0xCE,0x30,0x2A,0xD3,0xFC,0x00,0x30,0x31,0x62,0x00,0x71,	// JAZZ GUITAR
  0x71,0x1F,0x89,0x56,0x2A,0x5B,0xBC,0x00,0x30,0x31,0x62,0x00,0x71,	// CLEAN GUITAR
  0x41,0xF3,0x9D,0x78,0x31,0xEB,0xD0,0x08,0x10,0x21,0x42,0x00,0x71,	// MUTED GUITAR
  0x7B,0x23,0x84,0x8C,0x2B,0x1F,0x04,0x00,0x30,0x31,0x62,0x00,0x71,	// OVERDRIVE
  0x6B,0x23,0x84,0x0D,0x3B,0x1F,0x84,0x00,0x30,0x31,0x62,0x00,0x71,	// DISTOTION GTR
  0xF3,0xC3,0x53,0xF8,0x82,0xD3,0xFC,0x00,0x00,0x00,0x72,0x74,0xC3,	// GTR HARMO
  0x1A,0x5F,0x88,0xF1,0x2A,0x5B,0x94,0x00,0x01,0x12,0x24,0x00,0x70,	// ACOUST BASS
  0x0A,0xD3,0xC9,0x65,0x1A,0x97,0xF8,0x00,0x00,0x11,0x22,0x44,0xF0,	// FINGER BASS
  0x0A,0xD7,0xBD,0x45,0x1B,0x5B,0xF0,0x00,0x00,0x11,0x22,0x44,0xF0,	// PICK BASS
  0x0A,0xD2,0xC9,0x96,0x3B,0xCF,0x34,0x00,0x01,0x12,0x24,0x00,0x70,	// FRET LESS
  0x03,0x53,0x64,0xB4,0x1B,0xDF,0x38,0x00,0x00,0x11,0x22,0x44,0xF0,	// SLAP BASS 1
  0x13,0x47,0xB8,0x33,0x0B,0xDF,0xFC,0x00,0x00,0x11,0x22,0x44,0xF0,	// SLAP BASS 2
  0x0A,0xDF,0xF8,0xB5,0x1A,0xCF,0xDC,0x00,0x00,0x11,0x22,0x44,0xF0,	// SYNTH BASS 1
  0x0A,0xD3,0xC9,0x25,0x1A,0xD3,0xC4,0x00,0x00,0x11,0x22,0x44,0xF0,	// SYNTH BASS 2
  0x5A,0xFF,0xC4,0xCC,0x4A,0xE6,0x84,0x00,0x00,0x11,0x22,0x44,0xF2,	// VIOLIN
  0x2B,0x3F,0xC5,0x1C,0x3B,0x26,0xC4,0x00,0x00,0x11,0x22,0x44,0xF1,	// VIOLA
  0x0B,0xC7,0xC4,0xEC,0x1B,0xD2,0x80,0x00,0x00,0x11,0x22,0x44,0xF0,	// CELLO
  0x09,0x53,0x84,0xD9,0x1A,0x56,0x80,0x00,0x00,0x11,0x22,0x44,0xF0,	// CONTRABASS
  0x29,0x13,0xC8,0x08,0x3A,0x7E,0x84,0x00,0x00,0x11,0x22,0x44,0xF1,	// TREM STRINGS
  0x90,0x22,0x81,0x67,0x42,0x6B,0xD4,0x00,0x10,0x21,0x42,0x00,0x72,	// PIZZ STRINGS
  0x42,0x23,0xDD,0xD8,0x31,0xDB,0xFC,0x00,0x10,0x21,0x42,0x00,0x71,	// HARP
  0x01,0x6F,0x80,0x73,0x11,0xB7,0xC0,0x00,0x00,0x11,0x22,0x44,0xF0,	// TIMPANI
  0x49,0xBF,0xC5,0x2F,0x9A,0x66,0x88,0x00,0x01,0x12,0x24,0x00,0x72,	// STRINGS 1
  0x49,0xBF,0xC5,0x6F,0x9A,0x66,0x40,0x00,0x01,0x12,0x24,0x00,0x72,	// STRINGS 2
  0xD8,0x3F,0xCD,0x36,0x8A,0x3E,0x40,0x00,0x00,0x32,0x64,0x00,0x62,	// SYN STRINGS1
  0x59,0x53,0xC9,0x86,0x4A,0x3E,0x40,0x00,0x00,0x11,0x22,0x44,0xF2,	// SYN STRINGS2
  0x2A,0x1F,0xC6,0x00,0x5A,0x36,0xC4,0x08,0x01,0x12,0x24,0x00,0x71,	// CHOIR Aahs
  0x9B,0x16,0x4D,0xF0,0x2B,0x13,0x50,0x08,0x20,0x41,0x42,0x00,0x71,	// VOICE Oohs
  0x2A,0x1E,0x81,0xE6,0x5A,0x0E,0xC0,0x08,0x01,0x12,0x24,0x00,0x71,	// SYNYH VOICE
  0x21,0x9E,0x98,0x04,0x52,0x23,0x90,0x08,0x01,0x12,0x24,0x00,0x71,	// ORCHESTRA HIT
  0x4B,0x23,0x45,0x66,0x5B,0x3F,0x40,0x00,0x00,0x11,0x22,0x44,0xF2,	// TRUMPET
  0x3B,0x23,0x05,0x46,0x2B,0x3E,0xC4,0x00,0x00,0x11,0x22,0x44,0xF1,	// TROMBONE
  0x1A,0xA7,0x05,0x46,0x0A,0x97,0x4C,0x00,0x00,0x11,0x22,0x44,0xF0,	// TUBA
  0xE8,0x2B,0x02,0x07,0x3A,0xBF,0x80,0x08,0x00,0x71,0x00,0x00,0x21,	// MUTED TRP
  0x3B,0x52,0xC1,0xB1,0x2B,0x7F,0x00,0x00,0x00,0x11,0x22,0x44,0xF1,	// FR HORN
  0x3B,0xC3,0x00,0x73,0x4B,0xDF,0x80,0x00,0x01,0x12,0x24,0x00,0x71,	// BRASS SECTION
  0x3A,0x17,0x14,0x68,0x2A,0xD3,0x04,0x00,0x00,0x11,0x22,0x44,0xF1,	// SYN BRASS 1
  0x3B,0xDE,0x8C,0xD4,0x2B,0xE7,0x84,0x00,0x00,0x11,0x22,0x44,0xF1,	// SYN BRASS 2
  0x5B,0x9F,0xC9,0x08,0x4B,0x97,0x00,0x00,0x00,0x11,0x22,0x44,0xF2,	// SOPRANO SAX
  0x2B,0x1B,0x80,0xEC,0x3B,0x17,0x00,0x00,0x00,0x11,0x22,0x44,0xF1,	// ALTO SAX
  0x2B,0x1B,0x81,0x1D,0x3B,0x17,0x40,0x00,0x00,0x11,0x22,0x44,0xF1,	// TENOR SAX
  0x0B,0xDB,0x80,0xED,0x1B,0xD7,0x00,0x00,0x00,0x11,0x22,0x44,0xF0,	// BARITONE SAX
  0x2B,0x77,0x84,0xD4,0x3B,0x7F,0x00,0x00,0x00,0x11,0x22,0x44,0xF1,	// OBOE
  0x2B,0x7F,0x44,0xBC,0x3B,0xFB,0x40,0x08,0x00,0x11,0x22,0x44,0xF1,	// ENGLISH HORN
  0x0B,0x23,0x00,0xEC,0x1B,0x12,0xC4,0x00,0x00,0x11,0x22,0x44,0xF0,	// BASSOON
  0x4B,0x3B,0x85,0x02,0x3B,0x17,0x04,0x00,0x10,0x21,0x42,0x00,0x71,	// CLARINET
  0x8B,0xE3,0x55,0x10,0x9B,0x62,0x84,0x00,0x00,0x11,0x22,0x44,0xF3,	// PICCOLO
  0x4B,0x6B,0xCD,0x87,0x5A,0x9A,0x84,0x00,0x00,0x11,0x22,0x44,0xF2,	// FLUTE
  0x4B,0x63,0x06,0x74,0x5B,0x63,0x00,0x00,0x00,0x11,0x22,0x44,0xF2,	// RECORDER
  0x4A,0xDF,0x4D,0x9B,0x5B,0x66,0x80,0x00,0x00,0x11,0x22,0x44,0xF2,	// PAN FLUTE
  0x3A,0xDF,0x7C,0xB3,0x2B,0x66,0x40,0x00,0x00,0x11,0x22,0x44,0xF1,	// BOTTLE
  0x22,0x67,0xFC,0x07,0x3A,0x26,0xC0,0x00,0x00,0x11,0x22,0x44,0xF1,	// SHAKUHACHI
  0x4B,0xE1,0xD6,0xC0,0x5B,0x67,0x00,0x00,0x00,0x11,0x22,0x44,0xF2,	// WHISTLE
  0x4B,0xE3,0x03,0xF0,0x59,0x9B,0x84,0x00,0x00,0x11,0x22,0x44,0xF2,	// OCARINA
  0x9B,0x3F,0xC1,0x98,0x4B,0x3F,0xC0,0x00,0x10,0x21,0x42,0x00,0x72,	// SQUARE LEAD
  0x7B,0xFF,0xC2,0x18,0x2B,0xFF,0xC0,0x08,0x00,0x31,0x62,0x00,0x61,	// SAW LEAD
  0x3A,0x1F,0x55,0xB7,0x2A,0xDE,0xC0,0x00,0x00,0x11,0x22,0x44,0xF1,	// CALIOP LEAD
  0x39,0x66,0xD4,0x50,0x2B,0x67,0x8C,0x00,0x00,0x11,0x22,0x44,0xF1,	// CHIFF LEAD
  0x5B,0x26,0x8D,0x0D,0x2B,0x26,0x84,0x08,0x10,0x21,0x42,0x00,0x71,	// CHARANG LEAD
  0x4B,0x3F,0xC5,0x80,0x3B,0x3E,0xC4,0x08,0x10,0x21,0x42,0x00,0x71,	// VOICE LEAD
  0xF8,0x2A,0x81,0x9F,0x2A,0xBF,0x80,0x08,0x00,0x71,0x00,0x00,0x21,	// FIFTH LEAD
  0x3A,0xBB,0x40,0xC8,0x2A,0x97,0x80,0x00,0x00,0x11,0x22,0x44,0xF1,	// BASS & LEAD
  0xFB,0xFF,0x4E,0xB9,0x2A,0x17,0xC0,0x00,0x00,0x71,0x72,0x00,0x61,	// NEW AGE PAD
  0x29,0x2F,0x85,0x85,0x39,0x52,0x00,0x00,0x00,0x11,0x22,0x44,0xF1,	// WARM PAD
  0x39,0xD3,0xCD,0x76,0x2A,0x63,0xC4,0x00,0x00,0x11,0x22,0x44,0xF1,	// POLYSYN PAD
  0x29,0x9E,0x81,0x90,0x59,0xB6,0xC0,0x00,0x01,0x12,0x24,0x00,0x71,	// CHOIR PAD
  0x39,0x92,0x12,0x05,0x4A,0x17,0x0C,0x00,0x01,0x12,0x24,0x00,0x71,	// BOWED PAD
  0x5A,0x93,0x9C,0xE8,0x2A,0x92,0x50,0x08,0x10,0x21,0x42,0x00,0x71,	// METAL PAD
  0x3A,0x4F,0xBD,0xF7,0x2A,0x4E,0xC0,0x08,0x00,0x11,0x22,0x44,0xF1,	// HALO PAD
  0x28,0x41,0x80,0x98,0x38,0xC5,0x40,0x00,0x00,0x11,0x22,0x44,0xF1,	// SWEEP PAD
  0xFA,0x6F,0xE0,0xE1,0x21,0xEF,0x40,0x00,0x00,0x71,0x72,0x00,0x61,	// RAIN
  0xF8,0xDA,0xF5,0x1B,0x29,0x8E,0x04,0x00,0x00,0x71,0x72,0x00,0x61,	// SOUND TRACK
  0xCF,0xC2,0xEF,0xF2,0x95,0x9B,0xE4,0x08,0x00,0x32,0x64,0x00,0x62,	// CRYSTAL
  0x42,0x23,0x5D,0x38,0x31,0xDB,0xFC,0x00,0x10,0x21,0x42,0x00,0x71,	// ATMOSPHERE
  0x64,0x3F,0xDC,0xB8,0x55,0x1B,0xE8,0x00,0x00,0x32,0x64,0x00,0x61,	// BRIGHT
  0x3D,0x15,0x60,0x9B,0x6D,0x11,0x44,0x00,0x00,0x13,0x26,0x00,0x61,	// GOBLINS
  0x29,0x93,0x4D,0x00,0x39,0xBF,0x00,0x00,0x00,0x11,0x22,0x44,0xF1,	// ECHOES
  0x29,0x53,0xC9,0x46,0x3A,0x1E,0x9C,0x00,0x00,0x11,0x22,0x44,0xF1,	// Sci-Fi
  0x41,0x97,0xD4,0x50,0xF2,0x57,0xFC,0x08,0x00,0x27,0x00,0x00,0x21,	// SITAR
  0x21,0x1B,0x84,0x78,0x72,0x23,0xBC,0x00,0x03,0x13,0x26,0x00,0x71,	// BANJO
  0x41,0x27,0xD0,0x6A,0x50,0xE7,0xFC,0x08,0x00,0x11,0x22,0x44,0xF2,	// SHAMISEN
  0x71,0x5F,0xCD,0x14,0x25,0x9F,0xA0,0x08,0x30,0x31,0x62,0x00,0x71,	// KOTO
  0x82,0x77,0xD5,0x56,0x32,0x17,0xC0,0x00,0x20,0x41,0x42,0x00,0x71,	// KALIMBA
  0x3B,0xFF,0x08,0x93,0x4B,0xFE,0xC0,0x08,0x01,0x12,0x24,0x00,0x71,	// BAGPIPE
  0x39,0xFF,0xCC,0x5D,0x2A,0x66,0x84,0x00,0x00,0x11,0x22,0x44,0xF1,	// FIDDLE
  0x3B,0xB7,0xC0,0x4B,0x4B,0xBF,0x40,0x00,0x01,0x12,0x24,0x00,0x71,	// SHANAI
  0xE2,0x13,0xFA,0x24,0xB0,0xDB,0xE8,0x00,0x00,0x75,0x00,0x00,0x21,	// TINKLE BELL
  0xE2,0x7F,0xC5,0x55,0x52,0x2B,0xC4,0x00,0x00,0x71,0x72,0x00,0x62,	// AGOGO
  0xA2,0x2A,0xCD,0xD4,0x32,0x3F,0xC0,0x00,0x50,0x51,0x52,0x00,0x71,	// STEEL DRUM
  0xE2,0xF7,0xC9,0x65,0x42,0x2F,0xF8,0x00,0x00,0x71,0x72,0x00,0x62,	// WOODBLOCK
  0x02,0xAF,0x80,0x63,0x01,0xB7,0xC0,0x00,0x00,0x11,0x22,0x44,0xF0,	// TAIKO DRUM
  0x22,0xAF,0xD0,0x0E,0x02,0x1B,0xC0,0x00,0x00,0x10,0x21,0x42,0xE1,	// MELODIC TOM
  0x02,0x7F,0xC0,0x97,0x01,0x23,0xFC,0x00,0x00,0x11,0x22,0x44,0xF0,	// SYNTH DRUM
  0xE0,0x3F,0xC0,0x0F,0xC3,0xFD,0xBC,0x00,0x76,0x00,0x00,0x00,0x10,	// REV CYMBAL
  0xE0,0x22,0x81,0x37,0x82,0x6A,0x94,0x00,0x00,0x74,0x00,0x00,0x21,	// GTR FRETNOISE
  0x32,0x53,0xFC,0xC7,0x22,0xAA,0xD0,0x00,0x00,0x11,0x00,0x00,0x21,	// BREATH NOISE
  0xE8,0x03,0xC0,0x07,0x09,0x99,0x6C,0x00,0x00,0x70,0x00,0x00,0x21,	// SEASHORE
  0x92,0x7A,0x7D,0xA0,0x82,0x2F,0x88,0x00,0x00,0x44,0x00,0x00,0x21,	// BIRD TWEET
  0xE4,0x3F,0xDC,0x08,0x44,0x97,0xE8,0x00,0x00,0x72,0x00,0x00,0x21,	// TELEPHONE
  0x00,0x1F,0xC0,0x07,0x83,0xFE,0xBC,0x08,0x00,0x04,0x00,0x00,0x21,	// HELICOPTER
  0xE8,0x03,0xC0,0x97,0xE9,0x0E,0xC0,0x00,0x00,0x77,0x00,0x00,0x21,	// APPLAUSE
  0x6C,0x03,0xFC,0xA7,0x65,0x67,0xFC,0x00,0x00,0x33,0x00,0x00,0x21	// GUNSHOT
};


#if defined(mycplusplus)
void CONV_IN_MEMORY_CLASS_CC conv_in_init(void){
  m_is_opened = false;
  m_pos = 0;
  m_eof = false;
}
#else
void CONV_IN_MEMORY_CLASS_CC conv_in_init(Conv_in *pconv_in){
  m_is_opened = false;
  m_pos = 0;
  m_eof = false;
  /* 儕僜乕僗娭悢傊偺億僀儞僞傪愝掕偡傞丅*/
  pconv_in->output_data = &output_data;
  pconv_in->seek_data = &seek_data;
  pconv_in->output_voice_parameter = &output_voice_parameter;
}
#endif


#if defined(mycplusplus)
CONV_IN_MEMORY_CLASS_CC Conv_in_memory(){
  conv_in_init();
}

CONV_IN_MEMORY_CLASS_CC ~Conv_in_memory(){

}
#endif

CONV_IN_M_RESULT CONV_IN_MEMORY_CLASS_CC conv_in_memory_open( // 撉傒崬傒儌乕僪偱奐偔
  UINT8 *pdata,     // 擖椡尦偺僨乕僞偑奿擺偝傟偰偄傞応強偺愭摢偺億僀儞僞
  UINT32 size       // pdata偵奿擺偝傟偰偄傞僨乕僞偺悢乮僶僀僩乯
){
  m_pdata = pdata;
  m_size = size;
  m_is_opened = true;
  seek_data(0);
  return CONV_IN_M_R_SUCCESSFUL;
}

// 儊儌儕忋偺僨乕僞傪Converter偵弌椡偡傞丅
// 擖椡僶僢僼傽傪挻偊傞僒僀僘偺梫媮偑棃偨応崌偵偼丄僶僢僼傽偵巆偭偰偄傞
// 偡傋偰偺僨乕僞傪曉偡丅
CONV_IN_STATIC bool CONV_IN_MEMORY_CLASS_CC output_data(  // 曄姺梡僋儔僗偑屇傃弌偝傟偰丄僨乕僞傪弌椡偡傞丅
  UINT8 *pdata,      // 撉傒崬傫偩僨乕僞傪奿擺偡傞偨傔偺僶僢僼傽丅
                      // 屇傃弌偟懁偱儊儌儕偼帠慜偵妋曐偝傟偰偄側偗傟偽側傜側偄丅
  UINT32 count,       // buffer偵撉傒崬傓僶僀僩悢
  UINT32 *read_count  // output:幚嵺偵撉傒崬傫偩僶僀僩悢丅
){
  if (m_pos >= m_size){
    *read_count = 0;
    return false;   // Buffer overflow!
  }
  if (m_pos + count > m_size) count = m_size-m_pos;
  memcpy(pdata,m_pdata+m_pos,count);
  m_pos += count;
  *read_count = count;
  return true;
}

// 撉傒崬傒奐巒埵抲傪pos偵堏摦偡傞丅
CONV_IN_STATIC bool CONV_IN_MEMORY_CLASS_CC seek_data(UINT32 pos){
  m_pos = pos;
  m_eof = false;
  return true;
}

// 
CONV_IN_STATIC bool CONV_IN_MEMORY_CLASS_CC output_voice_parameter(
  UINT8 voice_number, // 壒怓斣崋
  UINT8 bank_number,  // 壒怓僶儞僋
  void ** ppdata      // 壒怓僷儔儊乕僞偑曐懚偝傟偰偄傞丄擟堄偺峔憿懱傑偨
                      // 偼攝楍偺丄愭摢偺億僀儞僞偺億僀儞僞
){

  if(voice_number >= 128) return false; // 尰忬偱偼0偐傜127傑偱懳墳
  if(bank_number >= 128) return false; // 尰忬偱偼0偐傜127傑偱懳墳
  if(bank_number >= 1) bank_number = 0;
  *ppdata = Voice_parameter + 13*voice_number;
  return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -