Language: 中文 | English
text2beep
是一个可以将纯文本形式的乐谱(目前仅支持 JSON 格式)转换成哔哔声并播放的 CLI 工具。
程序目前还在早期开发阶段,仅仅实现了最基本的合成和播放功能,之后还会陆续添加更多功能。
可以从 PyPI 安装最新的 release:
pip install text2beep
或从 Github 安装:
pip install git+https://github.com/shniubobo/text2beep.git#egg=text2beep
如果需要在新版本发布时收到通知,请点击页面右上角 Watch -> Releases Only。
text2beep
用起来很简单,只需准备好乐谱,然后:
text2beep /path/to/your/sheet.json
程序就会读取乐谱,并根据乐谱开始合成并播放音乐。
在代码库 examples
目录下已经准备好了几个乐谱文件,可以用 text2beep
直接播放试听。
如果需要获得程序完整的选项列表,text2beep -h
即可。
目前仅支持 JSON 格式的乐谱,将来可能会支持更多格式。
{
"bpm": 120,
"time_signature": "4/4",
"tracks": [
[
"E4--- C4--- D4--- G3---"
],
[
"C4--- A3--- B3--- E3---"
],
[
"A3--- F3--- G3--- C3---"
],
[
"A2--- F2--- G2--- C2---"
]
]
}
其中 BPM(bpm
)和拍号(time_signature
)用以决定乐曲播放的速度,而 tracks
就是乐曲的所有轨道。
如果需要将一个乐谱文件分成多个部分,或者为乐曲的不同部分指定不同的 BPM 与拍号,可以通过子乐谱(subsheets
)实现:
{
"subsheets": [
{
"bpm": 120,
"time_signature": "4/4",
"tracks": [
[
"E4--- C4---"
],
[
"C4--- A3---"
],
[
"A3--- F3---"
],
[
"A2--- F2---"
]
]
},
{
"bpm": 120,
"time_signature": "2/4",
"tracks": [
[
"D4--- G3---"
],
[
"B3--- E3---"
],
[
"G3--- C3---"
],
[
"G2--- C2---"
]
]
}
]
}
将会按顺序逐一播放所有子乐谱,也可以通过 --range
选项指定播放范围(详见 text2beep -h
)。
- 每个轨道都是一个
list
(根据 Python 的叫法)或者array
(根据 JSON 的叫法)。列表内部的所有字符串在程序处理时都会自动合并成一整个字符串。尽管可以把所有音符都放在一个字符串里,但还是推荐把它们放在多个字符串里来增加可读性。 - 可以在轨道中任意添加空格和
|
以增加可读性。程序会完全忽略它们。 - 同一个轨道中同时只能播放一个音符,而所有轨道同时播放。
- 音名必须为
CDEFGABX
之一,其中X
用以表示休止符。 - 如果音符不是休止符,可以在音名后加上变音记号
b
或#
。 - 如果音符不是休止符,需要为其指定音高。可选的音高范围是 0 至 8。
- 需根据音名、变音记号、音高的顺序,例如
C#4
。 - 音符默认为四分音符,如
C4
就是一个四分音符。 - 可以使用
-
为音符的时值增加 0.25,如C4-
就是一个二分音符。 - 可以使用任意数量的
-
,如C4---
为一个全音符,而C4--
相当于C4-+C4
(关于+
请看下文),但这种情况下的附点音符(C4--.
)含义模棱两可,因此不推荐使用 2 个或多于 3 个-
。也就是说,只使用-
或---
。 - 可以使用
/
将音符的时值减半,如C4/
就是一个八分音符。 - 可以使用
.
为音符添加附点,如C4.
就是一个附点四分音符。 -
和/
不能同时出现在一个音符中。- 可以使用
+
作为音符间的连接线(注意不是圆滑线)。
音符 | 时值 |
---|---|
X | 0.25 |
X- | 0.5 |
X--- | 1 |
X/ | 0.125 |
X// | 0.0625 |
X. | 0.375 (0.25 + 0.125) |
X.. | 0.4375 (0.25 + 0.125 + 0.0625) |
X/. | 0.1875 (0.125 + 0.0625) |
X-. | 0.75 (0.5 + 0.25) |
X+X// | 0.3125 (0.25 + 0.0625) |
- 曲名: アストロノーツ
- 原作者: 椎名もた
- 编曲: Xxoo00O00ooxX
- 曲名: 心做し
- 原作者: papiyon
- 编曲: Xxoo00O00ooxX
- 曲名: メルト
- 原作者: ryo
- 编曲: Clone of Nguyễn Thanh Hoàng Hải
本项目欢迎你的贡献,详见 CONTRIBUTING.md
。
本程序以 GNU GPL-3.0-or-later 许可发布。详见 LICENSE.txt
。
Copyright (C) 2020 shniubobo
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.