npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@si-jam-sessions/si-jam-sessions

v0.2.1

Published

A deterministic, hashed music law: a model proposes, a checker admits, every take is graded exactly and replays from its log.

Readme

si-jam-sessions

一个音乐引擎,可以对人工智能的演奏进行精确的评分、精确的回放,并以放心的态度进行训练。

将一段乐句与节拍对齐,引擎会记录该乐句中的每一个音符:

  • 记录音符出现的时间,以整数采样为单位;
  • 记录该音符在乐谱中的位置。

然后,它会根据乐谱对每个音符进行评分。两台机器对同一段乐句进行评分,结果会完全一致,因为 评分规则是确定性的 Rust 代码,编译成一个固定的 WebAssembly 二进制文件。由于规则是确定性的,因此记录的乐句在回放时会产生相同的哈希值,无需调用模型;CI 会在每次运行中回放一次。

si-jam-sessions 是 ai-jam-sessions 的对应物, 也是 si-rpg-engine 的一个姊妹项目。模型提出建议。 一个不是模型的检查器会接受或拒绝该建议,并给出理由,然后规则会提交并哈希它所接受的内容。模型不会直接操作乐谱。

收听

两段《共和国战歌》的乐曲在 登录页面 上并排播放,以便查看它们之间的差异。

  • 原始乐谱: 这是该项目对 1862 年匿名出版的 Ditson 版本的乐谱进行的转录。
  • 编曲者: glm-5.3 和 kimi-k3,它们都使用该原始乐谱在 Ollama Cloud 上进行编曲。
  • 许可: 两段乐曲都采用 CC0 1.0 许可。它们都通过了规则的许可检查,并提供了相应的证据。
  • 录音: 它们都通过规则,使用 Alexander Holm 的 Salamander Grand Piano V3 进行渲染(CC BY 3.0)。

| 编曲 | 长度 | 规则所提交的音符 | 未压缩的 WAV 文件(48 kHz,32 位浮点数) | |---|---|---|---| | glm-5.3 | 5:02 | 1,720 | 116 MB,SHA-256 85b2d567…2eed | | kimi-k3 | 4:37 | 1,924 | 106 MB,SHA-256 bf49d310…a017 |

渲染是确定性的:第二次渲染会产生相同的数据。CI 的钢琴任务在 Linux 上渲染了每个示例,并且两个 SHA-256 值都与发布版本相同:在 Windows 和 Linux 上也是如此。在首次获取钢琴后,此命令可以重现第一个示例:

cargo run -p host --release --locked -- render battle-hymn-glm-5.3.wav --piece battle-hymn-glm-5.3 --voice piano

完整的哈希值可以在 发布说明 中找到。

它与众不同之处

  • 乐句是规则的一部分。 时间、音高和力度都是哈希状态中的整数,因此“延迟 45 毫秒”是引擎可以证明的事实。波形只是呈现方式。
  • 时钟不会等待。 规则会以固定的时间间隔进行,无论是否有人演奏。模型会提前规划乐句,以应对提交时间范围。延迟的计划会被拒绝,绝不会被允许导致音乐停顿。
  • 每首乐曲都必须证明其价值。 音乐只有在提供证据的情况下才能进入:
  • 一首在美国和欧盟都属于公共领域的乐曲;
  • 一首属于公共领域的编曲,或者该项目创作的编曲;
  • 原始乐谱及其年份;
  • 一个与乐曲来源相匹配的内嵌许可。

未知的、共享许可、非商业用途和限制人工智能使用的乐曲将被拒绝。CC BY 4.0 许可的乐曲将位于其自己的归属层级中。

  • 训练数据将是规则所提交内容的打印版本。 尚未构建任何数据集。当构建数据集时,每一行都会回放至相同的哈希值,分割将按作品进行,并且在任何行存在之前都会固定,并且每个声明的结果都会说明其统计效力。

试用

使用 Rust 从源代码构建,或运行容器。该仓库在 rust-toolchain.toml 中固定了 Rust 1.98.1, 并且 rustup 会在首次构建时安装它。

  • Windows 10 和 11 可以运行所有内容,但尚未尝试使用真实的 MIDI 键盘进行实时输入。
  • Linux: CI 构建并测试主机,并使用它进行渲染。通过 Linux 音频设备进行播放尚未测试,并且实时输入目前仅适用于 Windows。
  • macOS 尚未测试。
  • 容器 ghcr.io/mcp-tool-shop-org/si-jam-sessions 运行 render、notes、notices 和 preview,无需 Rust 工具链。通过设备进行播放与未测试的 Linux 路径相同。

