Agent skill

Flutter SoLoud Audio Filters

by alnitak in alnitak/flutter_soloud

Explains how to add and tune flutter_soloud's 13 audio filters at global, per-sound and mixing-bus level, including activation order and parameter fades.

MITAuto-check passedMobile

Install Flutter SoLoud Audio Filters

skills CLI
$ npx skills add alnitak/flutter_soloud --skill flutter-soloud-filters -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install alnitak/flutter_soloud flutter-soloud-filters --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/alnitak/flutter_soloud.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/flutter-soloud-filters .claude/skills/flutter-soloud-filters && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
flutter-soloud-filters
GitHub stars
425
Token cost
~2.1k tokens
SKILL.md length
717 words
Files
2 (incl. references)
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

Explains how to add and tune flutter_soloud's 13 audio filters at global, per-sound and mixing-bus level, including activation order and parameter fades.

  • Adding reverb, echo or an equalizer to Flutter audio playback
  • SKILL.md covers Minimal example, The API shape, Traps and More depth, plus 1 more section
  • Calls dart
  • Applying pitch shifting, compression or limiting to a sound or a bus

What it does

The flutter_soloud package exposes the SoLoud engine's filters as typed Dart objects, and this skill teaches the agent how to use them. Filters exist at three scopes: the global output through `SoLoud.instance.filters`, a single loaded sound through `audioSource.filters`, and a mixing bus through `bus.filters`. Every filter is switched on with `activate()` and tuned through `FilterParam` objects, using `value`, `fadeFilterParameter` and `oscillateFilterParameter`.

It spells out how the scopes differ: the biquad filter is `biquadResonantFilter` globally but `biquadFilter` per sound, and per-sound parameters are methods that take the playing voice's handle while global parameters are getters. The `queryXxx` getters give each parameter's minimum, maximum and default, which the skill suggests using for slider ranges. A table lists ranges and defaults for filters such as echo, freeverb and biquad, and `references/filter-parameters.md` has the full set. There is no node graph as in Web Audio and no per-player effect setup as in just_audio.

When your agent uses it

  • Adding reverb, echo or an equalizer to Flutter audio playback
  • Applying pitch shifting, compression or limiting to a sound or a bus
  • Fading or oscillating a filter parameter over time
  • Choosing global, per-sound or per-bus scope for an effect

Example prompts

  • “Add a freeverb effect to the game's music bus and fade the room size up over two seconds.”
  • “Apply a lowpass biquad filter to the explosion sound only.”
  • “Add a limiter to the global output to stop clipping when many sounds play.”
  • “Build an EQ screen with sliders whose ranges come from each filter's minimum and maximum.”

Requirements

  • A Flutter project that uses the flutter_soloud package

What it can do on your machine

Read from SKILL.md and the folder at commit 8419081. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • dart

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Flutter SoLoud Audio Filters loads about 2.1k tokens when it runs, and up to ~3.9k if it reads all its reference files. Until then it costs about 134 tokens; SKILL.md has 717 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~134
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from alnitak/flutter_soloud at commit 8419081, republished under its MIT licence (© alnitak). 717 words, ~2,139 tokens.

Download SKILL.mdSave it as .claude/skills/flutter-soloud-filters/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
flutter-soloud-filters
description
Teaches correct use of flutter_soloud's 13 DSP filters (echo, freeverb, biquad, bassboost, flanger, waveShaper, lofi, robotize, pitchShift, limiter, compressor, parametricEq, amplitudeModulator) at global, per-sound, and per-bus scope, including activation ordering, FilterParam value/fade/oscillate, and per-platform limits. Use when the user asks to add audio effects, reverb, an equalizer/EQ, pitch shifting or time stretching, dynamic-range compression, ring modulation, or anti-clipping/limiting to playback.
version
1

flutter_soloud exposes the SoLoud engine's filter graph as typed Dart objects. Filters live at three scopes — global output (SoLoud.instance.filters), a single loaded sound (audioSource.filters), and a mixing bus (bus.filters). Every filter is activated with activate() and tuned through FilterParam objects (param.value, fadeFilterParameter, oscillateFilterParameter). There is no "node graph" to wire like the Web Audio API and no per-player effect config like just_audio — you activate a filter, then mutate its parameters live.

Minimal example

dart
import 'package:flutter_soloud/flutter_soloud.dart';

Future<void> main() async {
  await SoLoud.instance.init();

  // Global echo on the whole output.
  final echo = SoLoud.instance.filters.echoFilter;
  echo.activate();
  echo.delay.value = 0.2; // seconds
  echo.decay.value = 0.7;

  // Per-sound filter: MUST be activated before play().
  final sound = await SoLoud.instance.loadAsset('assets/audio/track.mp3');
  sound.filters.pitchShiftFilter.activate();
  final handle = SoLoud.instance.play(sound, looping: true);
  sound.filters.pitchShiftFilter.semitones(soundHandle: handle).value = 3;
}

