R/10_tables.R

# tabr::guitarChords

#datapasta::tribble_paste()

# channel_voices_messages0 <-tibble::tribble(
#   ~Event,  ~Status,   ~Description,
#   "1000nnnn", "sent when a note is released (ended).",
#   "1001nnnn", "sent when a note is depressed (start).",
#   "1010nnnn", "most often sent by pressing down on the key after it \"bottoms out\".",
#   "1011nnnn", "sent when a controller value changes. Controllers include devices such as pedals and levers. Certain controller numbers are reserved for specific purposes. See Channel Mode Messages.",
#   "1100nnnn", "sent when the patch number changes.",
#   "1101nnnn", "most often sent by pressing down on the key after it \"bottoms out\". Different from polyphonic after-touch. Use to send the single greatest pressure value (of all the current depressed keys).",
#   "1110nnnn", "sent to indicate a change in the pitch wheel. The pitch wheel is measured by a fourteen bit value. Centre (no pitch change) is 2000H. Sensitivity is a function of the transmitter."
# )
#
# channel_voices_messages <-tibble::tribble(
#   ~Event,     ~quartet1,                            ~Description,     ~`Data Byte(s)`,                                           ~byte_descr,
#   "1000nnnn",       "8",                       "Note Off event.", "0kkkkkkk 0vvvvvvv",                        "key (note) number. velocity.",
#   "1001nnnn",       "9",                        "Note On event.", "0kkkkkkk 0vvvvvvv",                        "key (note) number. velocity.",
#   "1010nnnn",       "a", "Polyphonic Key Pressure (Aftertouch).", "0kkkkkkk 0vvvvvvv",                  "key (note) number. pressure value.",
#   "1011nnnn",       "b",                       "Control Change.", "0ccccccc 0vvvvvvv",                       "controller number. new value.",
#   "1100nnnn",       "c",                       "Program Change.",          "0ppppppp",                                 "new program number.",
#   "1101nnnn",       "d",       "Channel Pressure (After-touch).",          "0vvvvvvv",                                     "pressure value.",
#   "1110nnnn",       "e",                   "Pitch Wheel Change.", "0lllllll 0mmmmmmm",  "least significant 7 bits. most significant 7 bits."
# )

channel_voices_messages <-tibble::tribble(
   ~nibble1,               ~event,                ~byte_descr,
        "8",           "Note Off",               "key_number",
        "8",           "Note Off",                 "velocity",
        "9",            "Note On",               "key_number",
        "9",            "Note On",                 "velocity",
        "a",    "Note Aftertouch",               "key_number",
        "a",    "Note Aftertouch",           "pressure_value",
  # below commented should be treated separately
        "b",     "Control Change",        "controller_number",
        "b",     "Control Change",                "new_value",
        "c",     "Program Change",       "new_program_number",
        "d", "Channel Aftertouch",           "pressure_value",
        "e",         "Pitch Bend", "least_significant_7_bits",
        "e",         "Pitch Bend",  "most_significant_7_bits"
)

