声音字体2解析库和实用程序

sf2utils的Python项目详细描述


sf2utils是soundfont 2解析库和配套实用程序。 它的目的是开发人员使用soundfont 2文件作为输入, 通常用于转换为其他格式。

安装

sf2utils可以通过一个pip命令从pypi安装:

pip install sf2utils

或者,sf2utils可以在git拉取之后直接从源代码运行:

git clone https://gitlab.com/zeograd/sf2utils.git
cd sf2utils && python setup.py install

配套脚本

sf2parse是用于分析声音字体2文件的命令行实用程序。 它是sf2utils解析器库的调试伙伴,如图所示 从解析器中理解的内容。

usage: sf2parse [-h] [-d] sf2_filename

LGPL v3+ 2016-2017 Olivier Jolly

positional arguments:
  sf2_filename  input file in SoundFont2 format

optional arguments:
  -h, --help    show this help message and exit
  -d, --debug   debug parsing [default: False]

Parse sf2 file and display info about it

库使用

sf2utils可以用作分析soundfont2文件的库。 有两个api级别,一个低级别,一个高级别。 它们都以相同的方式打开soundfont2文件:

from sf2utils.sf2parse import Sf2File
with open('file.sf2', 'rb') as as sf2_file:
    sf2 = Sf2File(sf2_file)

请注意,打开文件取决于库用户,因为示例 数据是延迟加载的。访问样本数据将查找和读取数据。 您不应该访问内容之外的示例数据 文件已打开,因为它将失败。

低级库api

一旦sf2是有效的sf2文件,所有元数据都可以通过 属性raw,其中包含 SoundFont2文件。

  • sf2.raw.info是一个字典,所有信息都在soundfont2文件的info块中,键是二进制字符串。
  • sf2.raw.smpl_offset是样本数据所在的原始文件中的偏移量。
  • sf2.raw.sm24_offset是原始文件中互补的8位示例数据所在的偏移量。
  • sf2.raw.pdta是主要的元数据结构,它是一个以规范命名的元组字典,并使用规范结构名称编制索引:
    • pbag->;'gen','mod'
    • igen->;'oper','amount'
    • imod->;'src_oper'、'dest_oper'、'amount'、'amount_src_oper'、'trans_oper'
    • pmod->;'src_oper'、'dest_oper'、'amount'、'amount_src_oper'、'trans_oper'
    • pgen->;“操作”、“金额”
    • shdr->;'sample_name'、'start'、'end'、'start_loop'、'end_loop'、'sample_rate'、'original_pitch'、'pitch_correction'、'sample_link'、'sample_type'
    • phdr->;'名称','预设','银行','包','库','流派','形态'
    • IBag->;'gen','mod'
    • inst->;'名称','行李'

有了这个api,字段解释仍然由库用户决定。

高级库api

有了这个api,可以通过info属性获得信息,该属性是一个可打印的元组,其中 字段来自soundfont2文件中的info块。

示例可通过samples属性访问,该属性是sf2sample的列表,您可以从中 检索循环信息和原始数据。

预设位于presets属性中,该属性是sf2preset的列表,您可以从中列出生成器, 调制器、仪器和袋子。

instruments位于instruments属性中,该属性是sf2instrument的列表,您可以从中 列出几袋发电机、调制器。

行李属于sf2bag类,提供多种属性,返回各种高级信息(关于循环, 调谐,滤波器,信封,仪器,样品,…)或没有发现发电机。

所有这些类都有一个pretty_print返回一个漂亮的打印字符串,在子元素上递归。

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

推荐PyPI第三方库


热门话题
命令行参数的java ArrayIndexOutOfBoundsException   java令牌构造不正确   在emacs中更改javamode的缩进样式   如果FileInputStream未关闭,java应用程序将崩溃?   java在listview中显示图像:应用程序可能在其主线程上做了太多工作   Commons Lang中的java数值验证   Java小程序未在HTML中显示   Eclipse Java版本设置不正确   AWS JVM CPU限制上的java Docker   如何通过java graphics 2d将图片剪切成圆形?我希望结果与objectfit类似:css中的cover   java Strut2验证,覆盖css_xhtml主题   JMS发布者/订阅者模型中的java并发使用者   java无堆栈信息V(未知源)   java如何在JSON数组中拥有与JSON响应相同的顺序?