该镜像会与每个版本标签一起发布。它包含主机和乐谱,但不包含钢琴采样。

docker pull ghcr.io/mcp-tool-shop-org/si-jam-sessions:0.2.1
docker run --rm \
  -e HOST_UID="$(id -u)" -e HOST_GID="$(id -g)" \
  -v "$PWD:/out" \
  ghcr.io/mcp-tool-shop-org/si-jam-sessions:0.2.1 \
  notes /out/notes.json

在 PowerShell 上,删除 uid 行并挂载 ${PWD}:/out。手册的 容器页面 包含钢琴渲染和 Windows 表单。npm 包 @si-jam-sessions/si-jam-sessions 是此 版本发布的 README、变更日志和许可,由 Trusted Publishing 发布。安装它不会安装主机。主机是容器,或者是下面的构建。

cargo run -p host --release -- devices        # list the audio outputs and MIDI inputs
cargo run -p host --release -- fetch-piano    # download and verify the grand piano once (742 MB)
cargo run -p host --release -- play           # the Battle Hymn as glm-5.3 arranged it
cargo run -p host --release -- play --piece battle-hymn-kimi-k3
cargo run -p host --release -- jam --midi 0   # play along; each note is graded as it lands
  • --piece 选择 battle-hymn-glm-5.3(默认值)、battle-hymn-kimi-k3 或 entertainer,即第一个 里程碑的测试乐曲。
  • notes <out.json> 写入规则所提交的音符。登录页面从这些文件中获取数据。
  • host help 列出每个命令。

对于 jam,请使用有线输出。蓝牙输出的延迟时间超过规则允许的 100 毫秒。

信任模型

  • 涉及的数据:
  • scores/ 中的乐谱文件;
  • 每个用户缓存中的钢琴音效;
  • 您选择的音频输出和 MIDI 输入;
  • 您要求它写入的文件。
  • 不涉及的数据: 任何位于上述路径之外的数据。不涉及任何账户、凭据或遥测数据。
  • 容器: 实际上就是同一个程序。它包含二进制文件和乐谱,但不包含钢琴音效。在主机运行之前,它会降低权限:uid 为 10001,或者如果您设置了,则为 HOST_UID。挂载的目录是文件离开容器的唯一途径。
  • 网络: 只有 fetch-piano 会使用网络。
  • 它从一个固定的地址下载一个压缩包。
  • 在解压缩任何内容之前,它会检查压缩包是否与固定的 SHA-256 校验值匹配。
  • 它会拒绝链接以及指向其目录之外的路径。
  • 权限: 普通用户账户。不需要管理员权限。
  • “法律”模块: 完全不进行任何 I/O 操作。CI 检查确保其 WebAssembly 模块不导入任何内容。

如需报告漏洞,请参阅 SECURITY.md。

当前进展

  • 第一个里程碑已完成: “法律”模块、数据摄取和来源验证、黄金哈希值以及主机。黄金哈希值在 x86_64 和 ARM64 架构上以及在 V8、SpiderMonkey 和 JavaScriptCore 下的 WebAssembly 环境中都是相同的。
  • 设计已确定: 参见 docs/PHASE-0.md。
  • 过渡: docs/HANDOFF.md 涵盖了正在进行的工作、已做出的决定及其原因,以及下一步计划。
  • 审查: 在代码合并之前,两个模型会在 Ollama Cloud 上对其进行审查。每个模型都来自不同的家族,并且彼此不知道对方的审查结果。

许可

  • 代码: MIT(参见 LICENSE)。
  • 两首《战歌》的改编版本: CC0 1.0。
  • 钢琴音效: CC BY 3.0(Alexander Holm)。fetch-piano 会下载这些音效,并且它们不会被提交到代码库中。
  • 数据集: 每个数据集都有自己的许可证,并且许可证信息包含在其各自的卡片中。

由 MCP Tool Shop 构建。