mirror of
https://github.com/freedoom/freedoom.git
synced 2025-09-04 13:25:47 -04:00
The tags are shorthand for the license of each file and avoid copying the full license text into each one (and avoids having to manually update the dates in each one...).
349 lines
15 KiB
Python
349 lines
15 KiB
Python
# SPDX-License-Identifier: BSD-3-Clause
|
|
#
|
|
# Config file for GUS config generator.
|
|
#
|
|
|
|
# Names of GUS instrument files to use for playing MIDI.
|
|
# These are the names of the .pat files in the \ultrasnd\midi directory
|
|
# that are loaded into the card.
|
|
|
|
GUS_INSTR_PATCHES = {
|
|
0: "acpiano", # #001 - Acoustic Grand Piano
|
|
1: "britepno", # #002 - Bright Acoustic Piano
|
|
2: "synpiano", # #003 - Electric Grand Piano
|
|
3: "honky", # #004 - Honky-tonk Piano
|
|
4: "epiano1", # #005 - Electric Piano 1
|
|
5: "epiano2", # #006 - Electric Piano 2
|
|
6: "hrpschrd", # #007 - Harpsichord
|
|
7: "clavinet", # #008 - Clavi
|
|
8: "celeste", # #009 - Celesta
|
|
9: "glocken", # #010 - Glockenspiel
|
|
10: "musicbox", # #011 - Music Box
|
|
11: "vibes", # #012 - Vibraphone
|
|
12: "marimba", # #013 - Marimba
|
|
13: "xylophon", # #014 - Xylophone
|
|
14: "tubebell", # #015 - Tubular Bells
|
|
15: "santur", # #016 - Dulcimer
|
|
16: "homeorg", # #017 - Drawbar Organ
|
|
17: "percorg", # #018 - Percussive Organ
|
|
18: "rockorg", # #019 - Rock Organ
|
|
19: "church", # #020 - Church Organ
|
|
20: "reedorg", # #021 - Reed Organ
|
|
21: "accordn", # #022 - Accordion
|
|
22: "harmonca", # #023 - Harmonica
|
|
23: "concrtna", # #024 - Tango Accordion
|
|
24: "nyguitar", # #025 - Acoustic Guitar (nylon)
|
|
25: "acguitar", # #026 - Acoustic Guitar (steel)
|
|
26: "jazzgtr", # #027 - Electric Guitar (jazz)
|
|
27: "cleangtr", # #028 - Electric Guitar (clean)
|
|
28: "mutegtr", # #029 - Electric Guitar (muted)
|
|
29: "odguitar", # #030 - Overdriven Guitar
|
|
30: "distgtr", # #031 - Distortion Guitar
|
|
31: "gtrharm", # #032 - Guitar harmonics
|
|
32: "acbass", # #033 - Acoustic Bass
|
|
33: "fngrbass", # #034 - Electric Bass (finger)
|
|
34: "pickbass", # #035 - Electric Bass (pick)
|
|
35: "fretless", # #036 - Fretless Bass
|
|
36: "slapbas1", # #037 - Slap Bass 1
|
|
37: "slapbas2", # #038 - Slap Bass 2
|
|
38: "synbass1", # #039 - Synth Bass 1
|
|
39: "synbass2", # #040 - Synth Bass 2
|
|
40: "violin", # #041 - Violin
|
|
41: "viola", # #042 - Viola
|
|
42: "cello", # #043 - Cello
|
|
43: "contraba", # #044 - Contrabass
|
|
44: "tremstr", # #045 - Tremolo Strings
|
|
45: "pizzcato", # #046 - Pizzicato Strings
|
|
46: "harp", # #047 - Orchestral Harp
|
|
47: "timpani", # #048 - Timpani
|
|
48: "marcato", # #049 - String Ensemble 1
|
|
49: "slowstr", # #050 - String Ensemble 2
|
|
50: "synstr1", # #051 - SynthStrings 1
|
|
51: "synstr2", # #052 - SynthStrings 2
|
|
52: "choir", # #053 - Choir Aahs
|
|
53: "doo", # #054 - Voice Oohs
|
|
54: "voices", # #055 - Synth Voice
|
|
55: "orchhit", # #056 - Orchestra Hit
|
|
56: "trumpet", # #057 - Trumpet
|
|
57: "trombone", # #058 - Trombone
|
|
58: "tuba", # #059 - Tuba
|
|
59: "mutetrum", # #060 - Muted Trumpet
|
|
60: "frenchrn", # #061 - French Horn
|
|
61: "hitbrass", # #062 - Brass Section
|
|
62: "synbras1", # #063 - SynthBrass 1
|
|
63: "synbras2", # #064 - SynthBrass 2
|
|
64: "sprnosax", # #065 - Soprano Sax
|
|
65: "altosax", # #066 - Alto Sax
|
|
66: "tenorsax", # #067 - Tenor Sax
|
|
67: "barisax", # #068 - Baritone Sax
|
|
68: "oboe", # #069 - Oboe
|
|
69: "englhorn", # #070 - English Horn
|
|
70: "bassoon", # #071 - Bassoon
|
|
71: "clarinet", # #072 - Clarinet
|
|
72: "piccolo", # #073 - Piccolo
|
|
73: "flute", # #074 - Flute
|
|
74: "recorder", # #075 - Recorder
|
|
75: "woodflut", # #076 - Pan Flute
|
|
76: "bottle", # #077 - Blown Bottle
|
|
77: "shakazul", # #078 - Shakuhachi
|
|
78: "whistle", # #079 - Whistle
|
|
79: "ocarina", # #080 - Ocarina
|
|
80: "sqrwave", # #081 - Lead 1 (square)
|
|
81: "sawwave", # #082 - Lead 2 (sawtooth)
|
|
82: "calliope", # #083 - Lead 3 (calliope)
|
|
83: "chiflead", # #084 - Lead 4 (chiff)
|
|
84: "charang", # #085 - Lead 5 (charang)
|
|
85: "voxlead", # #086 - Lead 6 (voice)
|
|
86: "lead5th", # #087 - Lead 7 (fifths)
|
|
87: "basslead", # #088 - Lead 8 (bass + lead)
|
|
88: "fantasia", # #089 - Pad 1 (new age)
|
|
89: "warmpad", # #090 - Pad 2 (warm)
|
|
90: "polysyn", # #091 - Pad 3 (polysynth)
|
|
91: "ghostie", # #092 - Pad 4 (choir)
|
|
92: "bowglass", # #093 - Pad 5 (bowed)
|
|
93: "metalpad", # #094 - Pad 6 (metallic)
|
|
94: "halopad", # #095 - Pad 7 (halo)
|
|
95: "sweeper", # #096 - Pad 8 (sweep)
|
|
96: "aurora", # #097 - FX 1 (rain)
|
|
97: "soundtrk", # #098 - FX 2 (soundtrack)
|
|
98: "crystal", # #099 - FX 3 (crystal)
|
|
99: "atmosphr", # #100 - FX 4 (atmosphere)
|
|
100: "freshair", # #101 - FX 5 (brightness)
|
|
101: "unicorn", # #102 - FX 6 (goblins)
|
|
102: "echovox", # #103 - FX 7 (echoes)
|
|
103: "startrak", # #104 - FX 8 (sci-fi)
|
|
104: "sitar", # #105 - Sitar
|
|
105: "banjo", # #106 - Banjo
|
|
106: "shamisen", # #107 - Shamisen
|
|
107: "koto", # #108 - Koto
|
|
108: "kalimba", # #109 - Kalimba
|
|
109: "bagpipes", # #110 - Bag pipe
|
|
110: "fiddle", # #111 - Fiddle
|
|
111: "shannai", # #112 - Shanai
|
|
112: "carillon", # #113 - Tinkle Bell
|
|
113: "agogo", # #114 - Agogo
|
|
114: "steeldrm", # #115 - Steel Drums
|
|
115: "woodblk", # #116 - Woodblock
|
|
116: "taiko", # #117 - Taiko Drum
|
|
117: "toms", # #118 - Melodic Tom
|
|
118: "syntom", # #119 - Synth Drum
|
|
119: "revcym", # #120 - Reverse Cymbal
|
|
120: "fx-fret", # #121 - Guitar Fret Noise
|
|
121: "fx-blow", # #122 - Breath Noise
|
|
122: "seashore", # #123 - Seashore
|
|
123: "jungle", # #124 - Bird Tweet
|
|
124: "telephon", # #125 - Telephone Ring
|
|
125: "helicptr", # #126 - Helicopter
|
|
126: "applause", # #127 - Applause
|
|
127: "pistol", # #128 - Gunshot
|
|
128: "blank",
|
|
163: "kick1", # #35 Acoustic Bass Drum
|
|
164: "kick2", # #36 Bass Drum 1
|
|
165: "stickrim", # #37 Side Stick
|
|
166: "snare1", # #38 Acoustic Snare
|
|
167: "claps", # #39 Hand Clap
|
|
168: "snare2", # #40 Electric Snare
|
|
169: "tomlo2", # #41 Low Floor Tom
|
|
170: "hihatcl", # #42 Closed Hi Hat
|
|
171: "tomlo1", # #43 High Floor Tom
|
|
172: "hihatpd", # #44 Pedal Hi-Hat
|
|
173: "tommid2", # #45 Low Tom
|
|
174: "hihatop", # #46 Open Hi-Hat
|
|
175: "tommid1", # #47 Low-Mid Tom
|
|
176: "tomhi2", # #48 Hi-Mid Tom
|
|
177: "cymcrsh1", # #49 Crash Cymbal 1
|
|
178: "tomhi1", # #50 High Tom
|
|
179: "cymride1", # #51 Ride Cymbal 1
|
|
180: "cymchina", # #52 Chinese Cymbal
|
|
181: "cymbell", # #53 Ride Bell
|
|
182: "tamborin", # #54 Tambourine
|
|
183: "cymsplsh", # #55 Splash Cymbal
|
|
184: "cowbell", # #56 Cowbell
|
|
185: "cymcrsh2", # #57 Crash Cymbal 2
|
|
186: "vibslap", # #58 Vibraslap
|
|
187: "cymride2", # #59 Ride Cymbal 2
|
|
188: "bongohi", # #60 Hi Bongo
|
|
189: "bongolo", # #61 Low Bongo
|
|
190: "congahi1", # #62 Mute Hi Conga
|
|
191: "congahi2", # #63 Open Hi Conga
|
|
192: "congalo", # #64 Low Conga
|
|
193: "timbaleh", # #65 High Timbale
|
|
194: "timbalel", # #66 Low Timbale
|
|
195: "agogohi", # #67 High Agogo
|
|
196: "agogolo", # #68 Low Agogo
|
|
197: "cabasa", # #69 Cabasa
|
|
198: "maracas", # #70 Maracas
|
|
199: "whistle1", # #71 Short Whistle
|
|
200: "whistle2", # #72 Long Whistle
|
|
201: "guiro1", # #73 Short Guiro
|
|
202: "guiro2", # #74 Long Guiro
|
|
203: "clave", # #75 Claves
|
|
204: "woodblk1", # #76 Hi Wood Block
|
|
205: "woodblk2", # #77 Low Wood Block
|
|
206: "cuica1", # #78 Mute Cuica
|
|
207: "cuica2", # #79 Open Cuica
|
|
208: "triangl1", # #80 Mute Triangle
|
|
209: "triangl2", # #81 Open Triangle
|
|
}
|
|
|
|
# These are the data sizes of the patch files distributed with the
|
|
# GUS drivers. These are used to calculate the size in RAM of the
|
|
# generated patch sets to check that they are within the limits.
|
|
# and check it is within the limit.
|
|
|
|
PATCH_FILE_SIZES = {
|
|
"acbass": 5248, "accordn": 9616, "acguitar": 26080,
|
|
"acpiano": 32256, "agogo": 13696, "agogohi": 3488,
|
|
"agogolo": 3488, "altosax": 5616, "applause": 30064,
|
|
"atmosphr": 31360, "aurora": 31088, "bagpipes": 7760,
|
|
"banjo": 32016, "barisax": 10544, "basslead": 26496,
|
|
"bassoon": 8000, "belltree": 31888, "blank": 1520,
|
|
"bongohi": 3456, "bongolo": 4448, "bottle": 12368,
|
|
"bowglass": 24688, "britepno": 36000, "cabasa": 8448,
|
|
"calliope": 22992, "carillon": 5888, "castinet": 6016,
|
|
"celeste": 9936, "cello": 9120, "charang": 45056,
|
|
"chiflead": 31536, "choir": 22480, "church": 2144,
|
|
"claps": 5696, "clarinet": 9184, "clave": 2352,
|
|
"clavinet": 1440, "cleangtr": 22768, "concrtna": 8784,
|
|
"congahi1": 4224, "congahi2": 4704, "congalo": 4704,
|
|
"contraba": 4704, "cowbell": 3168, "crystal": 30224,
|
|
"cuica1": 9344, "cuica2": 12848, "cymbell": 17248,
|
|
"cymchina": 24112, "cymcrsh1": 31520, "cymcrsh2": 31040,
|
|
"cymride1": 17664, "cymride2": 17664, "cymsplsh": 31520,
|
|
"distgtr": 18848, "doo": 8464, "echovox": 14976,
|
|
"englhorn": 12096, "epiano1": 7344, "epiano2": 21936,
|
|
"fantasia": 23456, "fiddle": 5904, "flute": 6032,
|
|
"fngrbass": 9744, "frenchrn": 14128, "freshair": 28992,
|
|
"fretless": 2640, "fx-blow": 28688, "fx-fret": 13648,
|
|
"ghostie": 31488, "glocken": 5184, "gtrharm": 4928,
|
|
"guiro1": 4128, "guiro2": 9248, "halopad": 29984,
|
|
"harmonca": 7408, "harp": 11728, "helicptr": 25008,
|
|
"highq": 1808, "hihatcl": 4560, "hihatop": 20048,
|
|
"hihatpd": 1808, "hitbrass": 31520, "homeorg": 992,
|
|
"honky": 65680, "hrpschrd": 3584, "jazzgtr": 27712,
|
|
"jingles": 16944, "jungle": 13616, "kalimba": 2208,
|
|
"kick1": 4544, "kick2": 5024, "koto": 20832,
|
|
"lead5th": 6464, "maracas": 4560, "marcato": 61232,
|
|
"marimba": 2064, "metalpad": 30288, "metbell": 112,
|
|
"metclick": 112, "musicbox": 15312, "mutegtr": 17008,
|
|
"mutetrum": 9168, "nyguitar": 19200, "oboe": 3952,
|
|
"ocarina": 1616, "odguitar": 12640, "orchhit": 14208,
|
|
"percorg": 7520, "piccolo": 4320, "pickbass": 16416,
|
|
"pistol": 18144, "pizzcato": 19888, "polysyn": 30224,
|
|
"recorder": 2656, "reedorg": 1568, "revcym": 13536,
|
|
"rockorg": 30288, "santur": 21760, "sawwave": 27056,
|
|
"scratch1": 4384, "scratch2": 2288, "seashore": 31040,
|
|
"shakazul": 31136, "shaker": 3104, "shamisen": 13136,
|
|
"shannai": 9792, "sitar": 18288, "slap": 5856,
|
|
"slapbas1": 27872, "slapbas2": 20592, "slowstr": 18192,
|
|
"snare1": 8544, "snare2": 4096, "soundtrk": 19888,
|
|
"sprnosax": 7072, "sqrclick": 112, "sqrwave": 15056,
|
|
"startrak": 27376, "steeldrm": 11952, "stickrim": 2848,
|
|
"sticks": 4224, "surdo1": 9600, "surdo2": 9600,
|
|
"sweeper": 31216, "synbass1": 6160, "synbass2": 2928,
|
|
"synbras1": 30704, "synbras2": 30160, "synpiano": 5456,
|
|
"synstr1": 31216, "synstr2": 16416, "syntom": 30512,
|
|
"taiko": 18672, "tamborin": 8944, "telephon": 4416,
|
|
"tenorsax": 8448, "timbaleh": 5264, "timbalel": 9728,
|
|
"timpani": 7072, "tomhi1": 6576, "tomhi2": 6560,
|
|
"tomlo1": 6560, "tomlo2": 9600, "tommid1": 6560,
|
|
"tommid2": 6560, "toms": 6576, "tremstr": 61232,
|
|
"triangl1": 2224, "triangl2": 15792, "trombone": 12896,
|
|
"trumpet": 6608, "tuba": 5760, "tubebell": 9120,
|
|
"unicorn": 30096, "vibes": 10640, "vibslap": 9456,
|
|
"viola": 27952, "violin": 12160, "voices": 14976,
|
|
"voxlead": 14992, "warmpad": 18080, "whistle": 5872,
|
|
"whistle1": 2000, "whistle2": 928, "woodblk": 3680,
|
|
"woodblk1": 2352, "woodblk2": 3680, "woodflut": 1936,
|
|
"xylophon": 9376,
|
|
}
|
|
|
|
# Groups of "similar sounding" instruments. The first instrument in each
|
|
# group is the "leader" and will be used as the fallback for other
|
|
# instruments in the group if they are not popular enough to be included.
|
|
#
|
|
# These groups are based on having listened to the instruments in the
|
|
# GUS patch set using the generated comparison mid (see comparison.py),
|
|
# with similar sounding instruments being grouped together.
|
|
#
|
|
# If you want to improve the generated config, here's where to start.
|
|
# Separating out into more, smaller groups helps, but the 256KB
|
|
# config's limited size is quite restrictive. In particular, it's
|
|
# important that the "leader" instrument for each group is small
|
|
# (see table above of patch sizes).
|
|
|
|
SIMILAR_GROUPS = [
|
|
# Pianos.
|
|
('synpiano', 'acpiano', 'britepno', 'honky', 'epiano1', 'epiano2',
|
|
'celeste', 'glocken'),
|
|
# Harpsichord sounds noticeably different to pianos:
|
|
('hrpschrd', 'clavinet'),
|
|
# Xylophone etc.
|
|
('marimba', 'musicbox', 'vibes', 'xylophon', 'tubebell', 'carillon',
|
|
'santur', 'kalimba'),
|
|
# Organs.
|
|
('homeorg', 'percorg', 'rockorg', 'church', 'reedorg'),
|
|
# Accordion/Harmonica:
|
|
('accordn', 'harmonca', 'concrtna'),
|
|
# Guitars.
|
|
('nyguitar', 'acguitar', 'jazzgtr', 'cleangtr', 'mutegtr'),
|
|
# Overdriven/distortion guitars sound different. Besides, we
|
|
# definitely want at least one of these.
|
|
('odguitar', 'distgtr', 'gtrharm'),
|
|
# Basses.
|
|
('synbass2', 'acbass', 'fngrbass', 'pickbass', 'fretless', 'slapbas1',
|
|
'slapbas2', 'synbass1', 'basslead'),
|
|
# Violin and similar string instruments.
|
|
('violin', 'viola', 'cello', 'contraba', 'tremstr', 'pizzcato',
|
|
'harp'),
|
|
# Other stringed (?)
|
|
('synstr2', 'slowstr', 'marcato', 'synstr1', 'choir', 'doo', 'voices',
|
|
'orchhit', 'polysyn', 'bowglass'),
|
|
# Trumpet and other brass.
|
|
('trumpet', 'trombone', 'tuba', 'mutetrum', 'frenchrn', 'hitbrass',
|
|
'synbras1', 'synbras2'),
|
|
# Reed instruments.
|
|
('altosax', 'sprnosax', 'tenorsax', 'barisax', 'oboe', 'englhorn',
|
|
'bassoon', 'clarinet'),
|
|
# Pipe instruments.
|
|
('recorder', 'flute', 'piccolo', 'woodflut', 'bottle', 'shakazul',
|
|
'whistle', 'ocarina', 'bagpipes', 'fiddle', 'shannai',
|
|
'calliope', 'chiflead', 'charang'),
|
|
# Leads:
|
|
('sqrwave', 'sawwave', 'voxlead', 'lead5th'),
|
|
# Odd stringed instruments.
|
|
('sitar', 'banjo', 'shamisen', 'koto'),
|
|
# Special effects. Blank unless popular enough to appear.
|
|
('blank', 'fantasia', 'warmpad', 'ghostie',
|
|
'metalpad', 'halopad', 'sweeper', 'aurora', 'soundtrk', 'crystal',
|
|
'atmosphr', 'freshair', 'unicorn', 'echovox', 'startrak', 'fx-fret',
|
|
'fx-blow', 'seashore', 'jungle', 'telephon', 'helicptr', 'applause',
|
|
'pistol'),
|
|
|
|
# Percussion sounds.
|
|
|
|
# Kick:
|
|
('kick2', 'steeldrm', 'taiko', 'kick1'),
|
|
# Conga:
|
|
('congahi2', 'congahi1', 'congalo'),
|
|
# Snare drums:
|
|
('snare2', 'claps', 'snare1'),
|
|
# Toms:
|
|
('tomlo1', 'toms', 'syntom', 'tomlo2', 'tommid1', 'tommid2', 'tomhi2',
|
|
'tomhi1', 'timpani'),
|
|
# Cymbal crash:
|
|
('cymsplsh', 'cymcrsh2', 'cymcrsh1', 'revcym', 'cymchina'),
|
|
# Cymbal ride:
|
|
('cymride1', 'cymride2', 'cymbell'),
|
|
# Hi-hat:
|
|
('hihatpd', 'hihatcl', 'hihatop'),
|
|
# Metallic sounding:
|
|
('bongohi', 'bongolo', 'timbaleh', 'timbalel', 'cowbell',
|
|
'agogohi', 'agogolo', 'agogo', 'triangl1', 'triangl2'),
|
|
# Click:
|
|
('stickrim', 'woodblk1', 'woodblk2', 'woodblk', 'tamborin', 'clave'),
|
|
# Random things.
|
|
('cabasa', 'whistle1', 'whistle2', 'vibslap', 'maracas',
|
|
'guiro1', 'guiro2', 'cuica1', 'cuica2'),
|
|
]
|
|
|