Last active
November 27, 2017 07:51
-
-
Save psobot/43881e270568378c774aa66fdc7fc6b2 to your computer and use it in GitHub Desktop.
Kurzweil K2500XS UI Generator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
generate_k2500xs_ui.py | |
November 26, 2017 by @psobot | |
MIT licensed | |
Generates a screen image for the Kurzweil K2500XS | |
(http://www.vintagesynth.com/kurzweil/k2500.php) | |
program list and keymap can be provided on the command line with | |
--programs <program 1> <program 2>... | |
--keymap <layer 1> <layer 2>... | |
or as JSON via the --input argument, formatted as: | |
[ | |
... | |
{ | |
"index": 195, | |
"title": "Thunder Storm", | |
"keymap": [ | |
{ | |
(the start and end positions of the line segment | |
below this layer in the keymap display) | |
"interval": [ | |
0, | |
59 | |
], | |
(the sample name of this layer) | |
"sample": "DrySnare1 soft" | |
}, | |
{ | |
"interval": [ | |
54, | |
95 | |
], | |
"sample": "Grand Piano" | |
}, | |
{ | |
"interval": [ | |
47, | |
95 | |
], | |
"sample": "Wood Bars" | |
} | |
] | |
}, | |
] | |
In JSON, "keymap" can also be an integer to indicate | |
a drum program (where the integer is the number of layers), | |
or a list of String elements if the layers span the entire | |
keyboard. | |
""" | |
import os | |
import json | |
import argparse | |
from PIL import Image | |
from PIL import ImageDraw | |
x, y = 240, 64 | |
header_height = 8 | |
DEFAULT_KEYMAP_WIDTH = (0, 95) | |
GLYPH_SIZE = (5, 7) | |
WHITE = (254, 250, 175, 255) # "#f8f5b2" | |
BLACK = (37, 141, 242, 255) # "#2579f2" | |
UPSCALE_BACKGROUND = (41, 150, 255, 255) | |
DEFAULT_UPSCALE = 24 | |
DEFAULT_DOWNSCALE = 4 | |
CURRENTLY_SELECTED_HEIGHT = 8 | |
# Generated by hand from https://www.pentacom.jp/pentacom/bitfontmaker2/ | |
FONT = json.loads(""" | |
{ | |
"35":[0,0,0,0,0,40,40,124,40,124,40,40,0,0,0,0], | |
"37":[0,0,0,0,0,12,76,32,16,8,100,96,0,0,0,0], | |
"38":[0,0,0,0,0,24,36,20,8,84,36,88,0,0,0,0], | |
"39":[0,0,0,0,0,48,32,16,0,0,0,0,0,0,0,0], | |
"40":[0,0,0,0,0,32,16,8,8,8,16,32,0,0,0,0], | |
"41":[0,0,0,0,0,8,16,32,32,32,16,8,0,0,0,0], | |
"42":[0,0,0,0,0,0,16,84,56,84,16,0,0,0,0,0], | |
"43":[0,0,0,0,0,0,16,16,124,16,16,0,0,0,0,0], | |
"44":[0,0,0,0,0,0,0,0,0,24,16,8,0,0,0,0], | |
"45":[0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0], | |
"46":[0,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0], | |
"47":[0,0,0,0,0,0,64,32,16,8,4,0,0,0,0,0], | |
"48":[0,0,0,0,0,56,68,100,84,76,68,56,0,0,0,0], | |
"49":[0,0,0,0,0,16,24,16,16,16,16,56,0,0,0,0], | |
"50":[0,0,0,0,0,56,68,64,32,16,8,124,0,0,0,0], | |
"51":[0,0,0,0,0,124,32,16,32,64,68,56,0,0,0,0], | |
"52":[0,0,0,0,0,32,48,40,36,124,32,32,0,0,0,0], | |
"53":[0,0,0,0,0,124,4,60,64,64,68,56,0,0,0,0], | |
"54":[0,0,0,0,0,48,8,4,60,68,68,56,0,0,0,0], | |
"55":[0,0,0,0,0,124,64,32,16,16,16,16,0,0,0,0], | |
"56":[0,0,0,0,0,56,68,68,56,68,68,56,0,0,0,0], | |
"57":[0,0,0,0,0,56,68,68,120,64,32,24,0,0,0,0], | |
"58":[0,0,0,0,0,0,24,24,0,24,24,0,0,0,0,0], | |
"60":[0,0,0,0,0,32,16,8,4,8,16,32,0,0,0,0], | |
"61":[0,0,0,0,0,0,0,124,0,124,0,0,0,0,0,0], | |
"62":[0,0,0,0,0,8,16,32,64,32,16,8,0,0,0,0], | |
"63":[0,0,0,0,0,56,68,64,32,16,0,16,0,0,0,0], | |
"65":[0,0,0,0,0,56,68,68,68,124,68,68,0,0,0,0], | |
"66":[0,0,0,0,0,60,72,72,56,72,72,60,0,0,0,0], | |
"67":[0,0,0,0,0,56,68,4,4,4,68,56,0,0,0,0], | |
"68":[0,0,0,0,0,60,72,72,72,72,72,60,0,0,0,0], | |
"69":[0,0,0,0,0,124,4,4,60,4,4,124,0,0,0,0], | |
"70":[0,0,0,0,0,124,4,4,60,4,4,4,0,0,0,0], | |
"71":[0,0,0,0,0,56,68,4,100,68,68,120,0,0,0,0], | |
"72":[0,0,0,0,0,68,68,68,124,68,68,68,0,0,0,0], | |
"73":[0,0,0,0,0,56,16,16,16,16,16,56,0,0,0,0], | |
"74":[0,0,0,0,0,112,32,32,32,32,36,24,0,0,0,0], | |
"75":[0,0,0,0,0,68,36,20,12,20,36,68,0,0,0,0], | |
"76":[0,0,0,0,0,4,4,4,4,4,4,124,0,0,0,0], | |
"77":[0,0,0,0,0,68,108,84,84,68,68,68,0,0,0,0], | |
"78":[0,0,0,0,0,68,76,76,84,100,100,68,0,0,0,0], | |
"79":[0,0,0,0,0,56,68,68,68,68,68,56,0,0,0,0], | |
"80":[0,0,0,0,0,60,68,68,60,4,4,4,0,0,0,0], | |
"81":[0,0,0,0,0,56,68,68,68,84,36,88,0,0,0,0], | |
"82":[0,0,0,0,0,60,68,68,60,20,36,68,0,0,0,0], | |
"83":[0,0,0,0,0,56,68,4,56,64,68,56,0,0,0,0], | |
"84":[0,0,0,0,0,124,16,16,16,16,16,16,0,0,0,0], | |
"85":[0,0,0,0,0,68,68,68,68,68,68,56,0,0,0,0], | |
"86":[0,0,0,0,0,68,68,68,68,68,40,16,0,0,0,0], | |
"87":[0,0,0,0,0,68,68,68,84,84,108,68,0,0,0,0], | |
"88":[0,0,0,0,0,68,68,40,16,40,68,68,0,0,0,0], | |
"89":[0,0,0,0,0,68,68,68,40,16,16,16,0,0,0,0], | |
"90":[0,0,0,0,0,124,64,32,16,8,4,124,0,0,0,0], | |
"91":[0,0,0,0,0,56,8,8,8,8,8,56,0,0,0,0], | |
"92":[0,0,0,0,0,0,4,8,16,32,64,0,0,0,0,0], | |
"93":[0,0,0,0,0,56,32,32,32,32,32,56,0,0,0,0], | |
"95":[0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0], | |
"97":[0,0,0,0,0,0,0,56,64,120,68,120,0,0,0,0], | |
"98":[0,0,0,0,0,4,4,52,76,68,68,60,0,0,0,0], | |
"99":[0,0,0,0,0,0,0,56,68,4,68,56,0,0,0,0], | |
"100":[0,0,0,0,0,64,64,88,100,68,68,120,0,0,0,0], | |
"101":[0,0,0,0,0,0,0,56,68,124,4,56,0,0,0,0], | |
"102":[0,0,0,0,0,32,80,16,56,16,16,16,0,0,0,0], | |
"103":[0,0,0,0,0,0,88,100,100,88,64,56,0,0,0,0], | |
"104":[0,0,0,0,0,4,4,52,76,68,68,68,0,0,0,0], | |
"105":[0,0,0,0,0,16,0,24,16,16,16,56,0,0,0,0], | |
"106":[0,0,0,0,0,64,0,96,64,64,72,48,0,0,0,0], | |
"107":[0,0,0,0,0,8,8,72,40,24,40,72,0,0,0,0], | |
"108":[0,0,0,0,0,24,16,16,16,16,16,56,0,0,0,0], | |
"109":[0,0,0,0,0,0,0,44,84,84,84,84,0,0,0,0], | |
"110":[0,0,0,0,0,0,0,52,76,68,68,68,0,0,0,0], | |
"111":[0,0,0,0,0,0,0,56,68,68,68,56,0,0,0,0], | |
"112":[0,0,0,0,0,0,52,76,76,52,4,4,0,0,0,0], | |
"113":[0,0,0,0,0,0,88,100,100,88,64,64,0,0,0,0], | |
"114":[0,0,0,0,0,0,0,52,76,4,4,4,0,0,0,0], | |
"115":[0,0,0,0,0,0,0,120,4,60,64,124,0,0,0,0], | |
"116":[0,0,0,0,0,8,8,28,8,8,72,48,0,0,0,0], | |
"117":[0,0,0,0,0,0,0,36,36,36,36,88,0,0,0,0], | |
"118":[0,0,0,0,0,0,0,68,68,68,40,16,0,0,0,0], | |
"119":[0,0,0,0,0,0,0,68,68,84,84,40,0,0,0,0], | |
"120":[0,0,0,0,0,0,0,68,40,16,40,68,0,0,0,0], | |
"121":[0,0,0,0,0,0,68,68,100,88,64,56,0,0,0,0], | |
"122":[0,0,0,0,0,0,0,124,32,16,8,124,0,0,0,0], | |
"126":[0,0,0,0,0,0,0,8,84,32,0,0,0,0,0,0], | |
"name":"KurzweilK2500XS", | |
"copy":"psobot", | |
"letterspace":"64", | |
"basefont_size":"512", | |
"basefont_left":"62", | |
"basefont_top":"0", | |
"basefont":"Courier", | |
"basefont2":"" | |
} | |
""") | |
SOFT_KEY_SIZE = (36, 9) | |
SOFT_KEY_MARGIN = 6 | |
SOFT_KEYS = [ | |
'Octav-', | |
'Octav+', | |
'Panic', | |
'Sample', | |
'Chan-', | |
'Chan+', | |
] | |
PROGRAMS = [ | |
'9 Classic E Piano', | |
'10 Dyno E Piano', | |
'11 E Piano PF', | |
'12 Suitcase E Piano', | |
'13 Brite Klav', | |
'14 Match Stick', | |
] | |
KEYMAP_INFO = [ | |
'Soft Elec Piano', | |
'Hard Elec Piano', | |
'Wood Bars', | |
] | |
def draw_glyph(img, position, values, color): | |
x, y = position | |
for offset_y, value in enumerate(values): | |
if value == 0: | |
continue # Skip row | |
for offset_x, bit in enumerate([2 ** v for v in range(16)]): | |
if value & bit: | |
img.putpixel( | |
( | |
x + offset_x, | |
y + offset_y - 4 | |
), | |
color | |
) | |
def draw_text(img, position, text, color): | |
x, y = position | |
x -= 2 | |
y -= 1 | |
for index, value in enumerate(text): | |
try: | |
glyph = FONT[str(ord(value))] | |
except KeyError: | |
if ord(value) != 32: | |
print "no key for", str(ord(value)) | |
continue | |
try: | |
draw_glyph( | |
img, | |
(x + (index * (GLYPH_SIZE[0] + 1)), y), | |
glyph, | |
color) | |
except IndexError as e: | |
print "error drawing", text, e | |
pass | |
def generate( | |
programs=PROGRAMS, | |
keymap_info=KEYMAP_INFO, | |
keymap_widths=DEFAULT_KEYMAP_WIDTH, | |
): | |
img = Image.new('RGB', (x, y)) | |
draw = ImageDraw.Draw(img) | |
# Background | |
draw.rectangle(((0, 0), (x, y)), fill=BLACK) | |
draw.rectangle(((0, 0), (x, header_height - 1)), fill=WHITE) | |
# Draw soft keys | |
for index, text in enumerate(SOFT_KEYS): | |
tl = index * (SOFT_KEY_SIZE[0] + SOFT_KEY_MARGIN) | |
draw.rectangle( | |
((tl, y - SOFT_KEY_SIZE[1]), (tl + SOFT_KEY_SIZE[0], y)), | |
fill=WHITE) | |
draw_text(img, (tl + 1, y - SOFT_KEY_SIZE[1] + 1), text, BLACK) | |
# Draw left box | |
draw.rectangle( | |
((0, header_height + 4), (107, header_height + 4)), | |
fill=WHITE) | |
draw.rectangle( | |
((108, header_height + 5), (108, y - SOFT_KEY_SIZE[1] - 4)), | |
fill=WHITE) | |
draw.rectangle( | |
((109, header_height + 6), (109, y - SOFT_KEY_SIZE[1] - 4)), | |
fill=WHITE) | |
draw.rectangle( | |
((0, y - SOFT_KEY_SIZE[1] - 5), (107, y - SOFT_KEY_SIZE[1] - 5)), | |
fill=WHITE) | |
draw.rectangle( | |
((1, y - SOFT_KEY_SIZE[1] - 4), (107, y - SOFT_KEY_SIZE[1] - 4)), | |
fill=WHITE) | |
# Draw current selected program background | |
draw.rectangle( | |
((120, 23), (x, 23 + CURRENTLY_SELECTED_HEIGHT)), | |
fill=WHITE) | |
# Draw program names | |
for index, program in enumerate(programs): | |
offset = 0 | |
draw_text( | |
img, | |
(121, 8 + offset + (index * (1 + GLYPH_SIZE[1]))), | |
program, | |
BLACK if index == 2 else WHITE) | |
# Draw keymap info | |
if isinstance(keymap_info, (int, float, long)): | |
draw_text(img, (1, 16), "Drum Program", WHITE) | |
draw_text(img, (1, 24), "%s layers" % keymap_info, WHITE) | |
else: | |
draw_text(img, (1, 16), "KeyMap Info", WHITE) | |
for index, info in enumerate(keymap_info): | |
draw_text( | |
img, | |
(7, 24 + (index * (1 + GLYPH_SIZE[1]))), | |
info, | |
WHITE) | |
if isinstance(keymap_widths[0], (int, float, long)): | |
widths = keymap_widths | |
else: | |
widths = keymap_widths[index] | |
draw.rectangle( | |
( | |
(6 + widths[0], 31 + (index * (1 + GLYPH_SIZE[1]))), | |
(6 + widths[1], 31 + (index * (1 + GLYPH_SIZE[1]))) | |
), | |
fill=WHITE) | |
# Header Text | |
draw_text(img, (1, 0), "ProgramMode", BLACK) | |
draw_text(img, (91, 0), "Xpose:0ST", BLACK) | |
draw_text(img, (163, 0), "<>Channel:1", BLACK) | |
return img | |
def upscale(img, factor=4, spacing=1): | |
upscaled = Image.new('RGB', (x * factor, y * factor)) | |
draw = ImageDraw.Draw(upscaled) | |
draw.rectangle(((0, 0), (x * factor, y * factor)), fill=UPSCALE_BACKGROUND) | |
for _x in xrange(0, x): | |
for _y in xrange(0, y): | |
pixel = img.getpixel((_x, _y)) | |
blended_pixel = tuple([ | |
(c + c + b) / 3 | |
for c, b in zip(pixel, UPSCALE_BACKGROUND) | |
]) | |
draw.rectangle( | |
( | |
(_x * factor, _y * factor), | |
((_x + 1) * factor - 1, (_y + 1) * factor - 1) | |
), | |
fill=blended_pixel) | |
draw.rectangle( | |
( | |
(_x * factor, _y * factor), | |
((_x + 1) * factor - 1 - spacing, | |
(_y + 1) * factor - 1 - spacing) | |
), | |
fill=pixel) | |
return upscaled | |
def programs_around(program, programs): | |
program_dict = dict([ | |
(int(p.get('index', 0)), p) | |
for p in programs | |
]) | |
min_index = min(program_dict.keys()) | |
max_index = max(program_dict.keys()) | |
index = int(program.get('index')) | |
return [ | |
program_dict.get((min_index) + ((i - 1) % max_index), {}) | |
for i in xrange(index - 2, index + 4)] | |
def format_programs(programs): | |
return [ | |
"%s %s" % ( | |
str(program.get('index', 0)).rjust(3), | |
program.get('title', 'Missing')) | |
for program in programs | |
] | |
if __name__ == "__main__": | |
parser = argparse.ArgumentParser(description='create a K2500 UI') | |
parser.add_argument('--programs', | |
type=str, | |
help='programs to display', | |
nargs='+') | |
parser.add_argument('--keymap', | |
type=str, | |
help='keymap info to display', | |
nargs='+') | |
parser.add_argument('--input', | |
type=str, | |
help='json-formatted input file') | |
parser.add_argument('--output', | |
type=str, | |
help='where to save the output files') | |
parser.add_argument('--upscale', | |
type=int, | |
help='factor to upscale output image by', | |
default=DEFAULT_UPSCALE) | |
parser.add_argument('--downscale', | |
type=int, | |
help='factor to downscale output image by', | |
default=DEFAULT_DOWNSCALE) | |
args = parser.parse_args() | |
if args.input: | |
if args.output and not os.path.isdir(args.output): | |
raise ValueError("--output must be a directory.") | |
programs = json.load(open(args.input, 'r')) | |
for program in programs: | |
displayed_programs = programs_around(program, programs) | |
img = generate( | |
format_programs(displayed_programs), | |
[ | |
k.get('sample') | |
if isinstance(k, dict) else k | |
for k in program['keymap'] | |
] if isinstance(program['keymap'], list) | |
else program['keymap'], | |
[ | |
k.get('interval', DEFAULT_KEYMAP_WIDTH) | |
if isinstance(k, dict) else DEFAULT_KEYMAP_WIDTH | |
for k in program['keymap'] | |
] if isinstance(program['keymap'], list) else None | |
) | |
if args.upscale: | |
img = upscale(img, args.upscale) | |
if args.downscale: | |
img = img.resize( | |
(img.width / args.downscale, img.height / args.downscale), | |
Image.BICUBIC | |
) | |
if args.output: | |
img.save(os.path.join(args.output, "%s %s.png" % ( | |
program['index'], program['title'].replace('/', '')))) | |
else: | |
img.show() | |
elif args.programs and args.keymap: | |
img = generate(args.programs, args.keymap) | |
if args.upscale: | |
img = upscale(img, args.upscale) | |
if args.output: | |
img.save(args.output) | |
else: | |
img.show() | |
else: | |
raise ValueError("Provide one of --programs and --keymap or --input.") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"index": 1, | |
"title": "Acoustic Piano", | |
"keymap": [ | |
"Grand Piano", | |
"Syn Piano" | |
] | |
}, | |
{ | |
"index": 2, | |
"title": "Stage Piano", | |
"keymap": [ | |
"Grand Piano" | |
] | |
}, | |
{ | |
"index": 3, | |
"title": "BriteGrand", | |
"keymap": [ | |
{ | |
"interval": [ | |
57, | |
95 | |
], | |
"sample": "Grand Piano" | |
}, | |
{ | |
"interval": [ | |
33, | |
55 | |
], | |
"sample": "Grand Piano" | |
}, | |
{ | |
"interval": [ | |
0, | |
31 | |
], | |
"sample": "Grand Piano" | |
} | |
] | |
}, | |
{ | |
"index": 4, | |
"title": "ClassicPiano&Vox", | |
"keymap": [ | |
"Grand Piano", | |
"Voices" | |
] | |
}, | |
{ | |
"index": 5, | |
"title": "Ballad Pno&Str", | |
"keymap": [ | |
"Grand Piano", | |
{ | |
"interval": [ | |
0, | |
83 | |
], | |
"sample": "Ensemble Strings" | |
} | |
] | |
}, | |
{ | |
"index": 6, | |
"title": "Rock Piano 1", | |
"keymap": [ | |
"Grand Piano", | |
"Grand Piano" | |
] | |
}, | |
{ | |
"index": 7, | |
"title": "Honky-Tonk", | |
"keymap": [ | |
"Grand Piano", | |
"Grand Piano" | |
] | |
}, | |
{ | |
"index": 8, | |
"title": "E Grand & Pad", | |
"keymap": [ | |
"Grand Piano", | |
"Ensemble Strings", | |
"Hard Elec Piano" | |
] | |
}, | |
{ | |
"index": 9, | |
"title": "Classic E Piano", | |
"keymap": [ | |
"Soft Elec Piano", | |
"Hard Elec Piano" | |
] | |
}, | |
{ | |
"index": 10, | |
"title": "Dyno E Piano", | |
"keymap": [ | |
"Dual Elec Piano", | |
"Soft Elec Piano", | |
"Soft Elec Piano" | |
] | |
}, | |
{ | |
"index": 11, | |
"title": "E Piano PF", | |
"keymap": [ | |
"Soft Elec Piano", | |
"Hard Elec Piano", | |
"Wood Bars" | |
] | |
}, | |
{ | |
"index": 12, | |
"title": "Suitcase E Pno", | |
"keymap": [ | |
"Hard Elec Piano" | |
] | |
}, | |
{ | |
"index": 13, | |
"title": "Brite Klav", | |
"keymap": [ | |
"Clav Wave", | |
"Clav Wave", | |
"Hard Elec Piano" | |
] | |
}, | |
{ | |
"index": 14, | |
"title": "Match Stick", | |
"keymap": [ | |
"ExtDynPrtls1", | |
"Hi Formant Wave", | |
"ExtDynPrtls1" | |
] | |
}, | |
{ | |
"index": 15, | |
"title": "Big PWM", | |
"keymap": [ | |
"Sine Wave", | |
"Sine Wave", | |
"Sine Wave" | |
] | |
}, | |
{ | |
"index": 16, | |
"title": "Matrix 12", | |
"keymap": [ | |
"Sawtooth", | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 17, | |
"title": "OBX Braz 4", | |
"keymap": [ | |
"Sawtooth", | |
"Sawtooth", | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 18, | |
"title": "Memorymoog 4", | |
"keymap": [ | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 19, | |
"title": "Prophet Pulse 2", | |
"keymap": [ | |
"Sine Wave", | |
"Sine Wave" | |
] | |
}, | |
{ | |
"index": 20, | |
"title": "Prophet Square 2", | |
"keymap": [ | |
"Square Wave" | |
] | |
}, | |
{ | |
"index": 21, | |
"title": "New Shaper", | |
"keymap": [ | |
"Partials 1&12", | |
"Partials 1&2" | |
] | |
}, | |
{ | |
"index": 22, | |
"title": "Klicomp tree", | |
"keymap": [ | |
"Triangle Wave", | |
"Partials 1&2" | |
] | |
}, | |
{ | |
"index": 23, | |
"title": "Digicomp", | |
"keymap": [ | |
"Partials 16-21", | |
"ExtDynPrtls1" | |
] | |
}, | |
{ | |
"index": 24, | |
"title": "Da Clav", | |
"keymap": [ | |
"Clav Wave" | |
] | |
}, | |
{ | |
"index": 25, | |
"title": "Simpilton", | |
"keymap": [ | |
"Sine Wave" | |
] | |
}, | |
{ | |
"index": 26, | |
"title": "Synth Caliope", | |
"keymap": [ | |
"Chiff", | |
"Very Dull Saw", | |
"Flute" | |
] | |
}, | |
{ | |
"index": 27, | |
"title": "Chiffloots", | |
"keymap": [ | |
"Flute", | |
"Flute", | |
"Chiff" | |
] | |
}, | |
{ | |
"index": 28, | |
"title": "Bamboo Voices", | |
"keymap": [ | |
"Mellow Vox", | |
"Six String Mutes" | |
] | |
}, | |
{ | |
"index": 29, | |
"title": "Hyper Guitar", | |
"keymap": [ | |
"Elec Jazz Guitar", | |
"Elec Jazz Guitar" | |
] | |
}, | |
{ | |
"index": 30, | |
"title": "Dreamers", | |
"keymap": [ | |
"Elec Jazz Guitar", | |
"Elec Jazz Guitar" | |
] | |
}, | |
{ | |
"index": 31, | |
"title": "Pluxichord", | |
"keymap": [ | |
"Syn Guitar", | |
"Elec Jazz Guitar", | |
"Six String Mutes" | |
] | |
}, | |
{ | |
"index": 32, | |
"title": "Fluty Lead", | |
"keymap": [ | |
"Very Dull Square", | |
"Flute", | |
"Synflute mello" | |
] | |
}, | |
{ | |
"index": 33, | |
"title": "Gooshy Lead", | |
"keymap": [ | |
"Partials 1-3", | |
"Very Dull Saw", | |
"Very Dull Saw" | |
] | |
}, | |
{ | |
"index": 34, | |
"title": "Orient Wind", | |
"keymap": [ | |
"Flute" | |
] | |
}, | |
{ | |
"index": 35, | |
"title": "DC Lead", | |
"keymap": [ | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 36, | |
"title": "Duke's Lead", | |
"keymap": [ | |
"Square Wave", | |
"Square Wave" | |
] | |
}, | |
{ | |
"index": 37, | |
"title": "FM Harmonica", | |
"keymap": [ | |
"Dull Square" | |
] | |
}, | |
{ | |
"index": 38, | |
"title": "Mini Lead Poly", | |
"keymap": [ | |
"Third Wave", | |
"Dull Square" | |
] | |
}, | |
{ | |
"index": 39, | |
"title": "AlaZawi", | |
"keymap": [ | |
"Square Wave", | |
"Dull Sawtooth", | |
"Dull Sawtooth" | |
] | |
}, | |
{ | |
"index": 40, | |
"title": "JR's Lead", | |
"keymap": [ | |
"Organ Wave 2", | |
"Partials 1&12", | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 41, | |
"title": "Funky Lead", | |
"keymap": [ | |
"Dual Elec Piano", | |
"Dual Elec Piano" | |
] | |
}, | |
{ | |
"index": 42, | |
"title": "Hammeron Synth", | |
"keymap": [ | |
"Sawtooth", | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 43, | |
"title": "Synthitar Lead", | |
"keymap": [ | |
"Shift Guitar 2", | |
"Six String Mutes", | |
"Elec Jazz Guitar" | |
] | |
}, | |
{ | |
"index": 44, | |
"title": "Modular Lead", | |
"keymap": [ | |
"Trumpet", | |
"Very Dull Saw", | |
"Flute" | |
] | |
}, | |
{ | |
"index": 45, | |
"title": "Prophet Sync", | |
"keymap": [ | |
"Grand Piano", | |
"Grand Piano" | |
] | |
}, | |
{ | |
"index": 46, | |
"title": "Brt Saxy Lead", | |
"keymap": [ | |
"Tenor Saxophone", | |
"Dull Sawtooth" | |
] | |
}, | |
{ | |
"index": 47, | |
"title": "Don Corllione'", | |
"keymap": [ | |
"Partials 1&12", | |
"Dull Square" | |
] | |
}, | |
{ | |
"index": 48, | |
"title": "Studio Kit 1", | |
"keymap": 26 | |
}, | |
{ | |
"index": 49, | |
"title": "Studio Kit 2 MW", | |
"keymap": 24 | |
}, | |
{ | |
"index": 50, | |
"title": "2 Live Kits MW", | |
"keymap": 29 | |
}, | |
{ | |
"index": 51, | |
"title": "Rock Kit", | |
"keymap": 32 | |
}, | |
{ | |
"index": 52, | |
"title": "Jazz Kit", | |
"keymap": 30 | |
}, | |
{ | |
"index": 53, | |
"title": "Reggae Kit", | |
"keymap": 31 | |
}, | |
{ | |
"index": 54, | |
"title": "Light Kit", | |
"keymap": 30 | |
}, | |
{ | |
"index": 55, | |
"title": "Garage Kit MW", | |
"keymap": 31 | |
}, | |
{ | |
"index": 56, | |
"title": "Techno Kit", | |
"keymap": 32 | |
}, | |
{ | |
"index": 57, | |
"title": "General MIDI Kit", | |
"keymap": 31 | |
}, | |
{ | |
"index": 58, | |
"title": "Slam'n Drums", | |
"keymap": 32 | |
}, | |
{ | |
"index": 59, | |
"title": "Perc Section MW", | |
"keymap": 32 | |
}, | |
{ | |
"index": 60, | |
"title": "Industry Set", | |
"keymap": 32 | |
}, | |
{ | |
"index": 61, | |
"title": "Techno Loops", | |
"keymap": 6 | |
}, | |
{ | |
"index": 62, | |
"title": "Rhythmatic", | |
"keymap": 9 | |
}, | |
{ | |
"index": 63, | |
"title": "Dualimba", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
46 | |
], | |
"sample": "Metal Clank" | |
}, | |
{ | |
"interval": [ | |
47, | |
95 | |
], | |
"sample": "Metal Clank" | |
} | |
] | |
}, | |
{ | |
"index": 64, | |
"title": "Touch Drums", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
47 | |
], | |
"sample": "Timbale Atk" | |
}, | |
{ | |
"interval": [ | |
48, | |
70 | |
], | |
"sample": "15in Dry Tom" | |
}, | |
{ | |
"interval": [ | |
72, | |
95 | |
], | |
"sample": "Cross Stick" | |
} | |
] | |
}, | |
{ | |
"index": 65, | |
"title": "Hand Drums", | |
"keymap": [ | |
"Conga Tone", | |
"Wood Bar Atk", | |
"Amb Kit 3" | |
] | |
}, | |
{ | |
"index": 66, | |
"title": "Dynamic Perc", | |
"keymap": 20 | |
}, | |
{ | |
"index": 67, | |
"title": "Mark Tree", | |
"keymap": [ | |
"Waterphone" | |
] | |
}, | |
{ | |
"index": 68, | |
"title": "Bell Player", | |
"keymap": [ | |
"FM Bell Trans", | |
"Metal Clank" | |
] | |
}, | |
{ | |
"index": 69, | |
"title": "Marimba", | |
"keymap": [ | |
"Wood Bars" | |
] | |
}, | |
{ | |
"index": 70, | |
"title": "Excited Marimba", | |
"keymap": [ | |
"Wood Bars" | |
] | |
}, | |
{ | |
"index": 71, | |
"title": "Dual E Bass", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
64 | |
], | |
"sample": "Elec Pick Bass" | |
}, | |
{ | |
"interval": [ | |
0, | |
64 | |
], | |
"sample": "Elec Slap Bass" | |
} | |
] | |
}, | |
{ | |
"index": 72, | |
"title": "Warm Bass", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
68 | |
], | |
"sample": "Elec Pick Bass" | |
} | |
] | |
}, | |
{ | |
"index": 73, | |
"title": "Sustain E Bass", | |
"keymap": [ | |
"Elec Pick Bass" | |
] | |
}, | |
{ | |
"index": 74, | |
"title": "Ripper Bass", | |
"keymap": [ | |
"Finger Atk Bass" | |
] | |
}, | |
{ | |
"index": 75, | |
"title": "Yama Bass", | |
"keymap": [ | |
"Syn Bass Slap", | |
"Hard Elec Piano", | |
"Syn Guitar" | |
] | |
}, | |
{ | |
"index": 76, | |
"title": "Synth Fretless", | |
"keymap": [ | |
"Syn Bass Pick" | |
] | |
}, | |
{ | |
"index": 77, | |
"title": "Fretless Lead", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
95 | |
], | |
"sample": "Syn Bass Pick" | |
}, | |
{ | |
"interval": [ | |
0, | |
68 | |
], | |
"sample": "Syn Bass Pick" | |
} | |
] | |
}, | |
{ | |
"index": 78, | |
"title": "Moogy Bass 1", | |
"keymap": [ | |
"Sawtooth", | |
"Sawtooth", | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 79, | |
"title": "Moogy Bass 2", | |
"keymap": [ | |
"Sawtooth", | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 80, | |
"title": "Mix Bass", | |
"keymap": [ | |
"Sawtooth", | |
"Very Dull Square", | |
{ | |
"interval": [ | |
0, | |
62 | |
], | |
"sample": "Elec Slap Bass" | |
} | |
] | |
}, | |
{ | |
"index": 81, | |
"title": "Tite Rave Bass", | |
"keymap": [ | |
"Partials 1&2", | |
"Triangle Wave" | |
] | |
}, | |
{ | |
"index": 82, | |
"title": "Synth Bass", | |
"keymap": [ | |
"Chirp", | |
"Very Dull Saw" | |
] | |
}, | |
{ | |
"index": 83, | |
"title": "House Bass", | |
"keymap": [ | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 84, | |
"title": "Acoustic Guitar", | |
"keymap": [ | |
"Acoustic Guitar" | |
] | |
}, | |
{ | |
"index": 85, | |
"title": "Steel Str Guitar", | |
"keymap": [ | |
"Acoustic Guitar" | |
] | |
}, | |
{ | |
"index": 86, | |
"title": "12-str Guitar", | |
"keymap": [ | |
"Acoustic Guitar", | |
{ | |
"interval": [ | |
0, | |
45 | |
], | |
"sample": "Acoustic Guitar" | |
}, | |
{ | |
"interval": [ | |
47, | |
95 | |
], | |
"sample": "Acoustic Guitar" | |
} | |
] | |
}, | |
{ | |
"index": 87, | |
"title": "Strummer Guitar", | |
"keymap": [ | |
"Acoustic Guitar", | |
"Acoustic Guitar" | |
] | |
}, | |
{ | |
"index": 88, | |
"title": "Slo Chorus Gtr", | |
"keymap": [ | |
"Elec Jazz Guitar", | |
"Elec Jazz Guitar" | |
] | |
}, | |
{ | |
"index": 89, | |
"title": "Captain Crunch", | |
"keymap": [ | |
"5 String Guitar", | |
"Shift Guitar 2", | |
"Crash Cymbal" | |
] | |
}, | |
{ | |
"index": 90, | |
"title": "Smooth Lead", | |
"keymap": [ | |
"Elec Jazz Guitar", | |
"Sine Wave", | |
"Elec Jazz Guitar" | |
] | |
}, | |
{ | |
"index": 91, | |
"title": "Dist Harmonics", | |
"keymap": [ | |
"Elec Jazz Guitar" | |
] | |
}, | |
{ | |
"index": 92, | |
"title": "Kotolin", | |
"keymap": [ | |
"Acoustic Guitar", | |
{ | |
"interval": [ | |
0, | |
45 | |
], | |
"sample": "Acoustic Guitar" | |
}, | |
{ | |
"interval": [ | |
47, | |
95 | |
], | |
"sample": "Acoustic Guitar" | |
} | |
] | |
}, | |
{ | |
"index": 93, | |
"title": "Cee Tuar", | |
"keymap": [ | |
"Acoustic Guitar", | |
"5 String Guitar", | |
"Elec Jazz Guitar" | |
] | |
}, | |
{ | |
"index": 94, | |
"title": "Green Acres", | |
"keymap": [ | |
"5 String Guitar" | |
] | |
}, | |
{ | |
"index": 95, | |
"title": "Perc Organ 2500", | |
"keymap": [ | |
"Drawbars1-3 Dist", | |
"Drawbars1-3 Dist", | |
"Sine Wave" | |
] | |
}, | |
{ | |
"index": 96, | |
"title": "Ballad Organ 2", | |
"keymap": [ | |
"Drawbars 1-3", | |
"Drawbars 1-3" | |
] | |
}, | |
{ | |
"index": 97, | |
"title": "Gospel Organ", | |
"keymap": [ | |
"Drawbars 1-4,8", | |
"Drawbars 1-4,8", | |
"Sine Wave" | |
] | |
}, | |
{ | |
"index": 98, | |
"title": "Drive Organ", | |
"keymap": [ | |
"Full Drawbars", | |
"Full Drawbars", | |
"Partials 2-4" | |
] | |
}, | |
{ | |
"index": 99, | |
"title": "Rotating B's&M's", | |
"keymap": [ | |
"Drawbars 1-3", | |
"Drawbars 1-3", | |
"Sine Wave" | |
] | |
}, | |
{ | |
"index": 100, | |
"title": "Cheeze", | |
"keymap": [ | |
"Partials 1&2" | |
] | |
}, | |
{ | |
"index": 101, | |
"title": "Tamborgan", | |
"keymap": [ | |
"Partials 1&12", | |
"Wood Bars", | |
"Clave" | |
] | |
}, | |
{ | |
"index": 102, | |
"title": "Organ Pad", | |
"keymap": [ | |
"Drawbars 1-3", | |
"Drawbars 1-3", | |
"Sine Wave" | |
] | |
}, | |
{ | |
"index": 103, | |
"title": "Chiffy Pipes", | |
"keymap": [ | |
"Partials 1-3", | |
{ | |
"interval": [ | |
0, | |
69 | |
], | |
"sample": "Clave" | |
} | |
] | |
}, | |
{ | |
"index": 104, | |
"title": "Offertory", | |
"keymap": [ | |
"Partials 1&6", | |
"Wood Bars", | |
"Partials 1,2,4,6" | |
] | |
}, | |
{ | |
"index": 105, | |
"title": "Pedal Pipes", | |
"keymap": [ | |
"Very Dull Saw", | |
"Partials 1,2,4,6", | |
"Soft Elec Piano" | |
] | |
}, | |
{ | |
"index": 106, | |
"title": "Church Organ", | |
"keymap": [ | |
"Drawbars 1-4,8", | |
"Drawbars 1-4,8", | |
"Full Drawbars" | |
] | |
}, | |
{ | |
"index": 107, | |
"title": "Resorgan", | |
"keymap": [ | |
"Ensemble Strings", | |
"Drawbars 1-3" | |
] | |
}, | |
{ | |
"index": 108, | |
"title": "Fast Strings", | |
"keymap": [ | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 109, | |
"title": "Att ctl Fast Str", | |
"keymap": [ | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 110, | |
"title": "Att ctl Med Str", | |
"keymap": [ | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 111, | |
"title": "SfzTrem Strings", | |
"keymap": [ | |
"Ensemble Strings", | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 112, | |
"title": "ClassicalStrings", | |
"keymap": [ | |
"Solo Strings", | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 113, | |
"title": "SloClassical Str", | |
"keymap": [ | |
"Solo Strings", | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 114, | |
"title": "Silk Strings", | |
"keymap": [ | |
"Ensemble Strings", | |
"Solo Strings", | |
"Solo Strings" | |
] | |
}, | |
{ | |
"index": 115, | |
"title": "Fast Violin", | |
"keymap": [ | |
"Solo Strings" | |
] | |
}, | |
{ | |
"index": 116, | |
"title": "Slo Solo Cello", | |
"keymap": [ | |
"Solo Strings" | |
] | |
}, | |
{ | |
"index": 117, | |
"title": "Stereo Slo Str", | |
"keymap": [ | |
"Ensemble Strings", | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 118, | |
"title": "Cathedral Choir", | |
"keymap": [ | |
"Voices", | |
"Voices" | |
] | |
}, | |
{ | |
"index": 119, | |
"title": "Mixed Choir", | |
"keymap": [ | |
"Voices", | |
"Voices" | |
] | |
}, | |
{ | |
"index": 120, | |
"title": "The Choir", | |
"keymap": [ | |
"Voices", | |
"Voices" | |
] | |
}, | |
{ | |
"index": 121, | |
"title": "Wendy's Flute", | |
"keymap": [ | |
"Flute" | |
] | |
}, | |
{ | |
"index": 122, | |
"title": "Treble Flute", | |
"keymap": [ | |
"Flute" | |
] | |
}, | |
{ | |
"index": 123, | |
"title": "Baroque Flute", | |
"keymap": [ | |
"Flute" | |
] | |
}, | |
{ | |
"index": 124, | |
"title": "Soft Tenor Sax", | |
"keymap": [ | |
"Tenor Saxophone", | |
{ | |
"interval": [ | |
0, | |
81 | |
], | |
"sample": "Flute" | |
} | |
] | |
}, | |
{ | |
"index": 125, | |
"title": "Fast Solo Tenor", | |
"keymap": [ | |
"Tenor Saxophone" | |
] | |
}, | |
{ | |
"index": 126, | |
"title": "Dynamic Trumpet", | |
"keymap": [ | |
"Trumpet" | |
] | |
}, | |
{ | |
"index": 127, | |
"title": "Miles Unmuted", | |
"keymap": [ | |
"Trumpet" | |
] | |
}, | |
{ | |
"index": 128, | |
"title": "Strght Mute Trpt", | |
"keymap": [ | |
"Trumpet" | |
] | |
}, | |
{ | |
"index": 129, | |
"title": "Almost Muted", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
83 | |
], | |
"sample": "Trumpet" | |
} | |
] | |
}, | |
{ | |
"index": 130, | |
"title": "Solo Trombone", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
87 | |
], | |
"sample": "Trombone" | |
} | |
] | |
}, | |
{ | |
"index": 131, | |
"title": "Sfz Bone", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
87 | |
], | |
"sample": "Trombone" | |
} | |
] | |
}, | |
{ | |
"index": 132, | |
"title": "Trumpet Section", | |
"keymap": [ | |
"Trumpet", | |
"Trombet", | |
{ | |
"interval": [ | |
0, | |
83 | |
], | |
"sample": "Trumpet" | |
} | |
] | |
}, | |
{ | |
"index": 133, | |
"title": "Hip Brass", | |
"keymap": [ | |
"Trombone/Trumpet", | |
"Trumpet", | |
"Tenor Saxophone" | |
] | |
}, | |
{ | |
"index": 134, | |
"title": "Brt Miami Brass", | |
"keymap": [ | |
"Trumpet", | |
"Trumpet", | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 135, | |
"title": "Orchestral Brass", | |
"keymap": 5 | |
}, | |
{ | |
"index": 136, | |
"title": "Sax Section", | |
"keymap": [ | |
"Tenor Saxophone", | |
"Tenor Saxophone", | |
{ | |
"interval": [ | |
0, | |
51 | |
], | |
"sample": "Tenor Saxophone" | |
} | |
] | |
}, | |
{ | |
"index": 137, | |
"title": "Dyn Big Band", | |
"keymap": [ | |
"Sax no Altissimo", | |
"Bone/Trp 2", | |
"Flute" | |
] | |
}, | |
{ | |
"index": 138, | |
"title": "Flute & Slo Str", | |
"keymap": [ | |
"Solo Strings", | |
"Flute", | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 139, | |
"title": "Horn&Flute w/Str", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
54 | |
], | |
"sample": "Trumpbone" | |
}, | |
"Ensemble Strings", | |
"Flute" | |
] | |
}, | |
{ | |
"index": 140, | |
"title": "DynamicOrchestra", | |
"keymap": 8 | |
}, | |
{ | |
"index": 141, | |
"title": "Touch Orchestra", | |
"keymap": 8 | |
}, | |
{ | |
"index": 142, | |
"title": "Slo Ensemble", | |
"keymap": [ | |
"Solo Strings", | |
"Ensemble Strings", | |
"Clave Atk" | |
] | |
}, | |
{ | |
"index": 143, | |
"title": "W Tell Orchestra", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
83 | |
], | |
"sample": "Ensemble Strings" | |
}, | |
{ | |
"interval": [ | |
0, | |
83 | |
], | |
"sample": "Trombone/Trumpet" | |
} | |
] | |
}, | |
{ | |
"index": 144, | |
"title": "Jazz Band", | |
"keymap": 11 | |
}, | |
{ | |
"index": 145, | |
"title": "Rock Quartet", | |
"keymap": 13 | |
}, | |
{ | |
"index": 146, | |
"title": "Gargantuanism", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
77 | |
], | |
"sample": "Ensemble Strings" | |
}, | |
"Grand Piano", | |
"Voices" | |
] | |
}, | |
{ | |
"index": 147, | |
"title": "Tranquil Pluck", | |
"keymap": [ | |
"Voices", | |
"Six String Mutes" | |
] | |
}, | |
{ | |
"index": 148, | |
"title": "The Chase", | |
"keymap": [ | |
"Ensemble Strings", | |
"Chiff", | |
{ | |
"interval": [ | |
0, | |
78 | |
], | |
"sample": "Syn Voices 2" | |
} | |
] | |
}, | |
{ | |
"index": 149, | |
"title": "Enterprize", | |
"keymap": [ | |
"Voices", | |
"Flute", | |
"Metal Clank" | |
] | |
}, | |
{ | |
"index": 150, | |
"title": "Magic Orchestra", | |
"keymap": [ | |
"Grand Piano", | |
"Ride Rim Cymbal", | |
{ | |
"interval": [ | |
0, | |
77 | |
], | |
"sample": "Ensemble Strings" | |
} | |
] | |
}, | |
{ | |
"index": 151, | |
"title": "Passion Source", | |
"keymap": [ | |
"Flute", | |
"Flute", | |
"Tambourine" | |
] | |
}, | |
{ | |
"index": 152, | |
"title": "Microwave", | |
"keymap": [ | |
"Buzz Wave", | |
"Buzz Wave" | |
] | |
}, | |
{ | |
"index": 153, | |
"title": "Fuzz Lite", | |
"keymap": [ | |
"Buzz Wave", | |
"Buzz Wave" | |
] | |
}, | |
{ | |
"index": 154, | |
"title": "Solina Phaze", | |
"keymap": [ | |
"Sawtooth", | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 155, | |
"title": "Arystal", | |
"keymap": [ | |
"Metal Clank", | |
"Flute", | |
"Voices" | |
] | |
}, | |
{ | |
"index": 156, | |
"title": "Timershift", | |
"keymap": [ | |
"ExtDynPrtls2", | |
"ExtDynPrtls1", | |
"Partials 1&12" | |
] | |
}, | |
{ | |
"index": 157, | |
"title": "Aurora", | |
"keymap": [ | |
"Soft Elec Piano" | |
] | |
}, | |
{ | |
"index": 158, | |
"title": "Gongers", | |
"keymap": [ | |
"FM Bell Trans", | |
"FM Bell Trans", | |
"FM Bell Trans" | |
] | |
}, | |
{ | |
"index": 159, | |
"title": "Arrakis Grand", | |
"keymap": [ | |
"Grand Piano", | |
"Grand Piano" | |
] | |
}, | |
{ | |
"index": 160, | |
"title": "Sisternal", | |
"keymap": [ | |
"Tambourine", | |
"Mellow Vox", | |
"Mellow Vox" | |
] | |
}, | |
{ | |
"index": 161, | |
"title": "PPG 4", | |
"keymap": [ | |
"Partials 1,3,5", | |
"Partials 1,3,5" | |
] | |
}, | |
{ | |
"index": 162, | |
"title": "Pseudomento MW", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
83 | |
], | |
"sample": "Sawtooth" | |
}, | |
{ | |
"interval": [ | |
0, | |
83 | |
], | |
"sample": "Sawtooth" | |
} | |
] | |
}, | |
{ | |
"index": 163, | |
"title": "Big Strings", | |
"keymap": [ | |
"Ensemble Strings", | |
"Ensemble Strings", | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 164, | |
"title": "Spaced", | |
"keymap": [ | |
"Partials 1-3", | |
"Voices" | |
] | |
}, | |
{ | |
"index": 165, | |
"title": "Digital Choir", | |
"keymap": [ | |
"Ensemble Strings", | |
{ | |
"interval": [ | |
0, | |
83 | |
], | |
"sample": "Ensemble Strings" | |
} | |
] | |
}, | |
{ | |
"index": 166, | |
"title": "Meditation Pad", | |
"keymap": [ | |
"Six String Mutes", | |
"Very Dull Saw", | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 167, | |
"title": "The Cymbal Sings", | |
"keymap": [ | |
"Crash Cymbal", | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 168, | |
"title": "Slo FlangeStrngs", | |
"keymap": [ | |
"Ensemble Strings", | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 169, | |
"title": "Lushlife", | |
"keymap": [ | |
"Syn Voices 2", | |
"Ensemble Strings", | |
"Flute" | |
] | |
}, | |
{ | |
"index": 170, | |
"title": "Crystal too", | |
"keymap": [ | |
"Metal Clank" | |
] | |
}, | |
{ | |
"index": 171, | |
"title": "Multi Marimba", | |
"keymap": [ | |
"Wood Bars", | |
"Wood Bars", | |
"Wood Bars" | |
] | |
}, | |
{ | |
"index": 172, | |
"title": "Wave Power", | |
"keymap": 8 | |
}, | |
{ | |
"index": 173, | |
"title": "Noo Mutes", | |
"keymap": [ | |
"Cross Stick", | |
"Six String Mutes" | |
] | |
}, | |
{ | |
"index": 174, | |
"title": "Hammer Violin", | |
"keymap": [ | |
"Solo Strings", | |
"Solo Strings", | |
"Solo Strings" | |
] | |
}, | |
{ | |
"index": 175, | |
"title": "Mallet Flutes", | |
"keymap": [ | |
"Chiff", | |
"Wood Bars", | |
"Flute" | |
] | |
}, | |
{ | |
"index": 176, | |
"title": "Malletoo", | |
"keymap": [ | |
"Soft Elec Piano", | |
"Soft Elec Piano", | |
"Soft Elec Piano" | |
] | |
}, | |
{ | |
"index": 177, | |
"title": "Ethereal Echoes", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
42 | |
], | |
"sample": "Soft Elec Piano" | |
}, | |
"Partials 2-4", | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 178, | |
"title": "Padifier", | |
"keymap": [ | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 179, | |
"title": "Spaced Inn", | |
"keymap": [ | |
"Ensemble Strings", | |
"Voices" | |
] | |
}, | |
{ | |
"index": 180, | |
"title": "Glass Bow", | |
"keymap": [ | |
"Soft Elec Piano", | |
"Soft Elec Piano" | |
] | |
}, | |
{ | |
"index": 181, | |
"title": "Angel Pass", | |
"keymap": [ | |
"Voices", | |
"Voices" | |
] | |
}, | |
{ | |
"index": 182, | |
"title": "In the Air", | |
"keymap": [ | |
"Sawtooth", | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 183, | |
"title": "Matrix Mellostr", | |
"keymap": [ | |
"Very Dull Saw", | |
"Very Dull Saw", | |
"Very Dull Saw" | |
] | |
}, | |
{ | |
"index": 184, | |
"title": "Ethereal Strings", | |
"keymap": [ | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 185, | |
"title": "Dawning", | |
"keymap": [ | |
"Crash Cymbal", | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 186, | |
"title": "Synth Strings", | |
"keymap": [ | |
"Dull Sawtooth", | |
"Dull Sawtooth" | |
] | |
}, | |
{ | |
"index": 187, | |
"title": "Choir Fixer", | |
"keymap": [ | |
"Voices", | |
"Mellow Vox" | |
] | |
}, | |
{ | |
"index": 188, | |
"title": "Shine On", | |
"keymap": [ | |
"Ensemble Strings", | |
"Ensemble Strings" | |
] | |
}, | |
{ | |
"index": 189, | |
"title": "ChoirStrings", | |
"keymap": [ | |
"Ensemble Strings", | |
"Voices" | |
] | |
}, | |
{ | |
"index": 190, | |
"title": "Launch Pad", | |
"keymap": [ | |
"Ensemble Strings", | |
"Mellow Vox" | |
] | |
}, | |
{ | |
"index": 191, | |
"title": "cymbal thing", | |
"keymap": [ | |
"Ride Bell Cymbal" | |
] | |
}, | |
{ | |
"index": 192, | |
"title": "a no way CS", | |
"keymap": [ | |
"Sawtooth" | |
] | |
}, | |
{ | |
"index": 193, | |
"title": "Environments", | |
"keymap": 8 | |
}, | |
{ | |
"index": 194, | |
"title": "Gremlin Group", | |
"keymap": 19 | |
}, | |
{ | |
"index": 195, | |
"title": "Thunder Storm", | |
"keymap": [ | |
{ | |
"interval": [ | |
0, | |
59 | |
], | |
"sample": "DrySnare1 soft" | |
}, | |
{ | |
"interval": [ | |
54, | |
95 | |
], | |
"sample": "Grand Piano" | |
}, | |
{ | |
"interval": [ | |
47, | |
95 | |
], | |
"sample": "Wood Bars" | |
} | |
] | |
}, | |
{ | |
"index": 196, | |
"title": "Northern Winds", | |
"keymap": [ | |
"Grand Piano", | |
"Grand Piano" | |
] | |
}, | |
{ | |
"index": 197, | |
"title": "Doomsday", | |
"keymap": [ | |
"Amb Snare 2", | |
"Voices", | |
"Crash Cymbal" | |
] | |
}, | |
{ | |
"index": 198, | |
"title": "Click", | |
"keymap": [ | |
"Clave" | |
] | |
}, | |
{ | |
"index": 199, | |
"title": "Default Program", | |
"keymap": [ | |
"Grand Piano" | |
] | |
} | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment