用于 Gamelan 音乐的 Python 音序器
项目描述
加麦兰测序仪
用于 Gamelan 音乐的 Python 音序器
介绍
问题:西方乐谱和 MIDI 文件不太适合为甘美兰乐团创作和演奏乐曲。
解决方案:加麦兰音序器使用受加麦兰启发的 Kepatihan 乐谱格式。当提供乐器样本和乐谱时,提供的 Python 脚本会生成音乐录音。
我很幸运地找到了由 Elisa Hough 为 ketuk-ketik.com 录制的 UC Davis Gamelan Ensemble 的在线样本,并且在获得许可后,我正在使用这些样本来为这个系统播种。
安装
您可以从 GitHub 下载此存储库,或从 PyPI 获取它:
$ pip install gamelan_sequencer
PyPI 页面在这里:https ://pypi.org/project/gamelan-sequencer/
演示
克隆此存储库并运行以下命令(假设您已安装 Python):
[python -m] gamelan_sequencer scores/simple_score.json --mixdown=simple_score.wav
输出应该是一个简单的音乐作品。
[python -m] gamelan_sequencer scores/kotekan_sonatina.json --mixdown=kotekan_sonatina.wav
输出应该是这样的:https ://youtu.be/6_ZQaYkq0q0
注意:以上视频中的录音使用了--separates
选项而不是--mixdown
,这使我可以从各个轨道进行自定义混音。
参与其中
如果您创作了想要分享的乐曲,我们很乐意将其添加到“乐谱”文件夹中。
如果您用自己的作曲录制了录音,我们也很乐意在此处展示它。
请提出任何问题或改进建议!
用法
要求
- Python 2.6+ 或任何版本的 Python 3
- Python 包:(仅当您设置 detune_rate > 0 时)scipy
- 如果您
pip install
在下面使用,则会自动安装
- 如果您
从命令行
[python -m] gamelan_sequencer SCORE_FILE [--mixdown=MIXDOWN_FILE] [--separates=SEPARATES_FOLDER] [--samples=SAMPLES_FILE]
- SCORE_FILE:JSON 格式分数的路径
- 有关示例,请参见分数文件夹
- 以下参数之一(或两者):
- MIXDOWN_FILE:记录到单个文件
- SEPARATES_FOLDER:记录到多个文件的文件夹
- SAMPLES_FILE(可选):gamelan JSON 文件的路径
- 默认为提供的 javanese_gamelan.json
- 此 JSON 引用的所有声音都必须是 WAV 格式,并且具有相同的帧速率/每样本比特数/通道数。
来自 Python 环境
from gamelan_sequencer import Gamelan
gamelan = Gamelan()
score = gamelan.load_score(SCORE_FILE)
if score.load_errors == 0:
score.write_mixdown(MIXDOWN_FILE)
# and/or:
score.write_separates(SEPARATES_FOLDER)
输出
输出将是与您的样本文件具有相同帧速率/每样本比特数/通道数的 WAV 文件。
如果您为 提供文件名--mixdown
,则整个录音将混合为 WAV 文件。
如果您为 提供文件夹路径--separates
,您将为每个唯一的乐器/名称对获得一个单独的 WAV 文件。
分数格式
有关示例,请参见分数文件夹。
加美兰音乐有不同的音阶符号变体,但通常它们表示为八度音阶内的数字,数字上方或下方的点分别表示较低或较高的八度音阶。
为方便起见,我在提供的示例中使用了字母数字值:
.....
Kepatihan: 12356 12356 12356
·····
My format: 12356 ABCDE FGHIJ
您可以在示例 JSON 文件中指定您选择的任何字符映射(甚至是 unicode),然后在相应的乐谱 JSON 文件中使用该映射。
例如,在默认示例文件javanese_gamelan.json中,我们有这些 jenglong 示例:
"jenglong": {
"samples": {
"1": "jenglong5lo.wav",
"2": "jenglong4.wav",
"3": "jenglong3.wav",
"5": "jenglong2.wav",
"6": "jenglong1.wav",
"A": "jenglong5hi.wav"
}
}
因此,在我们的乐谱中,我们可以在这样的轨道中引用这些音符:
{ "instrument": "jenglong", "notes": "5...6...A.6.5...6...A.6.5..." }
隔断是如何拆分的
例如,如果您有这样的序列:
{ "instrument": "gong", "notes": "1..." },
{ "instrument": "bonang", "track_name": "polos", "notes": "56.5" },
{ "instrument": "bonang", "track_name": "sangsih", "notes": "32.3" }
然后将笔记分别记录到以下文件中:
- 锣.wav
- bonang_polos.wav
- bonang_sangsih.wav
它们都将同步,因此您可以将它们拖到您选择的音频应用程序中进行混音。
执照
根据 MIT 许可证获得许可。
注意:来自 ketuk-ketik.com 的样本不在此许可范围内。有关这些在线示例,请参阅http://elisahough.com/sounds/sampler.html 。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
gamelan_sequencer -1.2.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 70218104161ea95fcf11812ede6c5043efbee227cdedd66c84b3a310d9a33cf9 |
|
MD5 | a9ec0fb38aa2e8591b1fab16b9522b41 |
|
布莱克2-256 | d48d7cce7636746b489d60853e4c4643359bea41ef89d0cbb7363a0da4bdc9da |
gamelan_sequencer -1.2.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 80f5227eef7b5cbed37e61d4e041c560d2312b15723468429e814f03ded80801 |
|
MD5 | a89f700b219fb8fcf5a61fb6f7332910 |
|
布莱克2-256 | 5a51c36eebfb39f5ba7b3ab4e4a5c667c8219b1d41c01cce24b4d65077ed795b |