将纯文本音乐转换为嘟嘟声的CLI工具。

text2beep的Python项目详细描述


文本2深

{1美元^ 1}

语言:英语

text2beep是一个CLI工具,它将纯文本乐谱(目前仅支持JSON格式)转换为蜂鸣音并播放。在

该工具仍处于早期开发阶段,只有合成和播放等基本功能。未来将增加更多功能。在

安装

目前还没有发布。请耐心等待第一次发布。如果您想在第一个版本可用时得到通知,可以单击页面右上角的“监视->仅限发布”。在

在第一个版本之前,您可以键入以下命令进行安装:

pip install git+https://github.com/shniubobo/text2beep.git#egg=text2beep

使用

text2beep易于使用。只需准备好表格,然后键入:

^{pr2}$

程序将开始阅读乐谱,并根据它合成和播放音乐。在

examples目录中有几个示例工作表文件。您可以在创建自己的图纸之前尝试一下。在

要获得该工具的完整选项列表,请键入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代表rest notes。在
  • 如果一个音符不是rest音符,则可以在它后面附加一个偶然的b或{}。在
  • 如果一个音符不是静止音符,则需要指定从0到8的倍频程。在
  • 名字第一,意外第二,八度第三。例如:C#4。在
  • 默认情况下,音符是四分之一音符。例如,C4是四分之一的音符。在
  • 每个-将注释值扩展0.25。例如,C4-是一个半音符。在
  • 可以使用任意数量的-。例如,C4---是一个完整的音符,而C4--等于C4-+C4(参见下面的+),尽管在这种情况下,虚线音符(C4--.)的含义不明确,因此不建议使用两个或多个-。换句话说,只使用----。在
  • 每一个/都将音符值缩短一半。例如,C4/是第八个音符。在
  • 注释可以用.点。例如,C4.是一个带点的四分之一音符。在
  • -和{}不能出现在同一个便笺中。在
  • ^{26>不能用在荡妇之间。在

一些示例:

NoteValue
X0.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)

示例歌曲

^{}^{}

^{}

^{}

贡献

任何贡献都是非常感谢的。有关详细信息,请参见^{}。在

许可证

该程序是在GNU GPL-3.0或更高版本下授权的。有关详细信息,请参见^{}。在

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/>.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ApachePOI在类加载时忽略java扩展库   从Scala(和Java)访问DRb对象(例如Ruby队列)的最佳方式是什么?   java GAE支持新的GCM(在I/O 15发布)了吗?   java改造未检索AccessToken   oracle Toplink和java存储word或pdf文件   java如何改革我的Android应用程序,使其与layout()函数一起工作   如何从Java方法返回多个对象?   Java main未运行<terminated>   java使用增强的for循环搜索LinkedList   java Dropwizard筛选器优先级客户筛选器与CORs筛选器   java 227进入被动模式(124153,94,30242138)   安卓 java。编译时lang.NoSuchMethodError   在java中通过socket发送文件   java MapStruct不同的实现:mvn安装与运行   java为什么我的程序找不到我要扫描的文本文件?   带有HTML的java JLabel未正确设置宽度   java Hibernate导致具有@ManyToMany双向关系的无限循环   Java中的引用传递   java如何使用tomcat分别配置应用服务器和web服务器?   java Selenium将文本发送到密码字段