Author Topic: I want to write a librarian for TrapKat  (Read 21810 times)

rezzer

  • Cool Kat
  • **
  • Posts: 5
  • I'm a llama!
I want to write a librarian for TrapKat
« on: August 21, 2004, 04:00:08 PM »
I want to write a librarian for TrapKat that will allow me to make this device more useful to me. I struggle every time I use it right now and having a windows based tool for configuring the settings is something I'd like.

I am a capable programmer, and this task is something I can easily do except for one thing - I've been unable to find any information about the sysex format and I'm not really interested in reverse engineering it.

Are the sysex specs & docs available anywhere?  I would be very grateful for any information that might help me write this tool.

Thanks,

Eric Cosky
eric@cosky.com

pljones

  • KAT Diety
  • *****
  • Posts: 1293
  • NINJAMmer
    • The Dwarfen Realm
Re:I want to write a librarian for TrapKat
« Reply #1 on: August 21, 2004, 07:40:55 PM »
Not knowing anything about the innards of the KAT kit (yet), I'd suggested taking a look in here:
http://www.alternatemode.com/yabbse/index.php?board=2;action=display;threadid=570
and seeing if you can correlate what the TrapKAT does with the DrumKAT details.

rezzer

  • Cool Kat
  • **
  • Posts: 5
  • I'm a llama!
Re:I want to write a librarian for TrapKat
« Reply #2 on: August 23, 2004, 10:39:16 PM »
Thanks for the link. Sounds like the sysex spec is sitting on a box in a corner somewhere.  Hopefully someone that can help with these details will post them sometime.

blafarm

  • The Kat's Meow
  • ***
  • Posts: 57
Re:I want to write a librarian for TrapKat
« Reply #3 on: August 31, 2004, 01:17:25 AM »
>Mario,
Is there any way Rezzer can gain access to the info he is looking for? This would have a significant and positive impact on the usability of the Trapkat.


>Rezzer,
The need for this has been discussed for years - and has never come to fruition. I completely share your frustration and, while I'm not rolling in money, I would be willing to pay a reasonable price for a working Windows interface that would allow me to more intuitively adjust the settings of my Trapkat.

Please keep us updated with your progress. Thanks

blafarm

  • The Kat's Meow
  • ***
  • Posts: 57
Re:I want to write a librarian for TrapKat
« Reply #4 on: September 02, 2004, 04:45:51 PM »
FYI:

I spoke to Mario and he expects to be able to post the information within two weeks.

MarioKAT

  • Administrator
  • KAT Diety
  • *****
  • Posts: 743
  • Don't ask me, I just own the place!
    • Alternate Mode
Re:I want to write a librarian for TrapKat
« Reply #5 on: September 05, 2004, 07:29:10 PM »
I hope I can.  I asked the engineer again.  

We are at his mercy.!!


blafarm

  • The Kat's Meow
  • ***
  • Posts: 57
Re:I want to write a librarian for TrapKat
« Reply #6 on: September 06, 2004, 01:44:03 AM »
Not sure I understand.
You own the Company, the Products, the IP/Patents.
He is either an employee or a subcontractor.

How does mercy come into play?

MarioKAT

  • Administrator
  • KAT Diety
  • *****
  • Posts: 743
  • Don't ask me, I just own the place!
    • Alternate Mode
Re:I want to write a librarian for TrapKat
« Reply #7 on: September 06, 2004, 11:01:05 AM »
KAT engineers left the company in 1995 when it went out of business.  All of them have other full time jobs, live in different States, etc.

Luckily,the engineer that codes the trapKAT, malletKAT and dk10 still is willing to do side work for me.  He is a very talented and busy guy, often on the road or out of the country.

So, when he has time, there is a definite priority list of what he has time to do.   MalletKATs are our biggest seller, so it ALWAYs gets top priority.

I wish we were KAT again, but we're not.  I emailed him last night again about the sys ex.    Hope to hear from him soon

blafarm

  • The Kat's Meow
  • ***
  • Posts: 57
Re:I want to write a librarian for TrapKat
« Reply #8 on: September 06, 2004, 11:16:48 AM »
Thanks very much for the clarification, Mario.

I hope that in spite of MalletKAT being top priority, your engineer can simply email the SysEx to you. Emailing a file doesn't seem like it would be a big investment of time.

Thanks again, Mario and please update us when you can.

Regards,

blafarm

