FruityLink.Ui.Wpf.Hosting 0.1.0

dotnet add package FruityLink.Ui.Wpf.Hosting --version 0.1.0
                    
NuGet\Install-Package FruityLink.Ui.Wpf.Hosting -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FruityLink.Ui.Wpf.Hosting" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FruityLink.Ui.Wpf.Hosting" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="FruityLink.Ui.Wpf.Hosting" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FruityLink.Ui.Wpf.Hosting --version 0.1.0
                    
#r "nuget: FruityLink.Ui.Wpf.Hosting, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FruityLink.Ui.Wpf.Hosting@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FruityLink.Ui.Wpf.Hosting&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=FruityLink.Ui.Wpf.Hosting&version=0.1.0
                    
Install as a Cake Tool

<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 HWND inside a real FL editor form.
  • Hot reload + isolation โ€” each plugin loads in its own collectible AssemblyLoadContext from 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

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 Compatible and additional computed target framework versions.
.NET net9.0-windows7.0 is compatible.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net9.0-windows7.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.1.0 46 7/10/2026