Plugin.Maui.VoiceOrb 1.0.0

dotnet add package Plugin.Maui.VoiceOrb --version 1.0.0
                    
NuGet\Install-Package Plugin.Maui.VoiceOrb -Version 1.0.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="Plugin.Maui.VoiceOrb" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Plugin.Maui.VoiceOrb" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Plugin.Maui.VoiceOrb" />
                    
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 Plugin.Maui.VoiceOrb --version 1.0.0
                    
#r "nuget: Plugin.Maui.VoiceOrb, 1.0.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 Plugin.Maui.VoiceOrb@1.0.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=Plugin.Maui.VoiceOrb&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Plugin.Maui.VoiceOrb&version=1.0.0
                    
Install as a Cake Tool

Plugin.Maui.VoiceOrb

An animated, audio-reactive voice orb control for .NET MAUI, in the style of modern voice assistants. A soft, glowing sphere that breathes at rest and deforms organically with live audio.

Renders on a fully transparent SkiaSharp canvas, so it layers over any page, gradient, image or video. Depends only on SkiaSharp — bring your own audio, or add Plugin.Maui.VoiceOrb.Audio for microphone capture.

Setup

using Plugin.Maui.VoiceOrb;

builder.UseMauiApp<App>()
       .UseVoiceOrb();   // initialises SkiaSharp

Use

<ContentPage xmlns:orb="clr-namespace:Plugin.Maui.VoiceOrb;assembly=Plugin.Maui.VoiceOrb">
    <orb:VoiceOrbView x:Name="Orb"
                      HeightRequest="320" WidthRequest="320"
                      State="Idle"
                      PrimaryColor="#9A8CFF" SecondaryColor="#5A50DC"
                      GlowColor="#7878FF"   PulseColor="White"
                      MorphStrength="1.2"   AnimationSpeed="1.0"
                      ShowGlow="True"       IsInteractive="True" />
</ContentPage>

Then feed it loudness:

Orb.SetAudioLevel(level);          // 0..1, safe to call from an audio thread
Orb.SetState(OrbState.Listening);  // Idle | Listening | Speaking | Thinking

SetAudioLevel accepts values at whatever rate your capture delivers them. The control smooths with a fast attack and slow release, so it tracks speech without strobing on every consonant, and repaints itself at 60 fps.

API

Member Notes
State Idle, Listening, Speaking, Thinking. Bindable two-way.
AudioLevel / SetAudioLevel 0..1 loudness. The setter method is thread-safe.
PrimaryColor, SecondaryColor Orb body and its falloff.
GlowColor, PulseColor Halo, and the ripple / level ring / thinking spark.
AnimationSpeed Rate multiplier. 0 freezes.
MorphStrength Outline deformation. 0 stays perfectly round.
ShowGlow Turn the halo off to render cheaper.
IsInteractive Whether tapping toggles state.
TapCommand, Tapped Fired on tap with the new OrbState.

Only Listening and Speaking react to audio; Idle and Thinking ignore the level.

Bring your own audio

Implement IAudioLevelSource to drive the orb from a speech SDK, a playback engine or a network stream. SimulatedAudioLevelSource ships in the box and produces a speech-shaped envelope, which is handy for designing without a microphone.

IAudioLevelSource source = new SimulatedAudioLevelSource(Dispatcher);
source.LevelChanged += (_, level) => Orb.SetAudioLevel(level);
await source.StartAsync();

Notes

  • Everything is sized relative to the view, so the orb looks identical at any DPI, and nothing is ever clipped by the view bounds.
  • The animation timer starts on Loaded and stops on Unloaded, so an off-screen orb costs nothing.
  • Give the view room: the halo extends to the edge of its bounds, so a square roughly twice the visual orb diameter looks best.
Product Compatible and additional computed target framework versions.
.NET net10.0-android36.0 is compatible.  net10.0-ios26.0 is compatible.  net10.0-maccatalyst26.0 is compatible.  net10.0-windows10.0.19041 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Plugin.Maui.VoiceOrb:

Package Downloads
Plugin.Maui.VoiceOrb.Audio

Microphone capture for Plugin.Maui.VoiceOrb. Converts live PCM frames to a normalised loudness level the orb can react to, using Plugin.Maui.Audio. Install this only if you want the orb driven by the microphone.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 77 9/8/2026