Add curated AquaSynth dings MCP service

This commit is contained in:
Meta Vens 2026-07-14 01:06:12 +01:00
commit 9abb7e4164
17 changed files with 426 additions and 0 deletions

View file

@ -15,6 +15,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\tools\AquaSynthDingsMcp\AquaSynthDingsMcp.csproj" />
<Using Include="Xunit" />
<Using Include="AquaSynth.Faust" />
</ItemGroup>

View file

@ -0,0 +1,35 @@
using AquaSynthDingsMcp;
namespace AquaSynth.Dsl.Tests;
public sealed class DingCatalogTests
{
[Fact]
public void CuratedInstrumentsStayDistinctAndInsidePleasantnessEnvelope() =>
Assert.Empty(DingCatalog.ValidateCuration());
[Fact]
public void MinimalDingsVocabularyIsComplete()
{
string[] expected = ["session.start", "task.acknowledge", "task.complete", "task.error", "input.required", "resource.limit", "user.spam", "session.end", "task.progress"];
Assert.Equal(expected.Order(), DingCatalog.Events.Keys.Order());
}
[Fact]
public void InstrumentsUseOneSemanticPitchControlAndNoNoise()
{
foreach (var instrument in DingCatalog.Instruments.Values)
{
Assert.Contains("/ding/frequency", instrument.Script, StringComparison.Ordinal);
Assert.DoesNotContain("wave=noise", instrument.Script, StringComparison.OrdinalIgnoreCase);
}
}
[Fact]
public void MultiNoteMotifsUseNonUrgentOnsetSpacing()
{
foreach (var dingEvent in DingCatalog.Events.Values)
foreach (var pair in dingEvent.Notes.Zip(dingEvent.Notes.Skip(1)))
Assert.InRange(pair.Second.DelayMilliseconds - pair.First.DelayMilliseconds, 180, 320);
}
}