Setlist Terzisi: A Local AI Setlist Planner for Live Musicians

Setlist Terzisi: A Local AI Setlist Planner for Live Musicians

Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission 💸 This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle.

Hacktoberfest 开源 AI 挑战赛第二周:副业项目提交 💸 这是我为 Hacktoberfest 开源 AI 挑战赛第二周“副业”主题所提交的作品。

What I Built Setlist Terzisi helps live musicians turn their repertoire into a timed performance plan. Users add songs, enter their show duration and breaks, and choose an energy flow. The app builds sets, highlights demanding vocal sequences, and lets musicians reorder songs before exporting a text setlist or printing a PDF. The interface supports Turkish and English and includes 32 editable sample songs. My intended customers are working cover bands and independent musicians who regularly adapt their repertoire for cafés, bars, weddings, and private events. A potential paid version could offer reusable event presets and shared band repertoires. This is an early prototype; willingness to pay has not yet been validated.

我构建了什么:Setlist Terzisi 旨在帮助现场音乐人将他们的曲目库转化为有时长规划的演出方案。用户可以添加歌曲、输入演出时长和休息时间,并选择能量流向。该应用程序会自动生成演出列表,高亮显示高强度的声乐片段,并允许音乐人在导出文本列表或打印 PDF 之前重新排序。界面支持土耳其语和英语,并内置了 32 首可编辑的示例歌曲。我的目标客户是那些经常为咖啡馆、酒吧、婚礼和私人活动调整曲目的翻唱乐队及独立音乐人。未来的付费版本可能会提供可重复使用的活动预设和共享乐队曲目库。这是一个早期原型,付费意愿尚未经过验证。

Demo The demo shows the Ollama mode generating a plan with qwen2.5:3b, followed by the editable setlist and timing information. This prototype runs locally. Installation instructions are available in the repository.

演示:演示展示了 Ollama 模式如何使用 qwen2.5:3b 生成计划,随后是可编辑的演出列表和时间信息。该原型在本地运行。安装说明可在仓库中找到。

Code Source code and setup instructions The application source code is MIT licensed. Model licenses apply separately.

代码:源代码和设置说明。应用程序源代码采用 MIT 许可协议。模型许可协议另行适用。

How I Built It The app uses Python’s standard library for its local server and vanilla JavaScript, HTML, and CSS for the interface. The AI workflow runs qwen2.5:3b locally through Ollama. The model receives the selected songs and event preferences, assigns ordering ranks, and returns a short explanation in the selected interface language. One challenge was getting a small model to return every song exactly once. The initial approach asked for an ordered list of song IDs, but the model sometimes omitted or repeated entries. I changed the response format to require a rank for each numbered song. The application maps these ranks back to the original repertoire and validates the result. Invalid responses receive one correction attempt. The model proposes the musical order. Application code handles duration budgets, breaks, set allocation, and vocal-spacing adjustments. A separate built-in planner is available without AI and is clearly labeled. The project currently has 16 automated tests covering planning constraints, model-output validation, retry behavior, translations, and sample data. I also tested real generation with the installed local model.

我是如何构建它的:该应用使用 Python 标准库作为本地服务器,并使用原生 JavaScript、HTML 和 CSS 构建界面。AI 工作流通过 Ollama 在本地运行 qwen2.5:3b。模型接收选定的歌曲和活动偏好,分配排序等级,并以所选的界面语言返回简短说明。一个挑战是如何让小型模型准确地返回每一首歌且不重复。最初的方法是要求返回一个有序的歌曲 ID 列表,但模型有时会遗漏或重复条目。我更改了响应格式,要求为每首编号的歌曲提供一个等级。应用程序将这些等级映射回原始曲目库并验证结果。无效的响应会获得一次修正机会。模型负责提出音乐顺序,而应用程序代码则处理时长预算、休息时间、演出段落分配和声乐间距调整。此外,还有一个不使用 AI 的内置规划器,并已明确标注。该项目目前拥有 16 个自动化测试,涵盖了规划约束、模型输出验证、重试行为、翻译和示例数据。我还使用已安装的本地模型测试了实际生成效果。

Why Does Open Innovation Matter? Local open-weight inference makes it possible to build this workflow without a paid cloud AI API. With the default configuration, repertoire data is processed on the musician’s own computer. Users can also change the local model rather than depending on one provider’s pricing or availability. Once the model is downloaded, inference does not require a cloud connection. The interface requests a Google Fonts stylesheet when available and falls back to a system font when offline. This approach does not make inference free of hardware or electricity costs, but it avoids per-request cloud API charges. For a small tool aimed at independent musicians, that makes experimentation and predictable operating costs more practical.

为什么开放创新很重要?本地开放权重推理使得在无需付费云端 AI API 的情况下构建此工作流成为可能。在默认配置下,曲目数据在音乐人自己的计算机上处理。用户还可以更换本地模型,而不必依赖单一提供商的定价或可用性。一旦模型下载完成,推理过程无需连接云端。界面在可用时会请求 Google Fonts 样式表,并在离线时回退到系统字体。这种方法虽然不能免除硬件或电力成本,但避免了按请求计费的云端 API 费用。对于针对独立音乐人的小型工具而言,这使得实验和可预测的运营成本变得更加切实可行。

Development Disclosure I used Codex to help develop, debug, test, and document this project. The prototype has not yet been tested by paying customers.

开发披露:我使用了 Codex 来协助开发、调试、测试和记录该项目。该原型尚未经过付费客户的测试。