DanceRudiments 0.2.0
dotnet add package DanceRudiments --version 0.2.0
NuGet\Install-Package DanceRudiments -Version 0.2.0
<PackageReference Include="DanceRudiments" Version="0.2.0" />
<PackageVersion Include="DanceRudiments" Version="0.2.0" />
<PackageReference Include="DanceRudiments" />
paket add DanceRudiments --version 0.2.0
#r "nuget: DanceRudiments, 0.2.0"
#:package DanceRudiments@0.2.0
#addin nuget:?package=DanceRudiments&version=0.2.0
#tool nuget:?package=DanceRudiments&version=0.2.0
DanceRudiments for C# / .NET
By Kieran Simkin — My Songs, part of DanceFlow.
A C# interface to the original C++ rhythmic movement library, not a managed
reimplementation. Enumerate the native catalogue, sample XYZ offsets at 64 pips
per beat, fill a Span<Offset3> in one native call, or own a private pattern bank.
Install
After a release containing this binding has been published:
dotnet add package DanceRudiments
The package includes the managed net8.0 assembly and native x64/ARM64 libraries
for Windows, Linux and macOS. It targets .NET 8+ applications;
CI executes the contract suite on .NET 8 and .NET 10. Prefer a supported .NET
runtime. Native availability is not the same as support for every .NET host:
.NET Framework, Unity/Mono, IL2CPP, mobile, browser-WASM and NativeAOT are not
claimed as supported by this first binding. Linux packages target glibc, not musl.
using DanceRudiments;
Console.WriteLine($"C++ version: {Rudiments.NativeVersion}");
Console.WriteLine($"{Rudiments.Catalogue.Count} movements");
var amen = Rudiments.Catalogue.Single(p => p.Name == "beat_amen_four_bar_bounce");
int pip = Rudiments.PipAtTime(1.25, bpm: 140, periodPips: amen.PeriodPips);
Offset3 position = Rudiments.Sample(amen.Name, pip);
Console.WriteLine($"{position.X}, {position.Y}, {position.Z}");
Offset3[] loop = Rudiments.SampleMany(amen.Name, 0, amen.PeriodPips);
No compiler or Python runtime is needed to consume a matching released NuGet
package. Its native assets are selected automatically by NuGet/.NET. For an
explicit target, publish with dotnet publish -r win-x64 --self-contained false
(or another included runtime identifier). A source checkout needs CMake, a C++17
compiler and the .NET SDK; see the full guide.
Custom data
using var bank = PatternLibrary.Load("my-patterns.compiled.json");
var custom = bank.Sample("my_pattern", -1);
Use the existing Python dancerudiments-compile command to author/compile JSON;
loading and all movement evaluation at runtime are C++. PatternDefinition
also accepts an explicit table. Samples and metadata are copied; using disposes
the native bank. SafeHandle protects calls against disposal races and provides a
finalizer fallback. An exact default reload is idempotent; changed defaults under
the same name are rejected. No override of the global catalogue is permitted.
Timing and errors
A pip is 1/64 of a quarter note, not a millisecond or a MIDI tick. Negative
pips wrap; each pattern has its own period. PipAtTime floors and wraps absolute
fixed-tempo time, avoiding frame-by-frame drift. For tempo changes, integrate a
musical timeline rather than multiplying all past time by the latest BPM.
Unknown names or invalid native input become ArgumentException; range failures
become ArgumentOutOfRangeException. Missing or wrong-architecture native files
produce the usual loader exceptions. Calling a disposed bank throws
ObjectDisposedException. The API changes position only; respect reduced-motion
preferences in the consuming application and keep movement within bounded subjects.
Included material
The package contains its README, full C# guide, a runnable C# example, existing
visualizer screenshots, author credits, original third-party notices, and per-RID
native hashes/source revisions. Symbols in .snupkg cover the managed assembly;
they are not native debugging symbols.
Download the self-contained visualizer for audible beat/movement comparisons. It is separate from the .NET binding and its large HTML snapshot is deliberately not duplicated into the NuGet package.
Source and releases · Music / My Songs
An offline copy of the guide is included as docs/csharp.md inside the NuGet package.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.2.0 | 44 | 9/30/2026 |