controller_messages <- "byte2_bin\tbyte2_hex\tbyte2_dec\tdescr\tbyte3_descr\tUse
00000000	00	0	Bank Select	0-127	MSB
00000001	01	1	* Modulation wheel	0-127	MSB
00000010	02	2	Breath control	0-127	MSB
00000011	03	3	Undefined	0-127	MSB
00000100	04	4	Foot controller	0-127	MSB
00000101	05	5	Portamento time	0-127	MSB
00000110	06	6	Data Entry	0-127	MSB
00000111	07	7	* Channel Volume (formerly Main Volume)	0-127	MSB
00001000	08	8	Balance	0-127	MSB
00001001	09	9	Undefined	0-127	MSB
00001010	0A	10	* Pan	0-127	MSB
00001011	0B	11	* Expression Controller	0-127	MSB
00001100	0C	12	Effect control 1	0-127	MSB
00001101	0D	13	Effect control 2	0-127	MSB
00001110	0E	14	Undefined	0-127	MSB
00001111	0F	15	Undefined	0-127	MSB
00010000	10	16	General Purpose Controller #1	0-127	MSB
00010001	11	17	General Purpose Controller #2	0-127	MSB
00010010	12	18	General Purpose Controller #3	0-127	MSB
00010011	13	19	General Purpose Controller #4	0-127	MSB
00010100	14	20	Undefined	0-127	MSB
00010101	15	21	Undefined	0-127	MSB
00010110	16	22	Undefined	0-127	MSB
00010111	17	23	Undefined	0-127	MSB
00011000	18	24	Undefined	0-127	MSB
00011001	19	25	Undefined	0-127	MSB
00011010	1A	26	Undefined	0-127	MSB
00011011	1B	27	Undefined	0-127	MSB
00011100	1C	28	Undefined	0-127	MSB
00011101	1D	29	Undefined	0-127	MSB
00011110	1E	30	Undefined	0-127	MSB
00011111	1F	31	Undefined	0-127	MSB
00100000	20	32	Bank Select	0-127	LSB
00100001	21	33	Modulation wheel	0-127	LSB
00100010	22	34	Breath control	0-127	LSB
00100011	23	35	Undefined	0-127	LSB
00100100	24	36	Foot controller	0-127	LSB
00100101	25	37	Portamento time	0-127	LSB
00100110	26	38	Data entry	0-127	LSB
00100111	27	39	Channel Volume (formerly Main Volume)	0-127	LSB
00101000	28	40	Balance	0-127	LSB
00101001	29	41	Undefined	0-127	LSB
00101010	2A	42	Pan	0-127	LSB
00101011	2B	43	Expression Controller	0-127	LSB
00101100	2C	44	Effect control 1	0-127	LSB
00101101	2D	45	Effect control 2	0-127	LSB
00101110	2E	46	Undefined	0-127	LSB
00101111	2F	47	Undefined	0-127	LSB
00110000	30	48	General Purpose Controller #1	0-127	LSB
00110001	31	49	General Purpose Controller #2	0-127	LSB
00110010	32	50	General Purpose Controller #3	0-127	LSB
00110011	33	51	General Purpose Controller #4	0-127	LSB
00110100	34	52	Undefined	0-127	LSB
00110101	35	53	Undefined	0-127	LSB
00110110	36	54	Undefined	0-127	LSB
00110111	37	55	Undefined	0-127	LSB
00111000	38	56	Undefined	0-127	LSB
00111001	39	57	Undefined	0-127	LSB
00111010	3A	58	Undefined	0-127	LSB
00111011	3B	59	Undefined	0-127	LSB
00111100	3C	60	Undefined	0-127	LSB
00111101	3D	61	Undefined	0-127	LSB
00111110	3E	62	Undefined	0-127	LSB
00111111	3F	63	Undefined	0-127	LSB
01000000	40	64	* Damper pedal on/off (Sustain)	<63=off	>64=on
01000001	41	65	Portamento on/off	<63=off >64=on\t
01000010	42	66	Sustenuto on/off	<63=off >64=on\t
01000011	43	67	Soft pedal on/off	<63=off >64=on\t
01000100	44	68	Legato Footswitch	<63=off >64=on\t
01000101	45	69	Hold 2	<63=off	>64=on
01000110	46	70	Sound Controller 1 (Sound Variation)	0-127	LSB
01000111	47	71	Sound Controller 2 (Timbre)	0-127	LSB
01001000	48	72	Sound Controller 3 (Release Time)	0-127	LSB
01001001	49	73	Sound Controller 4 (Attack Time)	0-127	LSB
01001010	4A	74	Sound Controller 5 (Brightness)	0-127	LSB
01001011	4B	75	Sound Controller 6	0-127	LSB
01001100	4C	76	Sound Controller 7	0-127	LSB
01001101	4D	77	Sound Controller 8	0-127	LSB
01001110	4E	78	Sound Controller 9	0-127	LSB
01001111	4F	79	Sound Controller 10	0-127	LSB
01010000	50	80	General Purpose Controller #5	0-127	LSB
01010001	51	81	General Purpose Controller #6	0-127	LSB
01010010	52	82	General Purpose Controller #7	0-127	LSB
01010011	53	83	General Purpose Controller #8	0-127	LSB
01010100	54	84	Portamento Control	0-127	Source Note
01010101	55	85	Undefined	0-127	LSB
01010110	56	86	Undefined	0-127	LSB
01010111	57	87	Undefined	0-127	LSB
01011000	58	88	Undefined	0-127	LSB
01011001	59	89	Undefined	0-127	LSB
01011010	5A	90	Undefined	0-127	LSB
01011011	5B	91	Effects 1 Depth	0-127	LSB
01011100	5C	92	Effects 2 Depth	0-127	LSB
01011101	5D	93	Effects 3 Depth	0-127	LSB
01011110	5E	94	Effects 4 Depth	0-127	LSB
01011111	5F	95	Effects 5 Depth	0-127	LSB
01100000	60	96	Data entry +1	N/A\t
01100001	61	97	Data entry -1	N/A\t
01100010	62	98	Non-Registered Parameter Number LSB	0-127	LSB
01100011	63	99	Non-Registered Parameter Number MSB	0-127	MSB
01100100	64	100	* Registered Parameter Number LSB	0-127	LSB
01100101	65	101	* Registered Parameter Number MSB	0-127	MSB
01100110	66	102	Undefined	?\t
01100111	67	103	Undefined	?\t
01101000	68	104	Undefined	?\t
01101001	69	105	Undefined	?\t
01101010	6A	106	Undefined	?\t
01101011	6B	107	Undefined	?\t
01101100	6C	108	Undefined	?\t
01101101	6D	109	Undefined	?\t
01101110	6E	110	Undefined	?\t
01101111	6F	111	Undefined	?\t
01110000	70	112	Undefined	?\t
01110001	71	113	Undefined	?\t
01110010	72	114	Undefined	?\t
01110011	73	115	Undefined	?\t
01110100	74	116	Undefined	?\t
01110101	75	117	Undefined	?\t
01110110	76	118	Undefined	?\t
01110111	77	119	Undefined	?\t
01111000	78	120	All Sound Off	0\t
01111001	79	121	* Reset All Controllers	0\t
01111010	7A	122	Local control on/off	0=off 127=on\t
01111011	7B	123	* All notes off	0\t
01111100	7C	124	Omni mode off (+ all notes off)	0\t
01111101	7D	125	Omni mode on (+ all notes off)	0\t
01111110	7E	126	Poly mode on/off (+ all notes off)	**\t
01111111	7F	127	Poly mode on (incl mono=off +all notes off)	0\t"
controller_messages <- read.table(text= controller_messages, header=TRUE, sep="\t", comment.char = "")
controller_messages$descr <- sub("^\\* ", "", controller_messages$descr)
controller_messages$descr <- sub(" (formerly Main Volume)", "", controller_messages$descr, fixed=TRUE)

key_numbers <- "octave 	C	C#	D	D#	E	F	F#	G	G#	A	A#	B
-1	0	1	2	3	4	5	6	7	8	9	10	11
0	12	13	14	15	16	17	18	19	20	21	22	23
1	24	25	26	27	28	29	30	31	32	33	34	35
2	36	37	38	39	40	41	42	43	44	45	46	47
3	48	49	50	51	52	53	54	55	56	57	58	59
4	60	61	62	63	64	65	66	67	68	69	70	71
5	72	73	74	75	76	77	78	79	80	81	82	83
6	84	85	86	87	88	89	90	91	92	93	94	95
7	96	97	98	99	100	101	102	103	104	105	106	107
8	108	109	110	111	112	113	114	115	116	117	118	119
9	120	121	122	123	124	125	126	127\t\t\t\t
"
key_numbers <- read.table(text= key_numbers, header=TRUE, sep="\t", comment.char = "")
key_numbers <-tidyr::gather(key_numbers, note, key_number, -1)
key_numbers <- subset(key_numbers, !is.na(key_number))
key_numbers <- key_numbers[order(key_numbers$key_number),]
key_numbers$note <- sub(".", "#", key_numbers$note, fixed = TRUE)
key_numbers <- dplyr::mutate(key_numbers, note2 = paste0(note, octave, " (", key_number, ")"))
key_numbers$note  <- tolower(key_numbers$note)
key_numbers$note2 <- tolower(key_numbers$note2)

