VOGONS


First post, by MusicallyInspired

User metadata
Rank Oldbie
Rank
Oldbie

EDIT: I've successfully programmed this myself after a few nights of staying up late. It'll theoretically work with any MT-32 programmed SYX file and will pull the instrument names to a Cakewalk/Sonar INS file and also name the list after the first Display Write text it finds if there is any, if not it will name from the filename.

DOWNLOAD: https://github.com/MusicallyInspired/Syx2Ins

I've begun attempting to program this myself, so request rescinded. I do need help in understanding some MT-32 sysex commands, however. Details in below posts. Ignore the original text below in this post.

How difficult would it be, and could I trouble anybody to write for me if it's not too much trouble, a quick CLI program that converts any MT-32 instrument listing from a SYX dump file into an INS file that Cakewalk/Sonar can read? The INS format is basically a list of instruments that you can assign to MIDI channels in Cakewalk/Sonar so you know exactly what instrument you're playing with instead of going by a patch number. There are bundled INS default settings for General MIDI and GS with Cakewalk/Sonar, and I even created one by hand for the MT-32 stock list, but it's just too cumbersome to type them all out by hand for every SYX file I want to use when composing with the MT-32. It would be really handy to be able to batch process a bunch of SYX files to grab their instrument names for music projects. Here's an example of an INS file I made myself for KQ1SCI to get an idea of the format if you're not familiar with it.

Just a humble request, I'd appreciate anybody who could help me out if you're looking for a project and if there's any way I can help in return I will.


; ----------------------------------------------------------------------

.Patch Names


[KQ1SCI Patch Bank]
0=Melodic Tom
1=Snare
2=Ride Cymbal
3=Tom
4=Creak
5=Slap Bass 1
6=French Horn 2
7=Strings 1
8=Xylaphone
9=Timpani
10=Harp 2
11=Pipe Organ
12=Clarinet 1
13=Fantasy
14=Soundtrack 1
15=Clarinet 2
16=Flute 1
17=Pizzacato Strings
18=Piano
19=Oboe
20=Gate
21=Elec Piano
22=Splash
23=Zap
24=Drop Bells
25=Frog?
26=Bubbles
27=Frog Note
28=Fall
29=Crash
30=Clav Sound
31=Wind
32=Cymbal
33=Shakuhachi
34=Flute 2
35=Crickets
36=Owl
37=Soundtrack 2
38=Steam
39=Trumpet
40=Slow Sqr Wave
41=Vox
42=Ambience
43=5th Notes
44=Eerie
45=Bird High Tweet
46=Bird Tweet
47=Wolf
48=Drip Steam
49=Sizzle
50=Door Shut
51=Reverse Cymbal
52=Acou Piano
Show last 90 lines
53=Violin 1
54=Violin 2
55=Cello 1
56=Cello 2
57=Harp 1
58=Guitar 2
59=Guitar 2
60=Guitar 1
61=Guitar 1 Loud
62=Slap Bass 2
63=Sitar
64=Acou Bass 1
65=Acou Bass 2
66=Elec Bass 1
67=Elec Bass 2
68=Slap Bass 1
69=Slap Bass 2
70=Fretless Bass 1
71=Fretless Bass 2
72=Flute 1
73=Flute 2
74=Piccolo 1
75=Piccolo 2
76=Recorder
77=Pan Pipes
78=Sax 1
79=Sax 2
80=Sax 3
81=Sax 4
82=Clarinet 1
83=Clarinet 2
84=Oboe
85=English Horn
86=Bassoon
87=Harmonica
88=Trumpet 1
89=Trumpet 2
90=Trombone 1
91=Trombone 2
92=French Horn 1
93=French Horn 2
94=Tuba
95=Brass Sect 1
96=Brass Sec 2
97=Vibe 1
98=Vibe 2
99=Syn Mallet
100=Windbell
101=Glock
102=Tube Bell
103=Xylaphone
104=Marimba
105=Koto
106=Sho
107=Shakuhachi
108=Whistle 1
109=Whistle 2
110=Bottleblow
111=Breathpipe
112=Timpani
113=Melodic Tom
114=Deep Snare
115=Elec Perc 1
116=Elec Perc 2
117=Taiko
118=Taiko Rim
119=Cymbal
120=Castanets
121=Triangle
122=Orche Hit
123=Telephone
124=Bird Tweet
125=One Note Jam
126=Water Bells
127=Jungle Tune

