跳转到主要内容

从MIDI旋律生成DIY音乐盒的SVG打孔卡的CLI工具。

项目描述

punchline

CLI工具,用于从MIDI旋律生成SVG打孔卡(带有旋律的条纹)的DIY音乐盒。

一些基本知识

  • SVG 是一种图像矢量格式,这意味着你可以将图像放大到任意大小,并在任何打印机、绘图仪激光切割机 上打印。
  • MIDI 是一种声音格式,它不是描述确切的音频,而是描述哪些乐器应该在何时演奏哪个音符。你可以在网上找到任何流行旋律的免费MIDI文件。
  • DIY音乐盒 是一种音乐盒,它不是播放预定义的旋律,而是可以播放任何从带有孔的纸条上演奏的旋律。你可以在网上以相当低的价格购买一个。

功能

  • 使用现代Python编写。
  • 具有友好的CLI。
  • 有良好的文档化的源代码(如果你真的想调整某些东西)。
  • 高度可配置。
  • 只有必要的依赖项。
  • 自动找到最佳转调。
  • 为音乐盒上不存在的音符找到最佳匹配。
  • 支持所有类型的音乐盒。
  • 支持离线工作。
  • 检测可能无声的音符。
  • 激光切割友好输出。

安装

您需要

  1. Python 版本 3.9 或更高
  2. pip
  3. 了解如何使用 终端仿真器
python3.9 -m pip install punchline

使用方法

获取帮助

python3.9 -m punchline --help

SevenNationArmy.mid 的第三轨生成20音符音乐盒的打孔卡,支持升音,并将结果保存到 "7nation" 目录

python3.9 -m punchline --input SevenNationArmy.mid --tracks 3 --sharps --notes-count 20 --output 7nation

唯一必需的参数是 --input。默认情况下,它将为15音符的非升音音乐盒生成所有音轨的条纹,并将结果存储在 "output" 目录。

您可以在 presets.md 中找到更多示例。

编辑技巧

  1. 您可以使用 Inkscape 编辑生成的SVG图像。它是免费的且功能强大。
  2. 要批量编辑特定类型元素
    1. 选择此类型的元素
    2. 右键单击它。
    3. 打开 "选择相同" 菜单。
    4. 选择 "填充和描边"
  3. 红色圆圈表示在音乐盒上无法完美匹配的声音。它们与大多数其他声音相比位于不同的音阶,或者当您的音乐盒不支持半音时,它们是半音(升音)。Punchline会尽力将它们放置在可以发出声音的位置,但您可能想编辑它们或完全删除。
  4. 注意轮廓圆圈(用白色填充而不是颜色)。这表示与同一线上的上一个声音太接近的声音。由于音乐盒的限制,它们可能无声。您可能想降低整个旋律的 --speed,或手动移动(或删除)冲突的声音。圆圈(圆心)之间的最小距离由 --min-distance 配置。

致谢

  1. 初始实现基于 punchbox
  2. mido 用于读取MIDI文件。
  3. svg.py 用于生成SVG文件。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

punchline-1.4.0.tar.gz (13.9 kB 查看哈希值)

上传时间

构建分发

punchline-1.4.0-py3-none-any.whl (13.1 kB 查看哈希值)

上传时间 Python 3

支持者