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

📄 mmf2ma1.cpp

📁 是使用在雅马哈手机音源
💻 CPP
📖 第 1 页 / 共 5 页
字号:

/*********************************************************************
  Name:       MMF2MA1.C
  Purpose:    Convert MMF to MA1 
  Programmer: Yuji Hisaminato
  Date:       1999/12/13
                               Copyright (C) 1999 YAMAHA Corporation.
*********************************************************************/
#include <memory.h>
#include <assert.h>

/* C僶乕僕儑儞偺応崌偵曄悢傪愰尵偡傞偨傔偵昁梫 */
#define MMF2MA1_DECLARE_MEMBER


#include "machdep.h"  // defines machine dependent types such as INT16
#include "mmf2ma1.h" // defines 


#ifdef TEMPO_TEST
int Tempo_register;
#endif

#ifdef _DEBUG
#include <stdio.h>
static char *mmf_note_str_table[16]
  = {"inhibit","C#","D","D#","E","F","F#","G","G#","A","A#","B","C","inhibit","inhibit","inhibit"};
static char *ma1_note_str_table[16]
  = {"inhibit","C#","D","D#","inhibit","E","F","F#","inhibit","G","G#","A","inhibit","A#","B","C"};
#endif

// TimeBase_D, TimeBase_G偺抣偲偦偺抣偺偁傜傢偡幚帪娫[ms]偺懳墳昞
static UINT8 Timebase_table[32] ={
  1,2,4,5,0,0,0,0,0,0,0,0,0,0,0,0,
  10,20,40,50,0,0,0,0,0,0,0,0,0,0,0,0
};

// 0偐傜11偱昞尰偟偨C#偐傜C傑偱傪丄MA1偺NT3-0偵傛傞昞尰偵曄姺偡傞僥乕僽儖
static UINT8 Key_table[12] = {1,2,3,5,6,7,9,10,11,13,14,15};

// TI3-0偺儗僕僗僞抣偐傜幚嵺偺僀儞僞乕僶儖[僗僥僢僾]傪摼傞僥乕僽儖
static UINT8 Ti2value[16] = {0,2,3,4,6,8,9,12,18,24,48,0,16,24,36,48};

static UINT8 Tk2value[2][8] = {
  {1,2,3,5,7,8,11,17},      // TI = 0x00 - 0x0a
  {15,23,29,32,35,41,47,56} // TI = 0x0b - 0x0f
}; 

