-
Notifications
You must be signed in to change notification settings - Fork 6
Home
- What is this?
- Contributing
- File format specification
- Setting up
- Making and Contributing Changes
- Contact Details
Documentation for the reverse-engineered .tsi file format used by Native Instrument's Traktor Pro 2.x for storing Controller Mappings.
This should enable the implementation of third-party controller mapping editors.
Feel free to (open an issue)[https://github.com/ivanz/TraktorMappingFileFormat/issues] with any documentation updates (here)[https://github.com/ivanz/TraktorMappingFileFormat/issues] or send a Pull Request.
[VIEW THE FULL FILE SPECIFICATION HERE](FILE FORMAT SPECIFICATION)
In order to be able to browse the Traktor .tsi file like on the screenshot below and contribute back to this project you need to follow a couple of simple steps.
The tool used to reverse-engineer the .tsi file format is the 010 Editor which you can download from here.
It's a hex editor, but also enables defining a data structure template for the file being viewed and provides scripting capabilities
In the Tools folder you will find two files, which you need to open in 010 Editor:
- Extract TSI Mapping.1sc - script used to automatically extract the binary data from the .tsi file.
- TSI Mapping Template.bt - file structure definition
- Open the Script and Template from Step 2
- Open a .tsi file. (For example one of those under "Samples" or export one from Traktor Pro)
- Run the Extract TSI Mapping.1sc script. It may take a couple of seconds to finish. Once done a new tab will automatically open Untitled1
- Apply the data structure template (TSI Mapping Template.bt)
- Use the newly opened Template Results panel in the bottom to explore:
All of the .tsi data structures are defined in the ## file using the 010 Editor Templates functionality.
Essentially the Template file contains C-like structures, enums and scripting abilities. Here is an example of the structure that defines the mapping comment (which Traktor uses as the name of the mapping)
typedef struct MappingFileComment {
FrameHeader Header;
int CommentLength;
wchar_t Comment[CommentLength];
};
Simply edit the template, save and re-run it.
010 Editor Templates quick start documentation here: http://www.sweetscape.com/010editor/manual/IntroTempScripts.htm
Using File Compare within 010 Editor is a great way to find out how a change in Traktor propagates to the .tsi file. Create a before and after .tsi files and compare the outputs (after doing the described in Step 3: Process a .tsi file from the Setting up guide above) to figure out what is what:
My name is Ivan Zlatev and you can contact me at: ivan AT ivanz.com