The API shape

  • SoLoud.instance.filters → FiltersGlobal. Getters: biquadResonantFilter, echoFilter, lofiFilter, flangerFilter, bassBoostFilter, waveShaperFilter, robotizeFilter, freeverbFilter, pitchShiftFilter, limiterFilter, compressorFilter, parametricEqFilter, amplitudeModulatorFilter. Params are getters: filters.echoFilter.delay.value = 0.2.
  • audioSource.filters → FiltersSingle. Same filters, except the biquad getter is named biquadFilter (global scope calls it biquadResonantFilter). Params are methods taking the playing voice's handle: sound.filters.echoFilter.delay(soundHandle: handle).value = 0.2.
  • bus.filters → FiltersSingle(busId: ...) on a Bus from SoLoud.instance.createMixingBus(). Params apply bus-wide; no soundHandle needed.
  • FilterBase: activate(), deactivate(), isActive (bool), index (filter slot, -1 when inactive), filterType.
  • FilterParam: double get value / set value(double), fadeFilterParameter({required double to, required Duration time}), oscillateFilterParameter({required double from, required double to, required Duration time}).
  • queryXxx getters on each filter (e.g. filters.echoFilter.queryDelay) expose the parameter's min, max, def (default) and a human-readable toString() — use these for slider ranges instead of hardcoding.

Which params matter for the common use (full table in references/filter-parameters.md):

FilterKey params (range, default)
echodelay 0.001–3 s (0.3), decay 0.001–1 (0.7), filter 0–1 (0)
freeverbroomSize 0–1 (0.5), damp 0–1 (0.5), width 0–1 (1), freeze 0–1 (0)
biquadResonanttype 0/1/2 = lowpass/highpass/bandpass, frequency 10–16000 Hz (1000), resonance 0.1–20 (0.1)
lofisamplerate 100–22000 (4000), bitdepth 0.5–16 (3)
flangerdelay 0–3 (1), freq −48–48 (0)
bassboostboost 0–10 (2)
waveShaperamount −1–1 (0)
robotizefrequency 0.1–100 (30), waveform 0–6 (0)
pitchShiftshift 0–3 (1), semitones −36–36 (0); linked: semitones = 12 * log2(shift)
limiterthreshold −60–0 dB (−3), outputCeiling −60–0 dB (−1), attackTime 0.1–200 ms (1), releaseTime 1–1000 ms (100), kneeWidth 0–30 dB (2)
compressorthreshold −80–0 dB (−6), ratio 1–10 (3), makeupGain −40–40 dB (0), attackTime 0–100 ms (10), releaseTime 0–1000 ms (100), kneeWidth 0–40 dB (2)
parametricEqnumBands 1–64 (3), stftWindowSize 32–4096 power of two (1024), bandGain(i) 0–4 (1)
amplitudeModulatorfrequency 0.1–20000 Hz (440); sine ring modulation, clamped below Nyquist at runtime

Every filter also has wet (0–1, default 1): 1 = fully processed, 0 = dry passthrough.

Recipes:

dart
// Anti-clip safety: global limiter with defaults is usually enough.
// Activate it AFTER all other global filters so it sits last in the chain.
final limiter = SoLoud.instance.filters.limiterFilter;
limiter.activate();

// Taming many simultaneous loud voices (from example/lib/filters/compressor.dart):
final comp = SoLoud.instance.filters.compressorFilter;
comp.activate();
comp.threshold.value = -6;   // dB
comp.ratio.value = 3;
comp.attackTime.value = 10;  // ms
comp.releaseTime.value = 100;

// Time stretch without pitch change (per-sound scope only):
sound.filters.pitchShiftFilter.timeStretch(handle, 1.25); // 25% faster, same pitch
// Global scope: do it manually — setRelativePlaySpeed(handle, speed) then
// pitchShiftFilter.shift.value = 1 / speed.

// Parametric EQ (bands are logarithmic, 30 Hz .. 12 kHz):
final eq = SoLoud.instance.filters.parametricEqFilter;
eq.activate();
eq.numBands.value = 10;
eq.stftWindowSize.value = 2048; // must be a power of two, 32..4096
eq.bandGain(0).value = 2;       // boost the lowest band
final hz = eq.bandFrequency(0); // center frequency of band 0 (30 Hz)
Show full SKILL.md (344 more words)Show less

