声音字体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动态地将圆添加到Arraylist   什么是好的“错误检查”模式(Java)?   java是我们可以在应用程序中使用的云服务,它需要存储最大大小为5MB的小文件   JavaGooglePhotosAPI是静态内容上传项目的永久url   java AES密钥存储   java文件正在下载,但没有任何内容   每次循环迭代和threadsleep的java日志记录都是不好的做法?   java不会切换到另一个。单击submit时使用jsp。春季mvc   java我很难从我的maclaurin系列中获得sin x的准确输出   java使用类似的<Object>?   需要java Hibernate映射吗?   java如何在https和客户端证书请求后面生成web服务代理   java如何通过注释有条件地使用自定义JsonSerializer   java如何在html页面和Restful WebResource方法之间实现JaxB?   读取文件Libgdx Android时发生java错误   java如何在处理主活动之前从另一个方法中获取值?   java在一个SQLquery中使用多个语句,还是使用批处理?