# special values of c for control change

# c = 122, v = 0: Local Control Off
# c = 122, v = 127: Local Control On
# c = 123, v = 0: All Notes Off
# c = 124, v = 0: Omni Mode Off
# c = 125, v = 0: Omni Mode On
# c = 126, v = M: Mono Mode On (Poly Off) where M is the number of channels (Omni Off) or 0 (Omni On)
# c = 127, v = 0: Poly Mode On (Mono Off) (Note: These four messages also cause All Notes Off)


# tibble::tribble(
#   ~`Delta-Time`,     ~Event,                             ~Comments,
#   "00",    "C2 46",                                    NA,
#   "00", "92 30 60",                                    NA,
#   "00",    "3C 60",                      "running status",
#   "83 00",    "30 00", "two-byte delta-time, running status",
#   "00",    "3C 00",                      "running status",
#   "00", "FF 2F 00",                        "end of track"
# )


pitch_table <- read.table(header = TRUE, text="key_number         freq
127 12543.853951
126 11839.821527
125 11175.303406
124 10548.081821
123  9956.063479
122  9397.272573
121  8869.844191
120  8372.018090
119  7902.132820
118  7458.620184
117  7040.000000
116  6644.875161
115  6271.926976
114  5919.910763
113  5587.651703
112  5274.040911
111  4978.031740
110  4698.636287
109  4434.922096
108  4186.009045
107  3951.066410
106  3729.310092
105  3520.000000
104  3322.437581
103  3135.963488
102  2959.955382
101  2793.825851
100  2637.020455
 99  2489.015870
 98  2349.318143
 97  2217.461048
 96  2093.004522
 95  1975.533205
 94  1864.655046
 93  1760.000000
 92  1661.218790
 91  1567.981744
 90  1479.977691
 89  1396.912926
 88  1318.510228
 87  1244.507935
 86  1174.659072
 85  1108.730524
 84  1046.502261
 83   987.766603
 82   932.327523
 81   880.000000
 80   830.609395
 79   783.990872
 78   739.988845
 77   698.456463
 76   659.255114
 75   622.253967
 74   587.329536
 73   554.365262
 72   523.251131
 71   493.883301
 70   466.163762
 69   440.000000
 68   415.304698
 67   391.995436
 66   369.994423
 65   349.228231
 64   329.627557
 63   311.126984
 62   293.664768
 61   277.182631
 60   261.625565
 59   246.941651
 58   233.081881
 57   220.000000
 56   207.652349
 55   195.997718
 54   184.997211
 53   174.614116
 52   164.813778
 51   155.563492
 50   146.832384
 49   138.591315
 48   130.812783
 47   123.470825
 46   116.540940
 45   110.000000
 44   103.826174
 43    97.998859
 42    92.498606
 41    87.307058
 40    82.406889
 39    77.781746
 38    73.416192
 37    69.295658
 36    65.406391
 35    61.735413
 34    58.270470
 33    55.000000
 32    51.913087
 31    48.999429
 30    46.249303
 29    43.653529
 28    41.203445
 27    38.890873
 26    36.708096
 25    34.647829
 24    32.703196
 23    30.867706
 22    29.135235
 21    27.500000
 20    25.956544
 19    24.499715
 18    23.124651
 17    21.826764
 16    20.601722
 15    19.445436
 14    18.354048
 13    17.323914
 12    16.351598
 11    15.433853
 10    14.567618
  9    13.750000
  8    12.978272
  7    12.249857
  6    11.562326
  5    10.913382
  4    10.300861
  3     9.722718
  2     9.177024
  1     8.661957
  0     8.175799")
moodymudskipper/midi documentation built on July 16, 2020, 1:54 a.m.