MarioKAT

  • Administrator
  • KAT Diety
  • *****
  • Posts: 743
  • Don't ask me, I just own the place!
    • Alternate Mode
Re:I want to write a librarian for TrapKat
« Reply #9 on: September 09, 2004, 06:33:56 PM »
I might have the sys ex info for you in a day or two.

The engineer is compiling the info now.

blafarm

  • The Kat's Meow
  • ***
  • Posts: 57
Re:I want to write a librarian for TrapKat
« Reply #10 on: September 09, 2004, 11:31:57 PM »
Sounds Good. Thanks Mario.
« Last Edit: September 09, 2004, 11:32:26 PM by blafarm »

MarioKAT

  • Administrator
  • KAT Diety
  • *****
  • Posts: 743
  • Don't ask me, I just own the place!
    • Alternate Mode
Re:I want to write a librarian for TrapKat
« Reply #11 on: September 14, 2004, 10:34:14 AM »
Here is the SYS EX for the TRAPKAT.  

                                  TrapKAT Data Layout

Kit Format:

Pad_Note_1 (hihat pad OPEN sound 1)    (1 byte)
Pad_Note_2 (hihat pad CLOSED sound 1)  (1 byte)
Pad_Curve                              (1 byte)
Pad_Gate                               (1 byte)
Pad_Channel                            (1 byte)
Pad_MinVel                             (1 byte)    <- pad 1
Pad_MaxVel                             (1 byte)
Pad_Note_3 (hihat pad OPEN sound 2)    (1 byte)
Pad_Note_4 (hihat pad CLOSED sound 2)  (1 byte)
Pad_Note_5 (hihat pad OPEN sound 3)    (1 byte)
Pad_Note_6 (hihat pad CLOSED sound 3)  (1 byte)
Pad_Flags  (bit 7 = 1 -> hihat pad)    (1 byte)
           (bit 6 = 1 -> motif pad)

Repeat the above 12-bytes for pads 2 - 24
                              bass trigger
                              hihat chic controller
                              hihat splase controller
                              breath controller

kit curve                                             (1 byte)
kit gate                                              (1 byte)
kit channel                                           (1 byte)
kit minimum velocity                                  (1 byte)
kit maximum velocity                                  (1 byte)
hihat function (simple, controller 1, controller 4)   (1 byte)
breath controller function                            (1 byte)
program change number                                 (1 byte)
program change channel                                (1 byte)
kit volume                                            (1 byte)
hihat pad assignments                                 (4 bytes)
bank number                                           (1 byte)
foot control channel                                  (1 byte)
foot control curve                                    (1 byte)
bank change (msb)                                     (1 byte)
bank change (lsb)                                     (1 byte)
not used                                              (1 byte)

--------------------------------------------------------------------

Using 'C' typedefs:

/*
** Data for each pad.
*/

typedef {

   byte  Pad_Note_1 ;
   byte  Pad_Note_2 ;
   byte  Pad_Curve ;
   byte  Pad_Gate ;
   byte  Pad_Channel;
   byte  Pad_MinVel ;
   byte  Pad_MaxVel ;
   byte  Pad_Note_3 ;
   byte  Pad_Note_4 ;
   byte  Pad_Note_5 ;
   byte  Pad_Note_6 ;
   byte  Pad_Flags ;
   
} PAD_DATA_TYPE ;


/*
** Data for each kit.
*/

typedef struct
{

   byte  Kit_Curve ;  
   byte  Kit_Gate ;  
   byte  Kit_Channel ;
   byte  Kit_MinVel ;
   byte  Kit_MaxVel ;
   byte  Kit_HH_Function ;
   byte  Kit_Br_Function ;
   byte  Kit_PrgChng ;
   byte  Kit_PrgChngCh ;
   byte  Kit_Volume ;
   byte  Kit_HHPads[4] ;
   byte  Kit_Bank ;
   byte  Kit_FC_Channel ;
   byte  Kit_FC_Curve ;
   byte  Kit_Bank_msb ;
   byte  Kit_Bank_lsb ;
   byte  NotUsed ;

} KIT_DATA_TYPE ;


The KIT dump contains the following:

typedef struct
{

   PAD_DATA_TYPE  PadData[24] ;
   KIT_DATA_TYPE  KitData;

} KIT_TYPE ;


--------------------------------------------------------------------

Global Data