// 僀儞僞乕僶儖丄僎乕僩帪娫偐傜儗僕僗僞抣傊偺曄姺昞
// TITK_DATA 偺{x,y,z}偺儁傾偺偆偪x,y偮傑傝ti,tk偼侾僶僀僩偵廂傔傞偙偲偑
// 偱偒傞偺偱俀乛俁偵偼僒僀僘傪埑弅偱偒傞丅
static MMF2MA1_TI_TK_DATA ti_tk_table[26][50] = {
  //0          1           2           3           4           5           6           7           8           9            10         11          12          13          14          15          16          17          18          19          20          21          22          23          24          25          26          27          28          29          30          31          32          33          34          35          36          37          38          39          40          41          42          43          44          45          46          47          48          49 
  {{0x0,0x0,0},{0x0,0x0,0},{0x0,0x1,0},{0x0,0x2,0},{0x0,0x7,1},{0x0,0x3,0},{0x0,0x7,1},{0x0,0x4,0},{0x0,0x5,0},{0x0,0x7,1},{0x0,0x7,1},{0x0,0x6,0},{0x0,0x7,1},{0x0,0x7,1},{0x0,0x7,1},{0xB,0x0,0},{0x0,0x7,1},{0x0,0x7,0},{0xB,0x1,1},{0xB,0x1,1},{0xB,0x1,1},{0xB,0x1,1},{0xB,0x1,1},{0xB,0x1,0},{0xB,0x2,1},{0xB,0x2,1},{0xB,0x2,1},{0xB,0x2,1},{0xB,0x2,1},{0xB,0x2,0},{0xB,0x3,1},{0xB,0x3,1},{0xB,0x3,0},{0xB,0x4,1},{0xB,0x4,1},{0xB,0x4,0},{0xB,0x5,1},{0xB,0x5,1},{0xB,0x5,1},{0xB,0x5,1},{0xB,0x5,1},{0xB,0x5,0},{0xB,0x6,1},{0xB,0x6,1},{0xB,0x6,1},{0xB,0x6,1},{0xB,0x6,1},{0xB,0x6,0},{0xB,0x7,1},{0xB,0x7,1}},
  {{0x1,0x0,0},{0x1,0x0,0},{0x1,0x1,0},{0x1,0x2,0},{0x1,0x7,1},{0x1,0x3,0},{0x1,0x7,1},{0x1,0x4,0},{0x1,0x5,0},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x6,0},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1},{0x1,0x7,1}},
  {{0x3,0x0,0},{0x3,0x0,0},{0x3,0x1,0},{0x3,0x2,0},{0x1,0x7,1},{0x3,0x3,0},{0x3,0x7,1},{0x3,0x4,0},{0x3,0x5,0},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x6,0},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1},{0x3,0x7,1}},
  {{0x4,0x0,0},{0x4,0x0,0},{0x4,0x1,0},{0x4,0x2,0},{0x1,0x7,1},{0x4,0x3,0},{0x3,0x7,1},{0x4,0x4,0},{0x4,0x5,0},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x6,0},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1},{0x4,0x7,1}},
  {{0x5,0x0,0},{0x5,0x0,0},{0x5,0x1,0},{0x5,0x2,0},{0x1,0x7,1},{0x5,0x3,0},{0x3,0x7,1},{0x5,0x4,0},{0x5,0x5,0},{0x4,0x7,1},{0x5,0x7,1},{0x5,0x6,0},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1}},
  {{0x5,0x0,2},{0x1,0x0,2},{0x1,0x1,2},{0x3,0x2,2},{0x1,0x7,1},{0x4,0x3,2},{0x3,0x7,1},{0x5,0x4,2},{0x5,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1}},
  {{0x7,0x0,0},{0x7,0x0,0},{0x7,0x1,0},{0x7,0x2,0},{0x1,0x7,1},{0x7,0x3,0},{0x3,0x7,1},{0x7,0x4,0},{0x7,0x5,0},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x6,0},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1}},
  {{0x7,0x0,2},{0x7,0x0,2},{0x7,0x1,2},{0x7,0x2,2},{0x1,0x7,1},{0x7,0x3,2},{0x3,0x7,1},{0x7,0x4,2},{0x7,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x6,2},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1}},
  {{0xC,0x0,0},{0x7,0x0,2},{0x7,0x1,2},{0x7,0x2,2},{0x1,0x7,1},{0x7,0x3,2},{0x3,0x7,1},{0x7,0x4,2},{0x7,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x6,2},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x0,0},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x1,0},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x2,0},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x3,0},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x4,0},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x5,0},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x6,0},{0xC,0x7,1},{0xC,0x7,1}},
  {{0x8,0x0,0},{0x8,0x0,0},{0x8,0x1,0},{0x8,0x2,0},{0x1,0x7,1},{0x8,0x3,0},{0x3,0x7,1},{0x8,0x4,0},{0x8,0x5,0},{0x5,0x7,1},{0x5,0x7,1},{0x8,0x6,0},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1}},
  {{0x8,0x0,2},{0x8,0x0,2},{0x8,0x1,2},{0x8,0x2,2},{0x1,0x7,1},{0x8,0x3,2},{0x3,0x7,1},{0x8,0x4,2},{0x8,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x8,0x6,2},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1}},
  {{0x8,0x0,2},{0x8,0x0,2},{0x8,0x1,2},{0x8,0x2,2},{0x1,0x7,1},{0x8,0x3,2},{0x3,0x7,1},{0x8,0x4,2},{0x8,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x8,0x6,2},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1}},
  {{0x9,0x0,0},{0x9,0x0,0},{0x9,0x1,0},{0x9,0x2,0},{0x1,0x7,1},{0x9,0x3,0},{0x3,0x7,1},{0x9,0x4,0},{0x9,0x5,0},{0x5,0x7,1},{0x5,0x7,1},{0x8,0x6,2},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xD,0x0,0},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xD,0x1,0},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x2,0},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x3,0},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x4,0},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x5,0},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x6,0},{0xD,0x7,1},{0xD,0x7,1}},
  {{0x9,0x0,2},{0x9,0x0,2},{0x9,0x1,2},{0x9,0x2,2},{0x1,0x7,1},{0x9,0x3,2},{0x3,0x7,1},{0x9,0x4,2},{0x9,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1}},
  {{0x9,0x0,2},{0x9,0x0,2},{0x9,0x1,2},{0x9,0x2,2},{0x1,0x7,1},{0x9,0x3,2},{0x3,0x7,1},{0x9,0x4,2},{0x9,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1}},
  {{0x9,0x0,2},{0x9,0x0,2},{0x9,0x1,2},{0x9,0x2,2},{0x1,0x7,1},{0x9,0x3,2},{0x3,0x7,1},{0x9,0x4,2},{0x9,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1}},
  {{0x9,0x0,2},{0x9,0x0,2},{0x9,0x1,2},{0x9,0x2,2},{0x1,0x7,1},{0x9,0x3,2},{0x3,0x7,1},{0x9,0x4,2},{0x9,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1}},
  {{0x9,0x0,2},{0x9,0x0,2},{0x9,0x1,2},{0x9,0x2,2},{0x1,0x7,1},{0x9,0x3,2},{0x3,0x7,1},{0x9,0x4,2},{0x9,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1}},
  {{0xE,0x0,0},{0x9,0x0,2},{0x9,0x1,2},{0x9,0x2,2},{0x1,0x7,1},{0x9,0x3,2},{0x3,0x7,1},{0x9,0x4,2},{0x9,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xE,0x0,0},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xE,0x1,0},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xE,0x2,0},{0xD,0x7,1},{0xD,0x7,1},{0xE,0x3,0},{0xD,0x7,1},{0xD,0x7,1},{0xE,0x4,0},{0xD,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x5,0},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x6,0},{0xE,0x7,1},{0xE,0x7,1}},
  {{0xE,0x0,2},{0x9,0x0,2},{0x9,0x1,2},{0x9,0x2,2},{0x1,0x7,1},{0x9,0x3,2},{0x3,0x7,1},{0x9,0x4,2},{0x9,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1}},
  {{0xE,0x0,2},{0x9,0x0,2},{0x9,0x1,2},{0x9,0x2,2},{0x1,0x7,1},{0x9,0x3,2},{0x3,0x7,1},{0x9,0x4,2},{0x9,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1}},
  {{0xE,0x0,2},{0x9,0x0,2},{0x9,0x1,2},{0x9,0x2,2},{0x1,0x7,1},{0x9,0x3,2},{0x3,0x7,1},{0x9,0x4,2},{0x9,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1}},
  {{0xE,0x0,2},{0x9,0x0,2},{0x9,0x1,2},{0x9,0x2,2},{0x1,0x7,1},{0x9,0x3,2},{0x3,0x7,1},{0x9,0x4,2},{0x9,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1}},
  {{0xE,0x0,2},{0x9,0x0,2},{0x9,0x1,2},{0x9,0x2,2},{0x1,0x7,1},{0x9,0x3,2},{0x3,0x7,1},{0x9,0x4,2},{0x9,0x5,2},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1}},
  {{0xA,0x0,0},{0xA,0x0,0},{0xA,0x1,0},{0xA,0x2,0},{0x1,0x7,1},{0xA,0x3,0},{0x3,0x7,1},{0xA,0x4,0},{0xA,0x5,0},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xF,0x0,0},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xF,0x1,0},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xF,0x2,0},{0xD,0x7,1},{0xD,0x7,1},{0xF,0x3,0},{0xD,0x7,1},{0xD,0x7,1},{0xF,0x4,0},{0xD,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xF,0x5,0},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xF,0x6,0},{0xE,0x7,1},{0xF,0x7,1}},
  {{0xA,0x0,1},{0xA,0x0,1},{0xA,0x1,1},{0xA,0x2,1},{0x1,0x7,1},{0xA,0x3,1},{0x3,0x7,1},{0xA,0x4,1},{0xA,0x5,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x5,0x7,1},{0x7,0x7,1},{0x7,0x7,1},{0xF,0x0,1},{0x7,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xC,0x7,1},{0xF,0x1,1},{0xC,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xD,0x7,1},{0xF,0x2,1},{0xD,0x7,1},{0xD,0x7,1},{0xF,0x3,1},{0xD,0x7,1},{0xD,0x7,1},{0xF,0x4,1},{0xD,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xF,0x5,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xE,0x7,1},{0xF,0x6,1},{0xE,0x7,1},{0xF,0x7,1}}
};