; ----------------------------------------------------------------------

.Note Names


; ----------------------------------------------------------------------

.Instrument Definitions


[KQ1SCI Patch Bank]
Patch[*]=KQ1SCI Patch Bank

Last edited by MusicallyInspired on 2020-04-25, 22:33. Edited 7 times in total.

Yamaha FB-01/IMFC SCI tools thread
My Github
Roland SC-55 Music Packs - Duke Nukem 3D, Doom, and more.

Reply 2 of 15, by MusicallyInspired

User metadata
Rank Oldbie
Rank
Oldbie

Not that I'm aware of...unless you're talking about his Under The Half Dome album, which won't be the entire soundtrack, AFAIK. Why?

Yamaha FB-01/IMFC SCI tools thread
My Github
Roland SC-55 Music Packs - Duke Nukem 3D, Doom, and more.

Reply 3 of 15, by collector

User metadata
Rank l33t
Rank
l33t

I was only reminded because of the patch bank from KQ1SCI. Yeah, I believe it was for Under The Half Dome now that you mention it. There really is not that long of a soundtrack for the game, so it could easily fit on the album with other things.

The Sierra Help Pages -- New Sierra Game Installers -- Sierra Game Patches -- New Non-Sierra Game Installers

Reply 4 of 15, by MusicallyInspired

User metadata
Rank Oldbie
Rank
Oldbie

Ok, as the OP edit suggests, I've begun attempting to program this myself. I've come a fair way and have already begun pulling the Timbre names from the SYX file (at "F0 41 10 16 12 08 xx xx" addresses), after detecting whether it is really an MT-32 SYX file or not (checks for "F0 41 10 16" existence in the file). However, I understand that the Timbre memory list does not necessarily correspond to the Patch memory list which is what I really need. I'm mulling over the MT-32 MIDI Implementation specs and going over each command and what they do, etc, but I'm a little confused as to what the values actually mean in the DATA portion after the "F0 41 10 16 12 05 xx xx" section (which sets Patch memory settings) and before the checksum and "F7". The SYX file I'm working with was created from Conquests of Camelot and acquired from Quest Studios. There is clearly a full 128 instrument patch list with custom instruments everywhere, not to mention most of the custom 64 Timbre memory taken up with new instruments), but there are only 4 instances of the "F0 41 10 16 12 05 xx xx" hex string in the entire SYX file, which doesn't make sense to me. Can someone shed some light on this? I'd ask on the QS forums but, well, they're gone and I can't find enough information about the MT-32 anywhere that really explains everything.

Second question, what exactly is the Patch Temp area used for?

Yamaha FB-01/IMFC SCI tools thread
My Github
Roland SC-55 Music Packs - Duke Nukem 3D, Doom, and more.

Reply 6 of 15, by Cloudschatze

User metadata
Rank Oldbie
Rank
Oldbie

Remember that with SysEx, each data byte has its own address. Per Roland's implementation, an individual SysEx string can explicitly address something as small as a single data byte, or as large as 256 consecutively-addressed data bytes.

Each of the 128 patch memory locations in the MT-32 is comprised of eight data bytes - seven of which correspond to separate parameters, and the eighth of which is a dummy byte - for a total of 1024 bytes of data.

Using the Camelot SysEx dump as an example, the single SysEx string for Patch Memory 1 is as follows:

               ADDRESS  DATA
+------+ +---------------------+
| | | |
F0 41 10 16 12 05 00 00 01 35 18 32 0C 00 01 00 (checksum) F7
+ + + + + + + +
| | | | | | | |
TIMBRE GROUP 05 00 00 -+ | | | | | | |
TIMBRE NUMBER 05 00 01 ----+ | | | | | |
KEY SHIFT 05 00 02 -------+ | | | | |
FINE TUNE 05 00 03 ----------+ | | | |
BENDER RANGE 05 00 04 -------------+ | | |
ASSIGN MODE 05 00 05 ----------------+ | |
REVERB SWITCH 05 00 06 -------------------+ |
dummy 05 00 07 ----------------------+