typedef struct
{

   byte Pad_1_LoLev ; Low dynamic level
   byte Pad_1_HiLev ; High dynamic level

} DYN_LEVEL_TYPE ;

The GLOBAL dump contains the following:

typedef struct
{

   byte           Current_Defaults[128] ;
   byte           User_Defaults[128] ;

   byte           Beeper_Stat       ; Beeper status
   byte           Breath_Function   ; Breath controller function
   byte           Choke_Status      ; Choke enable status
   byte           Closed_Region     ; Limit of hihat closed region
   byte           Foot_Polarity     ; Foot controller polarity
   byte           Breath_Polarity   ; Breath controller polarity
   byte           BC_Lolev          ; Breath controller 1 low level
   byte           BC_HiLev          ; Breath controller 1 high level
   byte           FC1_Lolev         ; Foot controller 1 low level
   byte           FC1_HiLev         ; Foot controller 1 high level
   byte           FC1_Vel_Level     ; Foot controller 1 velocity measurement
level
   byte           FC1_Wait_Level    ; Foot controller 1 wait mode level
   byte           Instrument_ID     ; Instrument ID
   byte           Kit_Number        ; Kit number
   byte           Kit_Number_User   ; Kit number in user mode
   byte           Kit_Number_Demo   ; Kit number in demo mode
   byte           Motif_No          ; Motif number
   byte           Perc_Motif_No     ; Percussion motif number
   byte           Mel_Motif_No      ; Melodic motif number
   byte           MidiMerge_Stat    ; Midi merge status
   byte           Open_Region       ; Limit of hihat open region
   DYN_LEVEL_TYPE PadLevels[24]     ; Pad dynamic levels
   byte           Trig_LoLev        ; Trigger low level
   byte           Trig_HiLev        ; Trigger high level
   byte           Trig_Gain         ; Trigger gain (0 - 3)
   byte           PrgChRcv          ; Program change receive channel
   byte           View_Angle        ; Display view angle
   byte           Play_Mode         ; Play mode (0 -> demo, 1 -> user)
   byte           Grv_Volume        ; Groove volume
   byte           Groove_Status     ; Groove status (1 -> grooves enables)
   byte           Splash_Ease       ; Index into table of closed counts
   byte           Note_Names        ; Midi note name display status
   byte           TT_Pad_Data[12]
   byte           HatNote_Gate      ; HAT NOTE gate time index
   byte           Groove_AutoOff    ; Groove auto off enabled if > 0
   byte           Kit_Number_KAT    ; Kit number in KAT Kit Mode
   byte           TT_Meter          ; Tap tempo meter (quarter, half, eighth,
etc.)
   byte           Hear_Sound        ; "Hear Sound" status (1 -> on)
   
   byte           unused[160] ;

   byte           User_Margin[25] ;
   byte           unused[231] ;
   byte           Internal_Margin[25] ;
   byte           unused[231] ;
   byte           Thresh_Manual[25] ;
   byte           unused[231] ;
   byte           Thresh_Actual[25] ;

} GLOBAL_DATA_TYPE

--------------------------------------------------------------------

All Memory Dump

typedef struct
{

   byte  KitNamesUser[12] ;   Kit name string

}  KIT_NAME_TYPE


The ALL MEMORY dump contains the following:

typedef struct
{

   KIT_TYPE          KitData[24] ;  2160H bytes start at 364H
   KIT_NAME_TYPE     KitNameString[24] ; 120H bytes start at 24C4H
   byte              unused[540] ;
   GLOBAL_DATA_TYPE  GlobalData ; start at 2800H

} ALL_MEMORY_TYPE ;


----------------------------------------------

blafarm

  • The Kat's Meow
  • ***
  • Posts: 57
Re:I want to write a librarian for TrapKat
« Reply #12 on: September 14, 2004, 10:45:05 AM »
Thanks Mario...that's great!

MarioKAT

  • Administrator
  • KAT Diety
  • *****
  • Posts: 743
  • Don't ask me, I just own the place!
    • Alternate Mode
Re:I want to write a librarian for TrapKat
« Reply #13 on: September 14, 2004, 11:56:43 AM »
Keep us posted on your progress.  Thanks

RemarkableMusic

  • Guest
Re:I want to write a librarian for TrapKat
« Reply #14 on: September 16, 2004, 06:28:28 PM »
Mario,
Any chance of getting the sysex info/MIDI implementation for the malletKAT 5.0?