// Table for conversion from MMF volume to MA1 volume
static UINT8 Mmfvol2ma1vol[128] ={
  0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3d,  // 0-9
  0x3a,0x38,0x36,0x34,0x33,0x31,0x30,0x2e,0x2d,0x2c,  // 10-19
  0x2b,0x2a,0x29,0x28,0x27,0x26,0x25,0x24,0x23,0x22,  // 20-29
  0x21,0x21,0x20,0x1f,0x1f,0x1e,0x1d,0x1d,0x1c,0x1b,  // 30-39
  0x1b,0x1a,0x1a,0x19,0x19,0x18,0x18,0x17,0x17,0x16,  // 40-49
  0x16,0x15,0x15,0x14,0x14,0x13,0x13,0x13,0x12,0x12,  // 50-59
  0x11,0x11,0x11,0x10,0x10,0x10,0x0f,0x0f,0x0e,0x0e,  // 60-69
  0x0e,0x0d,0x0d,0x0d,0x0d,0x0c,0x0c,0x0c,0x0b,0x0b,  // 70-79
  0x0b,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x09,0x08,0x08,  // 80-89
  0x08,0x08,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,  // 90-99
  0x06,0x05,0x05,0x05,0x05,0x04,0x04,0x04,0x04,0x04,  // 100-109
  0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x02,  // 110-119
  0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00             // 120-127
};

static UINT16 CRC_table[256] = {
  0x0000U,0x1021U,0x2042U,0x3063U,0x4084U,0x50A5U,0x60C6U,0x70E7U,
  0x8108U,0x9129U,0xA14AU,0xB16BU,0xC18CU,0xD1ADU,0xE1CEU,0xF1EFU,
  0x1231U,0x0210U,0x3273U,0x2252U,0x52B5U,0x4294U,0x72F7U,0x62D6U,
  0x9339U,0x8318U,0xB37BU,0xA35AU,0xD3BDU,0xC39CU,0xF3FFU,0xE3DEU,
  0x2462U,0x3443U,0x0420U,0x1401U,0x64E6U,0x74C7U,0x44A4U,0x5485U,
  0xA56AU,0xB54BU,0x8528U,0x9509U,0xE5EEU,0xF5CFU,0xC5ACU,0xD58DU,
  0x3653U,0x2672U,0x1611U,0x0630U,0x76D7U,0x66F6U,0x5695U,0x46B4U,
  0xB75BU,0xA77AU,0x9719U,0x8738U,0xF7DFU,0xE7FEU,0xD79DU,0xC7BCU,
  0x48C4U,0x58E5U,0x6886U,0x78A7U,0x0840U,0x1861U,0x2802U,0x3823U,
  0xC9CCU,0xD9EDU,0xE98EU,0xF9AFU,0x8948U,0x9969U,0xA90AU,0xB92BU,
  0x5AF5U,0x4AD4U,0x7AB7U,0x6A96U,0x1A71U,0x0A50U,0x3A33U,0x2A12U,
  0xDBFDU,0xCBDCU,0xFBBFU,0xEB9EU,0x9B79U,0x8B58U,0xBB3BU,0xAB1AU,
  0x6CA6U,0x7C87U,0x4CE4U,0x5CC5U,0x2C22U,0x3C03U,0x0C60U,0x1C41U,
  0xEDAEU,0xFD8FU,0xCDECU,0xDDCDU,0xAD2AU,0xBD0BU,0x8D68U,0x9D49U,
  0x7E97U,0x6EB6U,0x5ED5U,0x4EF4U,0x3E13U,0x2E32U,0x1E51U,0x0E70U,
  0xFF9FU,0xEFBEU,0xDFDDU,0xCFFCU,0xBF1BU,0xAF3AU,0x9F59U,0x8F78U,
  0x9188U,0x81A9U,0xB1CAU,0xA1EBU,0xD10CU,0xC12DU,0xF14EU,0xE16FU,
  0x1080U,0x00A1U,0x30C2U,0x20E3U,0x5004U,0x4025U,0x7046U,0x6067U,
  0x83B9U,0x9398U,0xA3FBU,0xB3DAU,0xC33DU,0xD31CU,0xE37FU,0xF35EU,
  0x02B1U,0x1290U,0x22F3U,0x32D2U,0x4235U,0x5214U,0x6277U,0x7256U,
  0xB5EAU,0xA5CBU,0x95A8U,0x8589U,0xF56EU,0xE54FU,0xD52CU,0xC50DU,
  0x34E2U,0x24C3U,0x14A0U,0x0481U,0x7466U,0x6447U,0x5424U,0x4405U,
  0xA7DBU,0xB7FAU,0x8799U,0x97B8U,0xE75FU,0xF77EU,0xC71DU,0xD73CU,
  0x26D3U,0x36F2U,0x0691U,0x16B0U,0x6657U,0x7676U,0x4615U,0x5634U,
  0xD94CU,0xC96DU,0xF90EU,0xE92FU,0x99C8U,0x89E9U,0xB98AU,0xA9ABU,
  0x5844U,0x4865U,0x7806U,0x6827U,0x18C0U,0x08E1U,0x3882U,0x28A3U,
  0xCB7DU,0xDB5CU,0xEB3FU,0xFB1EU,0x8BF9U,0x9BD8U,0xABBBU,0xBB9AU,
  0x4A75U,0x5A54U,0x6A37U,0x7A16U,0x0AF1U,0x1AD0U,0x2AB3U,0x3A92U,
  0xFD2EU,0xED0FU,0xDD6CU,0xCD4DU,0xBDAAU,0xAD8BU,0x9DE8U,0x8DC9U,
  0x7C26U,0x6C07U,0x5C64U,0x4C45U,0x3CA2U,0x2C83U,0x1CE0U,0x0CC1U,
  0xEF1FU,0xFF3EU,0xCF5DU,0xDF7CU,0xAF9BU,0xBFBAU,0x8FD9U,0x9FF8U,
  0x6E17U,0x7E36U,0x4E55U,0x5E74U,0x2E93U,0x3EB2U,0x0ED1U,0x1EF0U
};


