📄 mmf2ma1.cpp
字号:
/*********************************************************************
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 + -