Kotlin Multiplatform library for parsing and writing IFF (Interchange File Format) binary files and derivatives such as RIFF and RIFX.
- Parse and write standard IFF containers (FORM, LIST, CAT, PROP)
- RIFF support (little-endian IFF variant used by WAV, AVI, etc.)
- RIFX support (big-endian RIFF variant)
- Chunk-level parsing and encoding API
- Built on Okio for efficient I/O across platforms
| Module | Coordinates | Description |
|---|---|---|
rifflet-core |
com.kelvsyc.rifflet:rifflet-core |
Core IFF/RIFF/RIFX parsing and writing primitives |
Rifflet targets JVM (JDK 25) via Kotlin Multiplatform.
Rifflet is published to GitHub Packages. GitHub Packages requires authentication even for public packages.
Generate a classic GitHub PAT with at least the read:packages scope. Fine-grained tokens do not support GitHub Packages.
Add the following to ~/.gradle/gradle.properties:
gpr.user=YOUR_GITHUB_USERNAME
gpr.key=YOUR_GITHUB_PATIn your settings.gradle.kts:
dependencyResolutionManagement {
repositories {
mavenCentral()
maven("https://maven.pkg.github.com/kelvSYC/rifflet") {
name = "GitHubPackages"
credentials {
username = providers.gradleProperty("gpr.user").orNull ?: System.getenv("GITHUB_ACTOR")
password = providers.gradleProperty("gpr.key").orNull ?: System.getenv("GITHUB_TOKEN")
}
}
}
}// build.gradle.kts
dependencies {
implementation("com.kelvsyc.rifflet:rifflet-core:$version")
}- JDK 25 (automatically downloaded via Foojay Toolchains)
- A classic GitHub PAT with
read:packagesscope (fine-grained tokens do not support GitHub Packages)
Rifflet depends on packages from kotlin-tools, which is also hosted on GitHub Packages. To build locally, add the following to ~/.gradle/gradle.properties:
gpr.user=YOUR_GITHUB_USERNAME
gpr.key=YOUR_GITHUB_PATThis is also required for IntelliJ IDEA to sync and resolve dependencies correctly.
For CI environments, set the GITHUB_ACTOR and GITHUB_TOKEN environment variables instead.
./gradlew :build # Build all components
./gradlew :check # Run all tests
./gradlew :publish # Publish to GitHub Packages
./gradlew dokkaGenerate # Generate API documentationSingle component:
./gradlew :rifflet-core:build
./gradlew :rifflet-core:allTestsThis is a Gradle composite build with the following layout:
rifflet/
gradle/ # Internal build infrastructure (not published)
platform/ # BOM centralizing dependency versions
settings/ # Settings plugin shared by all components
plugins/ # Convention plugins (Kotlin, Dokka, publishing)
components/ # Published libraries
rifflet-core/ # Core IFF/RIFF/RIFX primitives
Tests use Kotest with JUnit Platform. Run ./gradlew :check to execute all tests.
Versions are derived from git tags via SemVer Gradle Plugin. Snapshot versions are published automatically on every push to main.
See LICENSE for details.