#ifdef mycplusplus
/********************************************************************
* Name:       
* Function:   
********************************************************************/
MMF2MA1_CLASS_CC Mmf2ma1(){
  mmf2ma1_init();
}
#endif

/********************************************************************
* Name:       initialize
* Function:   曄姺儌僕儏乕儖傪弶婜壔偡傞丅曄姺傪幚峴偡傞慜偵屇偽傟傞丅
********************************************************************/
void MMF2MA1_CLASS_CC mmf2ma1_init_everytime(void){
  int i,j;
  m_input_pos_abs = 0;
  // 奺僩儔僢僋偺僔乕働儞僗奐巒埵抲忣曬偺弶婜壔
  for(i=0;i<MMF_MAX_TRACKS;++i){
    // m_sequence_start_pos_abs[i] = 0; 
    m_sequence_size[i] = 0;
    m_play_pos_info[i].is_start_defined = false;
    m_play_pos_info[i].is_stop_defined  = false;
    m_play_pos_info[i].is_start_time_defined = false;
    m_play_pos_info[i].is_stop_time_defined  = false;
    for(j=0;j<PHRASE_LIST_SIZE;++j){
      m_phrase_list[i][j].is_start_defined = false;
      m_phrase_list[i][j].is_stop_defined  = false;
    }
  }
  m_play_pos_info_song.is_start_defined = false;
  m_play_pos_info_song.is_stop_defined  = false;
  m_play_pos_info_song.is_start_time_defined = false;
  m_play_pos_info_song.is_stop_time_defined  = false;
  // 奺僷乕僩偺嵟崅壒丄嵟掅壒側偳偺弶婜壔
  for(i=0;i<MA1_MAX_PART;++i){
    m_min_note[i] = 255;
    m_max_note[i] = 0;
    m_program_change[i] = 0xff; // ProgramChange偼0x00偐傜0x7f傑偱傪偲傞丅0xff偼枹愝掕傪偁傜傢偡丅
    m_bank_change[i] = 0xff; // BankChange偼0x00偐傜0x7f傑偱傪偲傞丅0xff偼枹愝掕傪偁傜傢偡丅
    m_volume_change[i] = 0xff; // VolumeChange偼0x00偐傜0x7f傑偱傪偲傞丅0xff偼枹愝掕傪偁傜傢偡丅
    m_modulation_change[i] = 0x00; // ModulationChange偼0x00偐傜0x7f傑偱傪偲傞丅0偼OFF傪偁傜傢偡丅
    m_note_buffer[i].state = MMF2MA1_STATE_PROCESSED;
    m_note_buffer[i].ma1_stop_pos_abs = 0;
  }

  m_is_first_event = true;  //嵟弶偺僀儀儞僩偺偲偒偵媥晞偑昁梫側偺偱巊偆丅
  m_prev_part_number = -1;  //-1偼convert_note偱嬋偺愭摢偺壒偱偁傞偙偲傪堄枴偡傞丅
  m_ma1_tempo_reg = 0;  //0偼柍堄枴側抣. tempo = 8768/0
  #ifndef NO_MA1_EXCLUSIVE
  for(i=0;i<MA1_MAX_VOICE;++i){
    m_ma1_exclusive.is_voice_set[i] = false; // exclusive壒怓傪枹愝掕偵偡傞丅
  }
  m_ma1_exclusive.is_tempo_defined = false;
  #endif
  #if OCTAVE_RANGE_OVER_TYPE == 1
  m_warning_note_removed_by_range = false; // 俁僆僋僞乕僽傪挻偊傞壒偑偁偭偨偲偒偵true偵側傞丅
  #endif
}