Sending 128 separate SysEx strings for patch memory isn't efficient or necessary, so the data bytes continue out to comprise a grouping of 32 patch memory locations, hitting against Roland's 256-byte limit for a single SysEx string.

F0 41 10 16 12 05 00 00 01 35 18 32 0C 00 01 00 01 36 18 32 0C 00 01 00 02 03 18 32 0C 00 01 00 ...etc... (checksum) F7
+----------+----------+ +----------+----------+ +----------+----------+
| | |
+ + +
Patch Memory 1 Patch Memory 2 Patch Memory 3

The four 256-byte strings that make up the entire Patch Memory are are as follows

F0 41 10 16 12 05 00 00 ... F7	Patch memory 1 - 32
F0 41 10 16 12 05 02 00 ... F7 Patch memory 33 - 64
F0 41 10 16 12 05 04 00 ... F7 Patch memory 65 - 96
F0 41 10 16 12 05 06 00 ... F7 Patch memory 97 - 128

For each of the Patch Memory locations, the two bytes/parameters that it sounds like you are concerned with are TIMBRE GROUP, and TIMBRE NUMBER.

TIMBRE GROUP is a value of 0 - 3, defined as follows:

0 - Preset A
1 - Preset B
2 - Internal
3 - Rhythm

TIMBRE NUMBER is a value of 0 - 63, corresponding to one of the 64 timbres in the previously-defined timbre group. So, in the example above, Patch Memory 1 references the Taiko timbre.

The Timbre, Patch, and Rhythm Setup Temp areas can be thought of as the "working" areas of the MT-32. The MT-32 doesn't really provide anything in the way of front-panel editing, but imagine turning on the MT-32, and editing the timbre on Part 1. Your edits would all be done against a copy of the timbre in the temporary timbre area. If you were to then switch to a different timbre, and then back to the one you had edited, you would notice that your edits had been lost.

Does any of this help, or is it just adding to the confusion? 😀

Furthermore, did you ever download the "Lost Synthesizer Archive" I'd posted on the QuestStudios forum several years ago, as originally provided by Anders Olsson? It includes patch-map documentation for a number of the SCI0 titles, and might make your life a bit easier...

http://www.symphoniae.com/elw/sierrautil.zip

Reply 7 of 15, by MusicallyInspired

User metadata
Rank Oldbie
Rank
Oldbie

Thank you, that is actually very helpful! No, I hadn't found that archive before. Thanks for it as well! Though, it doesn't make my life easier exactly because I still would like a way to automatically generate the INS files. That's the most brutal part. Figuring out how these files function and getting the programming practice in as well is just fun too, though.

Yamaha FB-01/IMFC SCI tools thread
My Github
Roland SC-55 Music Packs - Duke Nukem 3D, Doom, and more.

Reply 8 of 15, by MusicallyInspired

User metadata
Rank Oldbie
Rank
Oldbie

Well, I did it. Here's the program if there are any composers out there who use Cakewalk/Sonar and want to take advantage of the custom MT-32 libraries of Sierra's games with the SYX files that Tom provided on Quest Studios (now located here http://www.midimusicadventures.com/queststudios/). Or any MT-32 SYX file for that matter.

DOWNLOAD: https://github.com/MusicallyInspired/Syx2Ins

This would also help in composing MT-32 compatible tracks when creating SCI0 and SCI1.1 fangames with the latest release of SCI Companion (http://sciprogramming.com/community/index.php?topic=1420.0). Creating an INS from a Sierra MT-32 Patch file sounds like a fun next project and would aid tremendously in this area as well.

Last edited by MusicallyInspired on 2020-04-25, 22:34. Edited 1 time in total.

Yamaha FB-01/IMFC SCI tools thread
My Github
Roland SC-55 Music Packs - Duke Nukem 3D, Doom, and more.

Reply 10 of 15, by MusicallyInspired

User metadata
Rank Oldbie
Rank
Oldbie

I wasn't able to attach the file to the wiki as I don't have permission, but I made an entry in the audio tools section. I put a link to my site, could you take that file and attach it to the wiki and replace the link?

Yamaha FB-01/IMFC SCI tools thread
My Github
Roland SC-55 Music Packs - Duke Nukem 3D, Doom, and more.