// Copyright(c) 2016 YamaArashi
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

#include "tables.h"

const int g_noteDurationLUT[] =
{
    0, // 0
    1, // 1
    2, // 2
    3, // 3
    4, // 4
    5, // 5
    6, // 6
    7, // 7
    8, // 8
    9, // 9
    10, // 10
    11, // 11
    12, // 12
    13, // 13
    14, // 14
    15, // 15
    16, // 16
    17, // 17
    18, // 18
    19, // 19
    20, // 20
    21, // 21
    22, // 22
    23, // 23
    24, // 24
    24, // 25
    24, // 26
    24, // 27
    28, // 28
    28, // 29
    30, // 30
    30, // 31
    32, // 32
    32, // 33
    32, // 34
    32, // 35
    36, // 36
    36, // 37
    36, // 38
    36, // 39
    40, // 40
    40, // 41
    42, // 42
    42, // 43
    44, // 44
    44, // 45
    44, // 46
    44, // 47
    48, // 48
    48, // 49
    48, // 50
    48, // 51
    52, // 52
    52, // 53
    54, // 54
    54, // 55
    56, // 56
    56, // 57
    56, // 58
    56, // 59
    60, // 60
    60, // 61
    60, // 62
    60, // 63
    64, // 64
    64, // 65
    66, // 66
    66, // 67
    68, // 68
    68, // 69
    68, // 70
    68, // 71
    72, // 72
    72, // 73
    72, // 74
    72, // 75
    76, // 76
    76, // 77
    78, // 78
    78, // 79
    80, // 80
    80, // 81
    80, // 82
    80, // 83
    84, // 84
    84, // 85
    84, // 86
    84, // 87
    88, // 88
    88, // 89
    90, // 90
    90, // 91
    92, // 92
    92, // 93
    92, // 94
    92, // 95
    96, // 96
};

const int g_noteVelocityLUT[] =
{
    0, // 0
    4, // 1
    4, // 2
    4, // 3
    4, // 4
    8, // 5
    8, // 6
    8, // 7
    8, // 8
    12, // 9
    12, // 10
    12, // 11
    12, // 12
    16, // 13
    16, // 14
    16, // 15
    16, // 16
    20, // 17
    20, // 18
    20, // 19
    20, // 20
    24, // 21
    24, // 22
    24, // 23
    24, // 24
    28, // 25
    28, // 26
    28, // 27
    28, // 28
    32, // 29
    32, // 30
    32, // 31
    32, // 32
    36, // 33
    36, // 34
    36, // 35
    36, // 36
    40, // 37
    40, // 38
    40, // 39
    40, // 40
    44, // 41
    44, // 42
    44, // 43
    44, // 44
    48, // 45
    48, // 46
    48, // 47
    48, // 48
    52, // 49
    52, // 50
    52, // 51
    52, // 52
    56, // 53
    56, // 54
    56, // 55
    56, // 56
    60, // 57
    60, // 58
    60, // 59
    60, // 60
    64, // 61
    64, // 62
    64, // 63
    64, // 64
    68, // 65
    68, // 66
    68, // 67
    68, // 68
    72, // 69
    72, // 70
    72, // 71
    72, // 72
    76, // 73
    76, // 74
    76, // 75
    76, // 76
    80, // 77
    80, // 78
    80, // 79
    80, // 80
    84, // 81
    84, // 82
    84, // 83
    84, // 84
    88, // 85
    88, // 86
    88, // 87
    88, // 88
    92, // 89
    92, // 90
    92, // 91
    92, // 92
    96, // 93
    96, // 94
    96, // 95
    96, // 96
    100, // 97
    100, // 98
    100, // 99
    100, // 100
    104, // 101
    104, // 102
    104, // 103
    104, // 104
    108, // 105
    108, // 106
    108, // 107
    108, // 108
    112, // 109
    112, // 110
    112, // 111
    112, // 112
    116, // 113
    116, // 114
    116, // 115
    116, // 116
    120, // 117
    120, // 118
    120, // 119
    120, // 120
    124, // 121
    124, // 122
    124, // 123
    124, // 124
    127, // 125
    127, // 126
    127, // 127
};

const char* g_noteTable[] =
{
    "Cn%01u ",
    "Cs%01u ",
    "Dn%01u ",
    "Ds%01u ",
    "En%01u ",
    "Fn%01u ",
    "Fs%01u ",
    "Gn%01u ",
    "Gs%01u ",
    "An%01u ",
    "As%01u ",
    "Bn%01u ",
};

const char* g_minusNoteTable[] =
{
    "CnM%01u",
    "CsM%01u",
    "DnM%01u",
    "DsM%01u",
    "EnM%01u",
    "FnM%01u",
    "FsM%01u",
    "GnM%01u",
    "GsM%01u",
    "AnM%01u",
    "AsM%01u",
    "BnM%01u",
};