| Newsgroups |
gmane.music.equipment.kurzweil |
| Message-ID |
<[email protected]> |
> If you have details of these file formats, or information pertaining to
> sysex TX/RX for PC3 and Forte, please post a link.
First, the PC3/Forte/Artis will read KRZ K25 K26 files, and do their best
to make the program or setup work. Some object types are not imported
though. There's a section in the manuals that cover this.
As far as I know, Kurzweil has never released the sys-ex specs for the
PC3, Forte, Artis etc. Any information is by analyzing what the editor and
instrument send.
I've attached a Ruby script "pc3" that can list the objects in a PC3/FOR
file, and "dump" some of the easier ones.
I've attached a text file "p3syx2.txt" which kind-of sort-of lists the
sys-ex messages. It is likely inaccurate. There are two styles: the
regular sys-ex F0..F7, and the KPN controllers. The KPN stuff is a series
of controller messages that let you tweak settings deep in the program
layers. It sounds like you want the Object I/O syx messages. They act
similar to the K2000 sysex read and write messages. No banks, no ranges.
K2000 and K2500 file format information is at
http://kurzweil.com/content/migration/downloads/pub/Kurzweil/Pro_Products/K2000-K2vx-K2500/Information/
Also, there's lots of good information on the Mastering Vast forums.
Good luck, you'll need it! :-/
----------
from microbug
F0 07 pid syx
device inquiry F0 7E 7F 06 01 F7
inq. response F0 7E 7F 06 02 07 00 40 00 40 32 2E 32 00 F7
kz fl fh ml mh sw sw sw sw EOX
family model sw version "2.2"
fl fh ml mh
Forte F0 7E 7F 06 02 07 41 00 01 00 33 2E 33 31 F7 3.31
PC3 F0 7E 7F 06 02 07 00 40 00 40 32 2E 32 00 F7 2.2
PC3LE F0 7E 7F 06 02 07 00 40 00 0A 32 2E 31 30 F7 2.1
PC3K F0 7E 7F 06 02 07 00 40 00 0F 33 2E 30 00 F7 3.00
PC3 F0 7E 7F 06 02 07 00 40 00 40 39 38 37 32 F7 9872
Object Domain Messages
F0 07 md sx dom idHL mod seg inst io dataN F7 generic domain message
F0 start of system exclusive message
07 Kurzweil manufacturer ID
md model PC3=$40 PC3LE=$0A PC3K=$0F FORTE=$41 ??
sx device syx-ex id
dom domain
idHL object id hi7 lo7
mod mode 32=ROM, 0-15=channel
seg segment depends on domain and object
ins instance depends on domain, object, level
io I/O 0=request 1=load
dataN 7-bit packed data
F7 end of system exclusive message
F0 07 md sx dom idHL mod seg ins io dataN F7 generic domain message
dom idHL mod seg ins 0 F7 io=0 request
F0 07 md sx dom idHL mod seg ins 1 dataN F7 io=1 send data
F0 07 md sx 00 unknown
F0 07 md sx 01 program select
F0 07 md sx 02 program edit
F0 07 md sx 02 00 00 ch 00 00 00 F7 request program chan info
F0 07 md sx 02 02 48 20 01 02 00 F7 request program dump
F0 07 md sx 02 02 48 20 01 02 01 09 00 33 60 03 .. program dump response
F0 07 md sx 03 system
F0 07 md sx 04 master
F0 07 md sx 04 00 00 00 00 00 00 F7 -> 94bytes req master table???
F0 07 md sx 05 algo
F0 07 md sx 06 midi
F0 07 md sx 07 qab dom 7 freezes ??
F0 07 md sx 08 song
F0 07 md sx 09 effects
F0 07 md sx 0A storage
F0 07 md sx 0B setup
F0 07 md sx 0B idHL 20 00 00 00 F7 req setup name
F0 07 md sx 0B idHL 20 01 00 00 F7 common
F0 07 md sx 0B idHL 20 02 zn 00 F7 zones
F0 07 md sx 0C fx algo
F0 07 md sx 0D fx chain edit
F0 07 md sx 0E intonation
F0 07 md sx 0F kb3 edit
F0 07 md sx 10 pr bn F7 buttons, 70=prs 72=rel, button number
F0 07 md sx 10 70 32 F7 'exit' press
F0 07 md sx 10 72 32 F7 'exit' release
F0 07 0F 00 10 70 14 F7 PC3 go to Quick Access ???
F0 07 0F 00 10 70 03 F7 PC3 back to setup ???
F0 07 md sx 13 unknown
F0 07 md sx 20 "program change" current bank + prog num // dec or hex???
F0 07 md sx 20 00 idHL F7 program select
F0 07 md sx 30 00 00 00 00 00 00 F7 program mode
F0 07 md sx 31 00 00 00 00 00 00 F7 setup mode
F0 07 md sx 33 unknown - some other mode ?
F0 07 md sx 40 ch F7 set active channel
Object I/O Messages
ty2 id2 are lo-hi
ofs3 len3 are lo-med-hi
F0 07 md sx 5A cmd2 ... object I/O
F0 07 md sx 5A 00 00 ty2 id2 ofs3 len3 F7 request data, get load/err
F0 07 md sx 5A 01 00 ty2 id2 ofs3 len3 dataN xs2 F7 send data, get dack/nack
F0 07 md sx 5A 02 00 ty2 id2 ofs3 len3 F7 dack, acknowledge
F0 07 md sx 5A 03 err1 F7 nack, error
F0 07 md sx 5A 04 00 ty2 id2 F7 request object info, get 'info'
F0 07 md sx 5A 05 00 ty2 id2 sz3 usr1 namez F7 obj info, usr: 0=factory 1=user
F0 07 md sx 5A 06 00 ty2 id2 sz2 namez F7 make a new object, get dack/nack
F0 07 md sx 5A 07 00 ty2 id2 F7 delete object, get dack for deleted obj (ofs=len=0), or info for uncovered ROM object
F0 07 md sx 5A 20 00 ty2 id2 F7 open object, get info/nack
F0 07 md sx 5A 21 00 ty2 id2 F7 save current object, can chg.id, get dack/nack
F0 07 md sx 5A 22 00 ty2 id2 namez F7 save cur. obj; rename, re-ID
F0 07 md sx 5A 23 00 F7 "dispose" object, (huh?) get dack w/zeroes
Object I/O Messages
ty2 id2 num2 are lo-hi
F0 07 md sx 5B cmd1 num2 mode1 type2 id2 ... F7 object dependencies
F0 07 md sx 5B 01 num2 md1 {ty2 id2}*num F7 request deps, md=mode: 0=obj-only 1=recursive, get deplist/nack
F0 07 md sx 5B 02 num2 {ty2 id2}*num F7 dependency list response
F0 07 md sx 5B 03 ty2 id2 num2 {ty2 oldid2 newid2}*num F7 modify obj to refer to new dependent objects, get dack/nack
F0 07 md sx 5B 04 F7 dack
F0 07 md sx 5B 05 code1 F7 nack, have seen codes 1 + 2
Object I/O nack codes
02 bad checksum
03 bad type or id
04 object not found
06 object not prepared (not opened?)
07 size of offset bad
08 no memory to process object
09 object being edited
0A mismatched type/id
0B ??? (seen in a dump)
====
Object Types and Codes
Object Name Hex LSB MSB
Table $64 $64 $00
Intonation $67 $67 $00
VelocMap $68 $68 $00
PressMap $69 $69 $00
Song $70 $70 $00
DrumPan $7A $7A $00
DrumExcl $7B $7B $00
DrumMap $7C $7C $00
Bank $7D $7D $00
Keymap $85 $05 $01
QAbank $88 $08 $01
Program $8A $0A $01
Algorithm $95 $15 $01
FXpreset $97 $17 $01
Setup $9B $1B $01
FXchain $9C $1C $01
FXalgo $9D $1D $01
Sample $9E $1E $01
Pinfo $9F $1F $01
KeyBed1 $A1 $21 $01
KeyBed2 $A2 $22 $01
ArpShift $A3 $23 $01
ArpVeloc $A4 $24 $01
ArpDur $A7 $27 $01
ArpSeq $A8 $28 $01
ArpBeats $A9 $29 $01
Sample2 $AA $2A $01
ForteKeyEQ $AB $2B $01
====
KPN Editing
all control change messages: Bn cc vv
per midi channel!
eight messages to fully select and set one parameter
p1 p2 p3 p4 domain level segment instance parameter
select parameter
Bn 6E 0n domain see below
Bn 6F 0n level program-layer setup-zone song-track
Bn 70 nn segment = struct
Bn 71 nn instance
Bn 72 nn parameter
set parameter
Bn 72 nn parameter, dup of last msg above
Bn 76 nn msb
Bn 77 nn lsb
Domains
1 NRPN_DOMAIN_PROGRAM_COMMON
2 NRPN_DOMAIN_PROGRAM_LAYER
3 NRPN_DOMAIN_PROGRAM_KB3
4 NRPN_DOMAIN_SETUP_COMMON
5 NRPN_DOMAIN_SETUP_ZONE
6 NRPN_DOMAIN_SETUP_FXOVER
12 NRPN_DOMAIN_SYSTEM
13 NRPN_DOMAIN_PROGRAM_INFO
14 NRPN_DOMAIN_MASTER_COMMON
15 NRPN_DOMAIN_MASTER_FXOVER
16 NRPN_DOMAIN_SONG_COMMON
17 NRPN_DOMAIN_SONG_TRACK
18 NRPN_DOMAIN_SONG_FXOVER
19 NRPN_DOMAIN_SONG_FLIGHTINFO
20 NRPN_DOMAIN_FRONT_PANEL
others...
KPN_ENUMERATOR_DOMAIN
NRPN_DOMAIN_CHAIN_MASTER
NRPN_DOMAIN_CHAIN_PROGRAM_COMMON
NRPN_DOMAIN_CHAIN_PROGRAM_LAYER
NRPN_DOMAIN_CHAIN_SETUP_COMMON
NRPN_DOMAIN_NONE
NRPN_DOMAIN_WIRING_ALG
====
Object I/O Examples
request info for program 17, by doing an 'open' vs. an 'info'
F0 07 40 00 5A 20 00 0A 01 11 00 F7
objio open rfu tyl tyh idl-h
type = $8A = program
ID = 17
request object data for program 17
F0 07 40 00 5A 00 00 0A 01 11 00 00 0C 4F 00 F7
objio dump rfu type idno offset len ???
prog $8A 17.
req fxchain
F0 07 0A 00 5A 20 00 1C 01 01 00 F7
response
00 F0 07 0A 00 5A 05 00 1C 01 01 00 3A 02 00 00 4C | Z : L|
10 69 74 74 6C 65 20 42 6F 6F 74 68 20 00 F7 |ittle Booth |
send dump request
00 F0 07 0A 00 5A 00 00 1C 01 01 00 00 00 00 3A 02 | Z : |
10 00 F7
load response
F0 07 0A 00 5A 01 00 1C 01 01 00 00 00 00 3A 02
....
request shift pattern 1
163. = arp-shift = $23 $01 split id
F0 07 0A 00 5A 20 00 23 01 01 00 F7
info response
00 F0 07 0A 00 5A 05 00 23 01 01 00 0C 00 00 00 6D | Z # m|
10 61 6A 6F 72 00 F7 |ajor |
send dump request
00 F0 07 0A 00 5A 00 00 23 01 01 00 00 00 00 0C 00 | Z # |
10 00 F7 | |
load response
00 F0 07 0A 00 5A 01 00 23 01 01 00 00 00 00 0C 00 | Z # |
10 00 00 02 04 00 00 60 00 00 04 0E 00 00 00 00 78 | ` x|
20 00 F7
Reference:
literal strings found in PC3LE os binary:
usage: p1 = domain, p2 = mode, p3=segment, p4=instance
domain:
prog_select=1, prog_edit=2, system=3, master=4
alg=5, midi=6, qa=7, song=8
effects=9, storage=10, setup=11, fx_alg=12
chain_edit=13, intonation=14, kb3_edit=15
[Non-text portions of this message have been removed]
------------------------------------
Posted by: [email protected]
------------------------------------
To QUIT KurzList, send a *blank* message to [email protected]
It will take from 24 to 48 hours for Yahoo!Groups to cancel you.
------------------------------------
Yahoo Groups Links