FruityLink.Plugins.Abstractions
0.1.0
dotnet add package FruityLink.Plugins.Abstractions --version 0.1.0
NuGet\Install-Package FruityLink.Plugins.Abstractions -Version 0.1.0
<PackageReference Include="FruityLink.Plugins.Abstractions" Version="0.1.0" />
<PackageVersion Include="FruityLink.Plugins.Abstractions" Version="0.1.0" />
<PackageReference Include="FruityLink.Plugins.Abstractions" />
paket add FruityLink.Plugins.Abstractions --version 0.1.0
#r "nuget: FruityLink.Plugins.Abstractions, 0.1.0"
#:package FruityLink.Plugins.Abstractions@0.1.0
#addin nuget:?package=FruityLink.Plugins.Abstractions&version=0.1.0
#tool nuget:?package=FruityLink.Plugins.Abstractions&version=0.1.0
<div align="center">
<img src="assets/logo.svg" width="104" alt="FL Automate" />
<h1>FruityLink SDK</h1>
<p><strong>Write C# plugins that run inside FL Studio.</strong><br/> The open-source plugin system and FL Studio control surface behind <a href="https://fl-automate.com">FL Automate</a>.</p>
<p> <img src="https://img.shields.io/badge/license-MIT-8b5cf6?style=flat-square" alt="MIT license" /> <img src="https://img.shields.io/badge/.NET-9.0-7c3aed?style=flat-square" alt=".NET 9" /> <img src="https://img.shields.io/badge/FL%20Studio-2025%20%2F%202026-d946ef?style=flat-square" alt="FL Studio 2025/2026" /> </p>
<p> <a href="https://fl-automate.com">Website</a> ยท <a href="https://fl-automate.com/#pricing">Pricing</a> ยท <a href="docs/getting-started.md">Getting started</a> ยท <a href="#documentation">Docs</a> </p>
<p>๐ฑ <strong>1.5% of FL Automate AI usage goes to carbon credits</strong> โ <a href="https://fl-automate.com/#pricing">fl-automate.com/#pricing</a></p>
</div>
FruityLink lets a plain C# class library run inside FL Studio and drive it programmatically โ tempo, piano-roll notes, patterns, playlist clips, mixer, plugin parameters, native menus and toolbar buttons, even your own UI embedded in FL's window chrome.
The FL Automate AI assistant is a separate, closed-source plugin built on this SDK. Everything it can do in FL Studio, your plugin can do too.
Quickstart
Reference FruityLink.Plugins.Abstractions, implement one interface:
public sealed class MyPlugin : IFlPlugin
{
public string Id => "my-plugin";
public string Name => "My Plugin";
public string Description => "Logs the current tempo.";
public string Version => "1.0.0";
private IDisposable? _cmd;
public Task EnableAsync(IPluginContext ctx, CancellationToken ct = default)
{
_cmd = ctx.Menu.AddCommand(FlNativeMenu.Tools, "Log tempo",
onInvoke: () => _ = Task.Run(async () =>
ctx.Log($"tempo = {await ctx.Fl.GetTempoAsync()} BPM")));
return Task.CompletedTask;
}
public Task DisableAsync(CancellationToken ct = default)
{
_cmd?.Dispose();
return Task.CompletedTask;
}
}
Drop the build output into <host-dir>\plugins\MyPlugin\ and enable it from Tools โธ FL Plugins.
Rebuild and it hot-reloads. Full example: samples/HelloFl.
What you get
INativeFlControlโ a typed, safe control surface: channels, patterns, notes, mixer, playlist, transport, markers, projects, arrangements, plugin params, automation.- Native menu + toolbar integration โ commands and toggles in FL's own UI.
- UI embedding โ host Avalonia, WPF, or any
HWNDinside a real FL editor form. - Hot reload + isolation โ each plugin loads in its own collectible
AssemblyLoadContextfrom a shadow copy. - Fail-safe by design โ FL functions are resolved by signature scan and refused rather than guessed; plugins never see raw memory primitives.
Documentation
- Getting started โ first plugin, deploy, debug.
- Plugin lifecycle โ discovery, isolation, pre-warm, hot reload.
- FL control API โ the
INativeFlControlsurface and FL's value conventions. - Menus and toolbar โ contributing to FL's native UI.
- Window embedding โ your window inside FL, incl. the WPF helpers.
- Avalonia UI โ Avalonia inside FL, and the gotchas that matter.
- Native bridge โ architecture, protocol, build, FL version policy.
Building
dotnet build FruityLink.Sdk.slnx # managed SDK + sample
cmake -S native/bridge -B native/bridge/build -A x64 # native bridge (MSVC, x64)
cmake --build native/bridge/build --config Release
License
MIT ยฉ Realynx
<div align="center"><sub> Made for producers who script. <a href="https://fl-automate.com/#pricing">FL Automate pricing</a> โ ๐ฑ 1.5% of AI usage funds carbon credits. </sub></div>
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. 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. |
-
net9.0
- FruityLink.Core (>= 0.1.0)
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.1.0 | 46 | 7/10/2026 |