Re: Re: Wanted - Forte and PC3K8 sysex, and file descriptions

"[email protected] [KurzList]" <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.