/********************************************************************
* Name:       initialize
* Function:   曄姺儌僕儏乕儖傪弶婜壔偡傞丅曄姺傪幚峴偡傞慜偵屇偽傟傞丅
********************************************************************/
void MMF2MA1_CLASS_CC mmf2ma1_init(void){
  m_max_track_number = 1; // 弶婜抣偲偟偰丄侾僩儔僢僋傪挻偊傞僩儔僢僋偼柍帇偡傞傛偆偵愝掕偡傞丅
  m_phrase_tag[0] = 0;
  m_phrase_tag[1] = 0;
}

MMF2MA1_RESULT MMF2MA1_CLASS_CC set_resources(
  Conv_in *p_conv_in,     // 擖椡僆僽僕僃僋僩偺億僀儞僞
  Conv_out *p_conv_out    // 弌椡僆僽僕僃僋僩偺億僀儞僞
){
  m_p_conv_in = p_conv_in;
  m_p_conv_out = p_conv_out;
  return MMF2MA1_R_SUCCESSFUL;
}
/********************************************************************
* Name:       convert
* Function:   僼僅乕儅僢僩曄姺偺儊僀儞
********************************************************************/
MMF2MA1_RESULT MMF2MA1_CLASS_CC convert(void){
  MMF2MA1_RESULT ret_val;

  mmf2ma1_init_everytime(); 
  // CRC check
  if((ret_val=crc_check()) < MMF2MA1_R_SUCCESSFUL) return ret_val;
  // 僩儔僢僋僠儍儞僋偺専弌
  if((ret_val=pass1()) < MMF2MA1_R_SUCCESSFUL) return ret_val;
  // 僠儍儞僱儖悢偺挷嵏

⌨️ 快捷键说明

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