Crates.io | ot-tools-io |
lib.rs | ot-tools-io |
version | 0.2.0 |
source | src |
created_at | 2025-04-28 02:15:15.497549+00 |
updated_at | 2025-05-27 22:16:54.527543+00 |
description | A library crate for reading/writing binary data files used by the Elektron Octatrack DPS-1. |
homepage | https://gitlab.com/ot-tools/ot-tools-io/ |
repository | https://gitlab.com/ot-tools/ot-tools-io/ |
max_upload_size | |
id | 1651695 |
size | 103,815,979 |
rust library crate for reading/writing binary data files used by the Elektron Octatrack DPS-1
This repository, the source code and the libraries generated by the source code are GNU GPL v3.0 licensed.
Library crate for reading/writing Octatrack binary data files.
Most of this is just the serde
and
bincode
crates with a bunch of
function definitions for reading/writing different files or creating new types.
The majority of fields contained within binary data files have been reverse engineered. See the list in ./ot-tools-io/TODO.md for information about missing/unknown data fields.
The JSON / YAML data structures are a bit ... weird. I have done my best to not parse the underlying data into new structures, keeping it so that the library returns data that is as-close-to-the-raw-data-as-possible.
Like, the arrangements data could do with some work to deal with all the
{"empty": ""}
arranger rows. Header fields probably don't need to be there
and can be injected in during deserialization.
ot-tools-io-derive
is used to create #[derive(XXXX)]
macros for the following
#[derive(Decodeable)]
for the ot_tools_io::Decode
trait#[derive(Encodeable)]
for the ot_tools_io::Encode
trait#[derive(DefaultsAsArray)]
for the ot_tools_io::DefaultsArray
trait#[derive(DefaultsAsArrayBoxed)]
for the ot_tools_io::DefaultsArrayBoxed
traitSee the trait descriptions for more information.
# dev version
make build
# release version
make build-release
Running tests
# basic test running
make test
# test and generate a cobertura coverage report with tarpaulin
make cov
The project is currently hanging around 70%-80%-ish test coverage.
See CONTRIBUTING.md.
Help is definitely wanted for
The following projects were used a starting references for the initial
serialization/deserialization efforts of data files (mostly the .ot
files).
Without them, ot-tools probably wouldn't exist.
A special shout out to OctaEdit by Rusty (no longer available http://www.octaedit.com) which showed the community what it was possible to do. Hopefully there are lots of moonbeams and bunny rabbits wherever you are.
Other rust based credits: