Skip to main content

用于 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 文件中使用该映射。

例如,在默认示例文件j​​avanese_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 (12.9 kB 查看哈希)

已上传 source

内置分布

gamelan_sequencer-1.2.0-py3-none-any.whl (12.8 kB 查看哈希)

已上传 py3