Traps

  • Per-sound filters must be activated before play(). Only voices started after activate() carry the filter; already-playing handles are unaffected. To change the filter set, stop the handle and play again.
  • Max 8 filters per stream/sound (FILTERS_PER_STREAM in SoLoud). The 13 types each occupy one slot per scope.
  • Out-of-range param.value sets are silently ignored — the setter logs a warning and returns without throwing. Check bounds with the queryXxx.min/max getters.
  • Naming inconsistencies vs. intuition: the single/bus-scope biquad getter is biquadFilter (global: biquadResonantFilter); freeverb's damping param is damp (not damping); lofi's params are samplerate/bitdepth (all lowercase). The online docs get some of these wrong — trust the code in lib/src/filters/.
  • freeverb is 2-channel only. As a global filter, init the engine with the default 2 channels (don't pass channels: to SoLoud.instance.init); as a per-sound filter the sound itself must be stereo.
  • parametricEq stftWindowSize must be a power of two in 32..4096, otherwise the set is ignored with a warning. Larger window = more frequency accuracy, more latency and CPU.
  • fadeFilterParameter/oscillateFilterParameter throw SoLoudNotInitializedException if the engine isn't initialized; FilterParam.value can throw SoLoudCppException on native errors. Engine re-init (deinit() + init()) drops all active filters — reactivate afterwards.
  • Filter order matters: activation order is the processing order. Put gain-reducing filters (compressor, limiter) last — activate them after everything else (tip from example/lib/filters/limiter.dart).
  • On Android, the default low-latency output profile leaves little CPU headroom for heavy filters (FFT pitch shift, large-EQ windows); pass lowLatency: false to SoLoud.instance.init if you hear underruns.

More depth

  • references/filter-parameters.md — every parameter of all 13 filters with min/max/default and the matching queryXxx getter.
  • Interactive demos in the plugin repo: example/lib/filters/ (compressor.dart, limiter.dart, parametric_eq.dart, pitchshift.dart) and the automated examples under example/tests/tests/ (global_filters.dart, sound_filters.dart, equalizer_filter.dart, compressor_filter.dart, limiter_filter.dart, pitch_shifter_filter.dart).

Keeping this skill current

This skill ships inside the flutter_soloud package, so upgrading flutter_soloud can carry a newer revision of it than the copy installed in the project. To check, run:

sh
dart run flutter_soloud:skills --check

It reports the installed and bundled skill versions and exits non-zero when an update is available. Offer to update with dart run flutter_soloud:skills (which touches only the skills, never pubspec or build files).

© alnitak, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/flutter-soloud-filters of alnitak/flutter_soloud.

  • SKILL.md
  • references/filter-parameters.md

Open the folder on GitHubat commit 8419081

Compare with similar skills

Flutter SoLoud Audio Filters next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Flutter SoLoud Audio Filters compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Flutter SoLoud Audio Filters this skillalnitak/flutter_soloud425—~2.1kAutomated safety check: PassMIT
Generate Images With Firebase AIevanca/flutter-ai-rules650—~2.3kAutomated safety check: PassMIT
Engine Whats Newflutter/flutter179k—~978Automated safety check: PassBSD-3-Clause
Flutter Cherry Pickflutter/flutter179k—~1.8kAutomated safety check: PassBSD-3-Clause
Upgrade Browserflutter/flutter179k—~1.1kAutomated safety check: PassBSD-3-Clause
Bump Dartflutter/flutter179k—~1.2kAutomated safety check: PassBSD-3-Clause

Similar skills

  • Generate Images With Firebase AI

    evanca/flutter-ai-rules

    A skill your agent uses when generating or editing images from Flutter/Dart with Firebase AI Logic and a Gemini image model (Nano Banana), making the first call work, choosing Gemini Developer API…

    650 GitHub stars~2.3k tokensUpdated 26 days ago
    MobileAuto-check passed
  • Engine Whats New

    flutter/flutter

    Generates the "what's new" release summary and diff file for changes in the Flutter engine (//engine/src/flutter) between two releases (e.g., 3.47 vs 3.44).

    179k GitHub stars~978 tokensUpdated today
    MobileAuto-check passed
  • Flutter Cherry Pick

    flutter/flutter

    How to land a formal cherry-pick of a merged PR for the flutter/flutter repo stable or beta channel.

    179k GitHub stars~1.8k tokensUpdated today
    MobileAuto-check passed
  • Upgrade Browser

    flutter/flutter

    Upgrade browser versions (Chrome or Firefox) in the Flutter Web Engine and/or Framework tests.

    179k GitHub stars~1.1k tokensUpdated today
    MobileAuto-check passed
  • Bump Dart

    flutter/flutter

    Do not trigger automatically; only run when a user runs /bump-dart.

    179k GitHub stars~1.2k tokensUpdated today
    MobileAuto-check passed
  • Run Devicelab With Led

    flutter/flutter

    Run DeviceLab tests for Flutter PRs using LUCI's led CLI tool.

    179k GitHub stars~852 tokensUpdated today
    MobileAuto-check passed

More from alnitak/flutter_soloud

All 14 skills in this repo
  • flutter_soloud Mixing Buses

    alnitak/flutter_soloud

    Teaches flutter_soloud mixing buses for routing groups of sounds through shared sub-mixes with collective volume and filters, such as separate music, SFX and UI sliders.

    425 GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed
  • flutter_soloud Setup

    alnitak/flutter_soloud

    Walks through adding the flutter_soloud audio engine to a Flutter app, with per-platform setup, initialization, binary-size and logging options, and output device switching.

    425 GitHub stars~3.6k tokensUpdated yesterday
    Auto-check: notes
  • Teaches the push buffer-stream API of flutter_soloud for playing audio that arrives in chunks, such as icecast radio, WebSocket PCM feeds or streaming TTS, instead of a complete file.

    425 GitHub stars~2.5k tokensUpdated yesterday
    Auto-check passed
  • Shows how to build audio visualizers in Flutter with flutter_soloud, using live FFT and wave data or offline waveform extraction, plus volume readings for level meters.

    425 GitHub stars~2.5k tokensUpdated yesterday
    Auto-check passed
  • Flutter Soloud 3D Audio

    alnitak/flutter_soloud

    Teaches positional (3D) audio in fluttersoloud — play3d/play3dClocked/play3dScheduled, listener position/orientation/velocity, per-source attenuation and Doppler, and the per-frame update pattern.

    425 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • flutter_soloud Idioms

    alnitak/flutter_soloud

    Explains the mental model for the flutter_soloud audio plugin: the SoLoud.instance singleton, AudioSource versus SoundHandle, synchronous play and platform limits.

    425 GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Flutter SoLoud Audio Filters

What does Flutter SoLoud Audio Filters do?

Explains how to add and tune flutter_soloud's 13 audio filters at global, per-sound and mixing-bus level, including activation order and parameter fades. The flutter_soloud package exposes the SoLoud engine's filters as typed Dart objects, and this skill teaches the agent how to use them.filters`.

When should I use Flutter SoLoud Audio Filters?

Flutter SoLoud Audio Filters fits situations like: adding reverb, echo or an equalizer to Flutter audio playback; applying pitch shifting, compression or limiting to a sound or a bus; fading or oscillating a filter parameter over time; choosing global, per-sound or per-bus scope for an effect.

How do I install Flutter SoLoud Audio Filters in Claude Code?

Run `npx skills add alnitak/flutter_soloud --skill flutter-soloud-filters -a claude-code`. Or copy the skill folder (skills/flutter-soloud-filters in alnitak/flutter_soloud) into .claude/skills/flutter-soloud-filters in your project. Claude Code loads it when a task matches its description.

How do I install Flutter SoLoud Audio Filters in Codex?

Run `npx skills add alnitak/flutter_soloud --skill flutter-soloud-filters -a codex`. Or copy the skill folder (skills/flutter-soloud-filters in alnitak/flutter_soloud) into .agents/skills/flutter-soloud-filters in your project. Codex loads it when a task matches its description.

Can I use Flutter SoLoud Audio Filters in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add alnitak/flutter_soloud --skill flutter-soloud-filters -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/flutter-soloud-filters, .gemini/skills/flutter-soloud-filters, .github/skills/flutter-soloud-filters and .opencode/skills/flutter-soloud-filters in your project.

What does Flutter SoLoud Audio Filters need to run?

Going by SKILL.md and its folder, Flutter SoLoud Audio Filters needs the command-line tools its instructions call (dart). Our summary lists: A Flutter project that uses the flutter_soloud package.

Does Flutter SoLoud Audio Filters access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Flutter SoLoud Audio Filters safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Flutter SoLoud Audio Filters use?

Flutter SoLoud Audio Filters is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Flutter SoLoud Audio Filters use?

About 2.1k tokens (SKILL.md is roughly 8.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.7k tokens, read only when the agent opens those files.

What are the alternatives to Flutter SoLoud Audio Filters?

Skills that share tags, products or a category with Flutter SoLoud Audio Filters: Generate Images With Firebase AI (evanca/flutter-ai-rules, 650 stars), Engine Whats New (flutter/flutter, 179k stars), Flutter Cherry Pick (flutter/flutter, 179k stars) and Upgrade Browser (flutter/flutter, 179k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Flutter SoLoud Audio Filters?

alnitak (a GitHub user) maintains it in alnitak/flutter_soloud, which has 425 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 9, 2026.

Source: alnitak/flutter_soloud on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.