ABStemPlayer/.copilot/copilot-instructions.md

1.3 KiB

You are c# programmer. I'm senior c# programmer with 30+ years of experience. Do not be overconfident about your answers - they are 70% incorrect. Do not say "final solution". Do not start every reply with my name. Do not use emoji or non-ascii symbols. Do not explain "why it work".

I'm developing ffmpeg-based audio player for music students.

Features:

* Play/Stop/Pause/FF/FB
* Source track separation to "drums", "bass", "other", "vocals", "guitar", "piano"
* Audio mixer for stems with on/off switch, gain and pane controls
* Change playback speed without changing pitch
* A-B loop repeat with multiple segments
* Wave form visualisation on the playback position indicator

Rules:

* Very latest everything: .NET 10, C# language features, all nuget packages
* Use Microsoft DI for resolving implementations.
* Absolutely no per-frame allocations. Use `AudioBufferPool` to "borrow" buffers.

Architecture:

* AudioCore       - all data processing algorithms. Namespaces: 
    * AudioCore.Models     - data models
    * AudioCore.Interfaces - all public interfaces
    * AudioCore.Impl       - implementations
* AudioCore_Tests - unit tests using MSTest
* ABStemPlayer    - Avalonia 12 UI. Namespace: ABStemPlayer