KDocs 研发资料库
  • 音频技术应用文档入口汇总
  • 杰理WINDOWS环境安装及其他事项
  • LINUX安装和编译
  • Linux环境编译SDK教程(ubuntu18.04)
  • 音频类补丁汇总表
  • 认证资料获取汇总(最新资料后台会更新)
  • 《Hi-Res申请指南v1.0》
  • FreeRTOS 开源协议版本
  • uCOS 开源协议版本信息
  • 各个模块关键资料汇总
  • 软件调试方法
  • Makefile编译
  • 提bug的规范
  • 常规设备使用指导
  • 对外特别发布开发注意点信息汇总
  • AD697X软件问题整理
  • AC700N软件问题整理
  • AC701X耳机软件问题整理
  • 951&961软件问题整理
  • AC104X软件问题整理
  • AC128N问题整理文档
  • 可视化工具调试问题整理
  • 耳机资料汇总
  • AC704N、 AC705N相关应用
  • AC695N&AC696N&AC608N音箱问题整理
  • JL701N音箱问题整理
  • AC692X软件问题整理
  • AC706N音箱问题整理
  • JL701N音箱问题整理(可视化工具SDK)
  • JL703N音箱问题整理
  • JL709N(JL689N)音箱问题整理
  • JL7094系列-入门到进阶开发指导
  • AC210N音箱问题整理
  • 无线麦系列版本支持指南
  • AW32N无线麦问题整理
  • lAD697X&JL701X 无线麦软件共性问题整理
  • AC706N无线麦问题整理
  • AW36N无线麦问题整理
  • AC710X无线麦问题整理
  • 唤醒源获取及唤醒IO设置
  • 电源
  • LVD
  • 长按复位配置方法
  • 低功耗应用
  • TIMER
  • UART
  • SPI
  • 内部FLASH空间添加用户自定义区域
  • IIC
  • GPIO
  • MCPWM
  • SD&U盘
  • 时钟&晶振
  • GPCNT
  • IO口crossbar映射功能
  • 文件系统使用总结
  • 复用应用
  • LINEIN_AUX相关应用
  • IIS音频接口应用
  • SPDIF模式相关(HDMI_ARC、光纤、同轴)
  • PDM LINK
  • 外设相关应用
  • 蓝牙相关
  • 杰理蓝牙距离调试文档
  • TWS耳机配对方式使用及生产把控指南
  • GFP谷歌快连及其认证流程指引
  • 蓝牙发射器(bt_emitter)相关
  • BLE应用
  • 关于提升BLE传输速率说明
  • BLE测试数据
  • MUSIC 模式相关应用
  • MIDI音乐实现
  • PC相关应用
  • FM相关应用
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20250107
  • fm应用详细设计说明书
  • 杰理FM硬件指南-20230315
  • ADC模块
  • AUDIO相关应用
  • 新Tools的音效调试使用
  • 混响应用使用说明
  • 音效调式
  • 音箱耳机低音小音量增强实现方法
  • DAC输出功率调试
  • DAC性能测试指南
  • 针对各类底噪、电流声分析流程
  • 录音相关应用
  • OPUS编解码相关
  • RTC相关应用
  • 升级相关
  • UI相关应用
  • 通话调试流程指南
  • 通话相关应用
  • 省电容mic使用手册
  • 如何测试验证手表通话系统的语音失真 V1.0
  • AC695X_AC696X_AD697X 常见通话问题处理参考资料
  • 通话调试问题确定步骤
  • 内置触摸调试指南
  • 低功耗内置触摸介绍V2.2
  • 触摸相关文档
  • AC697X、AC698X内置触摸调试及整改方法V1.0
  • 产测相关应用
  • AC63X BLE DUT测试介绍
  • 兆华序列使用简易说明
  • JL_1T2蓝牙测试盒音频文件更换说明
  • ENC相关应用入口汇总
  • ANC相关应用入口汇总
  • JL DMS通话调试手册-V3.9.4
  • ANC-ENC结构设计要点-20240407
  • 半入耳式ANC耳机器件选型与结构设计指南V1.0
  • JL 耳道自适应调试指南
  • ANC相关问题处理
  • ANC调试文档
  • 评估蓝牙耳机通话上行降噪性能的方法 V1.0 (2)
  • FCC 或者 BQB 认证相关应用
  • BQB profile 测试中常遇到的问题点汇总
  • 蓝牙参数整理20210811
  • 杰理科技认证问题参考
  • 无线音频产品开发指南
  • 无线麦系列从入门到进阶开发指导
  • 量产烧录相关说明
  • 一拖八烧录器远程过程调用说明
  • 量产相关建议
  • EffectTool(eq)调试工具说明文档
  • AC897AD697系列的EQ调试方法-V3
  • 杰理调音指南-20220622
  • 音效模块总结
  • 简要调音步骤指引(可视化)
  • 耳机充电与通信调试指南
  • 充电仓硬件调试指南
  • 充电仓软件问题整理
  • AC951常用说明
  • AC951_AC961_开发板使用说明V1.0
  • 彩屏仓AC982 入门指导及FAQ
  • 蓝牙音频APP相关应用
  • 手机APP的简介和开发流程
  • 蓝牙音频系列-硬件设计指南
  • 静电测试及整改方法-20220706
  • TWS耳机底噪整改指南V1.2
  • 杰理蓝牙距离调试文档
  • 蓝牙RF硬件设计与调试V1.1-20250219
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20241228
  • 音效调试指南
  • 无线话筒K歌音箱标准开发流程
  • 杰理科技 700N TWS耳机产品标准-202303
  • 杰理科技 701N 广播产品标准-202303
  • JL-HAT ANC高效产测自适应
  • 无线话筒测试板使用介绍
  • 一拖八频偏校准使用说明
  • 领夹麦产测工具使用介绍
  • Dongle量产测试说明
  • Dongle+Tws或头戴式 SDK通过工具绑定配对功能说明文档
  • 双麦ENC产测宏配置验证方法 V1.0
  • JL耳机方案麦克风声学测试指令_V1.0
  • JL耳机方案麦克风声学测试指令_V2.0
  • JL_ENC自动测试命令_V0.0.1
  • JL蓝牙测试盒用例说明
  • LDAC自测环境搭建_ubuntu
  • 延迟小板使用手册
  • 杰理库文件的制作及添加实现过程
  • 关于 AC635N&AC636N系列免晶振兼容性补丁 说明
  • 关于 AC63系列VM兼容性修复补丁_20250224 说明
  • 关于 AC632N &AE632N_ 蓝牙& 低功耗兼容性修复补丁 说明
  • AD698N和AC638N电压优化补丁V3说明
  • 关于 AC635N&AC636N漏电和E&G版兼容联合补丁 说明
  • AD698N和AC638N电压优化补丁V2说明
  • 702相关应用
  • 2024-4-30 发布歌词显示SDK开发注意事项
  • BQB RF & FCC 认证测试固件问题汇总及源码
  • BQB profile 测试中常遇到的问题点汇总
  • 进dut测试模式方法及固件
  • 704-频偏修改bin文件合集
  • 701手表BQB PROFILE认证注意事项
  • 认证的干扰规避整改
  • 海外CRA认证报告生成说明
  • JL700N可视化工具问题处理文档
  • JL701X可视化工具问题处理文档
  • JL701N_earphone_release_v1.6.0_ANC 低功耗问题补丁
  • JL708X可视化工具问题处理文档
  • JL709N可视化工具问题处理文档
  • JLstudio可视化工具使用说明
  • 一拖二-串口_蓝牙_app在线EQ、通话参数及调试方式和内置触摸调试
  • 可视化JL701M_DONGLE_SDK添加MIC为发射源
  • 可视化JL701M_DONGLE_SDK添加按键切换usb audio与MIC发射源
  • JL701M_DONGLE_SDK_1.0.0_dongle输入linein输出dac
  • 701可视化_a2dp_to_le_demo说明
  • 耳机系列demo汇总
  • JL7018F&JL7006F_7003F AUX IIS
  • 一键连接应用
  • 普通SDK动态开关一拖二功能
  • 蓝牙分析仪(EllisysBluetoothAnalyzer)抓包例程
  • TWS配对常见应用
  • APP自定义按键的demo
  • AC700N 播歌双EQ DEMO示例及说明
  • AC698V164 MIC与蓝牙音乐共同输出DAC demo
  • 添加第三方算法以及多算法授权流程
  • 空间音频配置方法
  • 普通高低电平TWS耳机控制通讯
  • 入耳检测状态更新demo解析
  • 资源优化(非可视化的SDK)
  • 资源优化(可视化SDK)
  • 翻译耳机、语音识别应用demo
  • 耳机抗干扰问题排查和优化
  • AC698D2 抗干扰优化
  • AC696X软件问题整理
  • AC695X软件问题整理
  • AC695X软件问题整理_1722249702
  • AC608X软件问题整理
  • JL701N_2T1_DUPLEX 应用软件问题汇总
  • le_audio_1.0.0_patch05 以及之前的版本IRkey 功能异常修改
  • AC706N-le_audio-200SDK有线_无线麦录音demo
  • jl701n_le_audio_v200patch02 IO串口升级修改串口单次发送字节长度的修改办法
  • 703创建IIS 输入dac输出音频流demo
  • 703将媒体流音频同时上传PC_mic录音demo实现
  • 703四路IIS输入输出demo
  • 底噪调试
  • AW328A烧录说明
  • 文档合集
  • AC706N_wireless_mic_release_PATCH_20240712 补丁 说明
  • AC706N_wireless_mic_release_PATCH_20240726 补丁 说明
  • AC706N_wireless_mic_release_V1.0.0、1.0.1、1.0.2 补丁 说明
  • AC706N_wireless_mic_release_V1.1.2 中的2T1应用 RX端不绑定配对,TX端实现绑定配对的修改方法
  • 各系列省晶振实现方法
  • iis tx rx说明文档
  • spdif信号
  • 蓝牙电话本
  • 安卓手机同步时间补丁
  • CDC配置
  • PC模式下增加Teams唤起功能
  • 杰理HDMIARC开发实现过程
  • AC701N patch06之前的版本用第三方算法节点实现新版本的pcm delay节点功能
  • (K歌音箱)各SDK音效配置相关说明
  • 长文件录音
  • 点阵屏歌词字库相关(蓝牙歌词,普通歌词)
  • 字模提取工具说明
  • 音箱可视化彩屏-入门到进阶开发指导
  • 彩屏LVGL UI设计及工具使用
  • 使用内部UI框架进行UI调试的系列步骤
  • AD101C使用强制升级工具spi 烧录不了问题处理(测试版本)
  • AD161扩展灯板说明文档
  • 歌词显示器开发注意项
  • 使用硬件数字增益控制通话下行音量(可视化)
  • 杰理小牛产测资料
  • ENC配置说明
  • 通话调试流程指引
  • ANC相关功能demo
  • 无线麦硬件资料汇总
  • 无线麦相关应用
  • 无线麦复杂功能补丁包汇总
  • 无线话筒形态SDK程序&开发经验&问题点分享
  • 双模式结合应用问题汇总
  • 无线麦距离优化案例
  • 无线麦系列中的双工形态(duplex)演变开发对讲机方案开发资料
  • 音箱入门到进阶指导文档(编写中)
  • 蓝牙耳机品控和生产技巧
  • 982过_欠压标志获取异常
  • 如何获取最新涂鸦SDK及库文件
  • 无线话筒K歌音响-调音标准流程
  • 无线话筒产测流程

杰理AD14N_AD15N_MIDI应用说明文档

📎 原始文档:https://www.kdocs.cn/l/cuLhWpMMqIahimage

杰理AD14N AD15N MIDI应用介绍

珠海市杰理科技股份有限公司

Zhuhai Jieli Technologyco.,LTD

版权所有,未经许可,禁止外传
2022年7月7 日
imageimage 目录
第一章 MIDI应用..............................................................................................................................5
1.1 MIDI功能介绍.......................................................................................................................... 5
1.2 MIDI乐谱解码.......................................................................................................................... 6
1.2.1 MIDI乐谱解码初始化与CMD 配置介绍.......................................................................... 6
1.2.1.1 MIDI乐谱解码运行步骤....................................................................................................................... 6
1.2.1.2 初始化的配置......................................................................................................................................... 7
1.2.1.3 MIDI乐谱解码的CMD配置................................................................................................................ 8
1.2.1.4 MIDI在运行中动态配置功能示例.......................................................................................................9
1.2.2 解码方式(CMD_MIDI_ CTRL_MODE)....................................................................... 10
1.2.3 ONE KEYONE NOTE模式............................................................................................... 11
1.2.3.1 打开OKON模式................................................................................................................................. 11
1.2.3.2 OKON 的工作模式(CMD_ MIDI_ OKON_ MODE)..................................................................... 11
1.2.3.3 设置主旋律........................................................................................................................................... 13
1.2.3.4 快速打断功能....................................................................................................................................... 13
1.2.3.5 中途切换OKON模式......................................................................................................................... 13
1.2.4 主旋律乐器的选择(CMD_MIDI_SET_ CHN_PROG).................................................. 14
1.2.5 乐谱中添加标记(MARK)功能.......................................................................................... 15
1.2.5.1 MARK 回调函数................................................................................................................................... 15
1.2.5.2 两个MARK之间循环播放................................................................................................................ 15
1.2.6 其他回调功能...................................................................................................................16
1.2.6.1 主旋律的音符回调功能...................................................................................................................... 16
1.2.6.2 主旋律的音符结束回调功能.............................................................................................................. 16
1.2.6.3 节拍(BEAT)的回调.............................................................................................................................. 17
1.2.6.4 小节的回调........................................................................................................................................... 17
1.2.6.5 清狗的回调........................................................................................................................................... 17
1.2.7 外部音量功能(CMD_MIDI_SET_EX_ VOL)................................................................ 17
1.2.8 移半音功能(CMD_MIDI_SET_SEMITONE)............................................................... 18
1.2.9 更改节奏和衰减(CMD_MIDI_ CTRL_ TEMPO).......................................................... 18
1.2.10 小节回退功能(CMD_MIDI_SEEK_BACK_N)...........................................................19
1.2.11 MIDI解码函数接口........................................................................................................ 20
1.2.11.1 函数v。id midi_ dec。de_ init(v。id) .....................................................................................................20
1.2.11.2 函数int music_midi_ ctrl_ c。nfig(music_play_。bj *hdl, u32 cmd, v。id *parm) ........................... 20
1.2.11.3 函数v。id midi_。k。n_m。de_ set(music_play_。bj *music_。bj, u8 m。de) ..................................... 21
1.2.11.4 函数v。id midi_。k。n_ g。。n(music_play_。bj *music_。bj) ..............................................................21
1.2.11.5 函数v。id midi_ init_ inf。(MIDI_ INIT _ STRUCT *init_ inf。) ..........................................................21
1.3 MIDI琴.................................................................................................................................... 22
1.3.1 MIDI琴初始化..................................................................................................................22
1.3.1.1 初始化过程........................................................................................................................................... 22
1.3.1.2 注意要点............................................................................................................................................... 22
1.3.2 MIDI琴音符回调功能...................................................................................................... 23
1.3.3 MIDI琴函数接口.............................................................................................................. 23
1.3.3.1 函数v。id midi_ ctrl_ dec。de_ init(v。id) ............................................................................................... 23
image 1.3.3.2 函数int music_midi_ ctrl_ set_pr。g(music_play_。bj *hdl, u8 pr。g, u8 chn) ................................... 23
1.3.3.3 函数int music_midi_ ctrl_pitch_bend(music_play_。bj *hdl, u16 pitch_val, u8 chn) .....................23
1.3.3.4 函数int music_midi_ ctrl_ c。nfig(music_play_。bj *hdl, u32 cmd, v。id *parm) ............................. 24
1.3.3.5 函数int music_midi_ ctrl_n。te_。n(music_play_。bj *hdl, u8 nkey, u8 nvel, u8 chn) .....................24
1.3.3.6 函数int music_midi_ ctrl_n。te_。ff(music_play_。bj *hdl, u8 nkey, u8 chn) ...................................25
1.3.3.7 函数int music_midi_ ctrl_vel_ vibrate(music_play_。bj *hdl, u8 nkey, u8 vel_ step, u8 vel_rate, u8
chn) ...................................................................................................................................................................... 25
1.3.3.8 函数int midi_ ctrl_play_ end_ deal(music_play_。bj *hdl) ................................................................. 25
1.3.3.9 函数v。id midi_ ctrl_ callback_ init(music_play_。bj *hdl, u32(*mel。dy_ callback)(v。id *, u8, u8), u32(*mel。dy_ st。p_ callback)(v。id *, u8)) ........................................................................................................ 26
第二章 MIDI工具............................................................................................................................27
2.1 MIDI工具主界面...................................................................................................................27
2. 1. 1 MIDI版本说明............................................................................................................... 27
2. 1.2 MIDI工具简介............................................................................................................... 27
2. 1.3 主界面-乐器种类............................................................................................................28
2. 1.4 主界面-选中乐器............................................................................................................28
2.2 MIDI转换.............................................................................................................................. 29
2.2. 1 选择需要转换的MIDI文件...........................................................................................29
2.2.2 输出目录........................................................................................................................ 30
2.2.3 转换................................................................................................................................ 30
2.2.4 导出库............................................................................................................................ 31
2.3 MIDI音色库压缩...................................................................................................................32
2.3. 1 压缩流程........................................................................................................................ 32
2.3.2 压缩信息查询.................................................................................................................34
2.3.3 还原压缩配置内容......................................................................................................... 36
2.4 MIDI导入SF2音色库...........................................................................................................37
2.4. 1 添加或删除SF2 文件.....................................................................................................37
2.4.2 SF2 音色库信息查询......................................................................................................38
2.4.3 还原SF2 音色库内容.....................................................................................................38
2.5 MIDI WAV编辑.................................................................................................................... 39
2.5. 1 WAV编辑界面简介........................................................................................................ 39
2.5.2 波形编辑........................................................................................................................ 40
2.5.3 参数配置........................................................................................................................ 41
2.5.4 包络编辑........................................................................................................................ 43
2.5.5 波形保存........................................................................................................................ 43
2.5.6 WAV编辑信息查询........................................................................................................ 44
2.5.7 还原WAV编辑内容....................................................................................................... 44
2.6 按键与乐器表.........................................................................................................................45
2.6. 1 按键表............................................................................................................................ 45
2.6.2 乐器表............................................................................................................................ 45
image

MIDI应用

http://www.zh.jieli.com/

第一章 MIDI应用

1.1 MIDI功能介绍

MIDI全称是乐器数字接口(Musical Instrument Digital Interface),是20 世纪80 年代初为解决电声乐器之间的通信问题而提出的,编曲界最广泛的音乐标准格式。
image MIDI用音符的数字控制信号来记录音乐。 一首完整的MIDI音乐只有几十KB大,而
能包含数十条音乐轨道。其传输的不是声音信号,而是音符、控制参数等指令,它指示MIDI
设备要做什么,怎么做,如演奏哪个音符、 多大音量等。
SH54 / 55支持MIDI乐谱解码以及MIDI琴两种应用。其中: MIDI乐谱解码有4种方式:
1 正常解码模式
2 OKON(ONE KEY ONE NOTE)模式
3 只推消息不出声模式
4 外部音源模式
MIDI琴有l种方式:

1 琴键解码模式

imageimageimageimageimageimageimage

1.2 MIDI乐谱解码

MIDI乐谱解码的过程为,初始化后,打开MIDI乐谱文件获取到音符,再访问音色库找到对应的乐器音色进行解码,不断获取音符并重复该过程直到乐谱结束。本节讲介绍MIDI 解码的初始化、MIDI解码的功能配置以及注意点。

1.2. 1 MIDI乐谱解码初始化与CMD配置介绍

1.2.1.1 MIDI乐谱解码运行步骤
  1. 在系统初始化时会调用midi_decode_init(void)函数记录MIDI音色库文件的信息; midi乐谱解码MAX_DEC_PLAYER_CNT 同时发声的key数默认为8。
  2. 调用decoder_init(void)初始化解码器;
  3. 打开midi乐谱文件并调用函数decoder_io(void *pfile, u32 dec_ctl, dp_buff *dbuff, u8 loop)进行解码,该函数dec_ctl参数传入BIT_MIDI;
  4. midi解码初始化中会调用函数void midi_decode_api(void *p_file, void **ppdec, void *p_dp_buf),初始化MIDI解码信息,比其他解码格式多了配置参数这一步!
  5. 配置参数会调用函数midi_init_info(MIDI_INIT_STRUCT *init_info),进行MIDI功能的初始化,包括主旋律选择、外部音量设置、所有回调函数的注册等,最后使能对应的控制使能位。
  6. 通过CMD_INIT_CONFIG命令将midi初始化的信息传入解码器中,到此midi功能初始化完成。
  7. 解码器启动,dac开始发声;
    imageimage
1.2.1.2 初始化的配置

MIDI解码功能的初始化在函数void midi_init_info(MIDI_INIT_STRUCT *init_info)中进行。该函数中会配置MIDI_INIT_STRUCT结构体内包含的成员。配置功能结构体后,还需要配置功能对应的控制使能参数,sdk 中默认的MIDI功能配置如图所示:
image 配置完成后,通过CMD_INIT_CONFIG命令将配置完成的MIDI_INIT_STRUCT 结构体传给解码器,如下图所示:
imageimage

1.2.1.3 MIDI乐谱解码的CMD配置
1) CMD命令配置说明

MIDI乐谱解码可以通过CMD实时配置功能。首先配置CMD对应的功能结构体,再调用函数int music_midi_ctrl_config(music_play_obj *hdl, u32 cmd, void *parm),函数参数分别传入midi解码句柄、CMD命令以及配置好的功能结构体指针即可实现,MIDI 的CMD
image

。
2) 控制使能参数说明(CMD_MIDI_SET_SWITCH命令)

部分功能配置结束后,还需要置上相应的使能位才能生效(初始化中已经置上的使能位不需要再次使能)。使能参数是一个u32变量,每一bit代表一个功能,该bit置1/置0会打开/关闭对应的功能。
image MIDI功能使能的方式有两种,一种是在MIDI初始化中配置MIDI_INIT_STRUCT结构体的switch_info成员,并调用CMD_INIT_CONFIG命令配置初始化后生效。
另一种时通过调用上一节函数music_midi_ctrl_config(),分别传入MIDI解码句柄、 CMD_MIDI_SET_SWITCH命令以及配置好的使能参数。注意,该命令传入的使能参数是所
image 有功能的使能位,单独操作某一使能位时不能影响到其他bit,否则会影响到其他功能。可以沿用MIDI初始化的全局变量init_info->switch_info来管理使能位。
image

1.2.1.4 MIDI在运行中动态配置功能示例

本小节以在MIDI运行中配置主旋律乐器为例,其他功能配置可参照该例程;
l) 首先查看MIDI支持的CMD命令CMD_MIDI_SET_CHN_PROG,并找到它对应的结 构 体 参 数 MIDI_PROG_CTRL_STRUCT, 以 及 对 应 的 使 能 位 SET_PROG_ENABLE(无使能位则忽略)。
2) 根据需要配置结构体,并通过music_midi_dec_config()函数将CMD和配置好的结构体指针传给解码器;
3) 若该功能有使能位且MIDI初始化中未使能,则需要使能对应的功能。首先获取全局变量init_info->switch_info 的值得到所有使能配置,再置上对应的使能位,通过 CMD_MIDI_SET_SWITCH命令将使能参数传给解码器,该功能配置就会生效。
imageimageimageimage

1.2.2 解码方式(CMD_MIDI_CTRL_MODE)

MIDI解码方式共有4种,分别是:

1 正常解码模式

该模式即正常解码MIDI乐谱文件。

2 OKON(ONE KEY ONE NOTE)模式

该模式即用户通过按键驱动MIDI文件解码,通过调用函数实现按一次按键播放一段音符。

3 只推消息不出声模式

该模式暂不支持。

4 外部音源替换模式

该消息主要应用为使用录音音源替换乐谱,录音文件需要经过处理。
其各自对应参数如下:
image MIDI初始化中配置init_info->mode_info 即可选择默认的解码方式,如下图所示, sdk 默认选择了OKON模式。
image 初始化配置之后调用midi_okon_mode_set(music_play_obj *music_obj, u8 mode)函数,可以修改MIDI 的解码方式;详情请看《3 .3.3.函数void midi_okon_mode_set(music_play_obj *music_obj, u8 mode)》说明。
imageimage

1.2.3 ONE KEY ONE NOTE模式

1.2.3.1 打开OKON模式

调用midi_okon_mode_set(),传入CMD_MIDI_CTRL_MODE_ 1即可切换到OKON模式。使用OKON模式需要置上MELODY_PLAY_ENABLE使能位。

1.2.3.2 OKON 的工作模式(CMD_MIDI_OKON_MODE)

OKON 的工作模式共有三种,分别是:

1 主旋律 OKON 副旋律正常播放;

2 主副旋律一起OKON;

3 只有主旋律OKON副旋律不发声;

其各自对应的参数如下:
imageimageimageimage 其中,只有主旋律OKON副旋律不发声的工作模式,在解码过程中有可能长时间占用 CPU,所以需要在wdt_clear_trigger()函数中调用清狗函数,否则有可能会导致系统复位!
imageimageimage OKON按键按下后可以回调的音符,该功能需要置上MELODY_ENABLE使能位。 回调的方式共有两种,分别是:

1 回调当前音符

2 回调下一个音符位

其各自对应参数如下:
imageimageimage MIDI初始化中配置init_info->okon_info即可选择默认的OKON工作模式,如下图所示, sdk默认选择了主旋律 OKON 副旋律正常播放和回调当前音符。
imageimage

1.2.3.3 设置主旋律

OKON 模式需要确定主旋律来播放音符。 初始化时, 系统会判断 const 变量 MAINTRACK_USE_CHN 的值,值为0通过轨道(track)号选择主旋律,值为 1通过通道(channal)号选择主旋律。修改init_info->mainTrack_info.chn的值可以在初始化中确定主旋律,有效范围是0~ 15。若让系统自动选择第一个音符所在轨道或通道为主旋律,则选择 17。Sdk
image 中的默认配置如下:
image 注意,通过轨道(track)号选择主旋律时,mainTrack_info.chn 的值与乐谱制作软件的轨道号一致;通过通道(channal)号选择主旋律时,mainTrack_info.chn 的值需要比乐谱制作软件的通道号小 1,即mainTrack_info.chn 的值为0时,对应乐谱中的 1号通道作为主旋律;
MIDI乐谱制作时,一个轨道只能对应一个通道,但是一个通道可以对应多个轨道;例如音轨 1、 音轨2对应通道 1,音轨3对应通道2,那么以轨道(track)号选择主旋律时, mainTrack_info.chn 设置为 1,则音轨 1 为主旋律; 以通道(channal)号选择主旋律时, mainTrack_info.chn设置为0,则通道 1对应的音轨 1和音轨2一起成为主旋律。

1.2.3.4 快速打断功能

在只有主旋律OKON副旋律不发声的模式下,可以置上MAIN_INTERRUPT_ENABLE 使能位开启快速打断功能。上一个音符未结束而下一个音符到来时,未开启快速打断,两个音符会叠加在一起直至上一个音符结束;开启快速打断后,会加快上一个音符的衰减,使其迅速消失减少叠加时间。

1.2.3.5 中途切换OKON模式

中途切换MIDI模式可以调用函数midi_okon_mode_set(),并将mode设置为OKON模式(CMD_MIDI_CTRL_MODE_ 1)。 OKON模式下需要调用midi_okon_goon()函数启动下一个音符。sdk 中应用示如图所示:
imageimageimage

1.2.4 主旋律乐器的选择(CMD_MIDI_SET_CHN_PROG)

MIDI可以强制指定主旋律的乐器,可以做到实时变更主旋律的乐器以及相关音量配置,使用该功能需要置上SET_PROG_ENABLE使能位,没有使能则使用MIDI乐谱上默认的乐器。其功能结构体MIDI_PROG_CTRL_STRUCT包括:
1
image prog
乐器号,与我司midi制作工具中的乐器号对应;
2
image replace_mode
替换模式,选0是只更变主旋律的乐器,选 1是更变所有旋律的乐器。 暂不支持单独更变
副旋律的乐器;
3
image ex_vol
音量配置,该值会将音量改变为原来的(ex_vol / 1024)倍;值为 1024则不改变音量;
Sdk 中的默认配置如下:
image 该功能可以在 MIDI 运行中动态设置,调用函数music_midi_ctrl_config(),并将 CMD_MIDI_SET_CHN_PROG命令和配置好的结构体参数传入;置上SET_PROG_ENABLE 使能位即可。详情请看《2 .1.3MIDI乐谱解码的CMD配置》说明。
image

1.2.5 乐谱中添加标记(MARK)功能

MIDI解码能够识别到MIDI乐谱文件上标准的MARK标记。遇到MARK标记时支持

回调函数,而且支持两个MARK之间进行循环播放。
1.2.5.1 MARK 回调函数

image 初始化中MARK 回调功能,并置上MARK_ENABLE使能位,解码中读取到乐谱中的 MARK标记后会发生回调。回调函数u32 midi_mark_trigger(void *priv, u8 *val, u8 len)的参数 val是指向MARK名称的指针,len是名称的长度。Sdk默认配置如下:
image

1.2.5.2 两个MARK之间循环播放

1)MARK 标 记 还 可 以 实 现 两 个 MARK 之 间 循 环 解 码 功 能, 置 上 MARK_LOOP_ENABLE使能位后,遇到两个MARK后会在它们之间循环播放,如下图:
image 2)在循环播放中取消MARK_LOOP_ENABLE使能会跳出循环,同时丢失两个MARK 信息,如下图:
imageimageimage 3)MARK_A和MARK_B 中间循环时取消使能后,在解码到MARK_B之前再次置上 MARK_LOOP_ENABLE使能位后,会重复(1)的过程,遇到两个MARK后又会开始循环,取消使能到再次使能之间需要让解码器run至少2~ 3次,在主循环中调用一个 10ms延时即可,如下图:
image

1.2.6 其他回调功能

1.2.6.1 主旋律的音符回调功能

置上MELODY_ENABLE使能位,解码到音符会回调:
u32 midi_melody_trigger(void *priv, u8 key, u8 vel)函数,其参数priv是私有参数,key是音符,key为255表示是静音回调,vel是力度。

1.2.6.2 主旋律的音符结束回调功能

置上MELODY_STOP_ENABLE使能位,音符解码结束后会回调:
u32 midi_melody_stop_trigger(void *priv, u8 key)函数,其参数priv是私有参数,key是音符。
image

1.2.6.3 节拍(BEAT)的回调

置上BEAT_TRIG_ENABLE使能位,节拍来时会回调:
u32 midi_beat_trigger(void *priv, u8 val1, u8 val2)函数,其中参数priv是私有参数,val1 是一节多少拍,vel是每拍多少分音符。

1.2.6.4 小节的回调

置上TIM_DIV_ENABLE使能位,小节开始会回调函数: u32 midi_timeDiv_trigger(void *priv)函数,priv是私有参数。
image

1.2.6.5 清狗的回调

清狗回调在初始化中注册即可,只有主旋OKON副旋不发声的OKON工作模式会使用该回调,详情请看《2 .3.2OKON 的工作模式》说明。

1.2.7 外部音量功能(CMD_MIDI_SET_EX_VOL)

MIDI 解码能够实现每个通道/轨道单独调节音量的功能, 该功能需要置上 EX_VOL_ENABLE使能位。其结构体参数EX_CH_VOL_PARM包括:

1 cc_vol [CTRL_CHANNEL_NUM]

16个通道或者轨道的音量大小,默认值4096表示原始音量;修改的是通道或者轨道音量由ex_vol_use_chn决定;

2 ex_vol_use_chn

音量通道选择, 0表示cc_vol修改的是轨道音量, 1表示cc_vol修改的是通道音量;
Sdk默认配置如下:
imageimageimageimageimageimage 该功能可以在MIDI运行中动态设置,运行中想要单独关闭某一通道/轨道的声音,可以 将 该 通 道 / 轨 道 音 量 设 为 0。 调 用 函 数 music_midi_ctrl_config(), 并 将 CMD_MIDI_SET_EX_VOL命令和配置好的结构体参数传入;置上EX_CH_VOL_PARM使能位即可。详情请看《2 .1.3MIDI乐谱解码的CMD配置》说明。

1.2.8 移半音功能(CMD_MIDI_SET_SEMITONE)

MIDI解码能够实现每个通道单独偏移n个半音,该功能需要置上SEMITONE_ENABLE 使能位。其结构体参数MIDI_SEMITONE_CTRL_STRUCT如下:

1 Key_diff[CTRL_CHANNEL_NUM]

每个通道移动多少半音的配置;
SDK 中默认没有对该功能进行初始化,用户可自行添加。
该功能可以在 MIDI 运行中动态设置。 调用函数music_midi_ctrl_config(),并将 CMD_MIDI_SET_SEMITONE命令和配置好的结构体参数传入;置上SEMITONE_ENABLE 使能位即可。详情请看《2 .1.3MIDI乐谱解码的CMD配置》说明。

1.2.9 更改节奏和衰减(CMD_MIDI_CTRL_TEMPO)

MIDI解码能够强制改变节奏、每个通道的衰减程度以及mute 阈值水平,其结构体参数 MIDI_PROG_CTRL_STRUCT如下:

1 tempo_val

节奏速度,默认值为 1042;数值越大,节奏越慢;

2 decay_val [CTRL_CHANNEL_NUM]

imageimageimage 衰减参数,低 11bit有效,每个通道单独配置;数值越小,余音衰减越快;

3 mute_threshold

mute 阈值,数值越高,主旋的静音音符回调会越多,需要置上MELODY_ENABLE使能位。
Sdk 中的默认配置如下:
imageimage 该功能可以在 MIDI 运行中动态设置。 调用函数music_midi_ctrl_config(),并将 CMD_MIDI_CTRL_TEMPO命令和配置好的结构体参数传入即可。详情请看《2 .1.3MIDI乐谱解码的CMD配置》说明。

1.2. 10 小节回退功能(CMD_MIDI_SEEK_BACK_N)

MIDI运行中可以实现回退到之前的小节,需要在初始化中置上SAVE_DIV_ENBALE 使能位。该功能不支持连续回退小节,例如回退了8个小节后,需要再次经过8个小节才能进行下一次回退,否则可能会导致小节混乱。其结构体参数MIDI_SEEK_BACK_STRUCT 如下:

1 seek_back_n

回退的小节数,范围为 1~ 8,即最大可回退8个小节;值为 1时回退到当前小节起始位置;
该功能只能在MIDI运行时才能实现。初始化中置上SAVE_DIV_ENBALE使能位,调用函数music_midi_ctrl_config(),并将CMD_MIDI_SEEK_BACK_N命令和配置好的结构体参数传入即可。详情请看《2 .1.3MIDI乐谱解码的CMD配置》说明。
imageimageimage

1.2. 11 MIDI解码函数接口

1.2.11.1 函数void midi_decode_init(void)

该函数实现查找midi解码的音色库并记录音色库信息,在系统初始化中调用;

1.2.11.2 函数int music_midi_ctrl_config(music_play_obj *hdl, u32 cmd, void *parm)

该函数实现配置midi解码的功能参数,cmd 的具体介绍请看第2节MIDI乐谱解码介绍,其中参数:

  1. hdl:midi解码句柄;
  2. cmd:命令,可用命令以及相应的参数结构体如下;
    1 CMD_MIDI_SEEK_BACK_N,参数结构体MIDI_SEEK_BACK_STRUCT;
    2 CMD_MIDI_SET_CHN_PROG,参数结构体MIDI_PROG_CTRL_STRUCT;
    3 CMD_MIDI_CTRL_TEMPO,参数结构体MIDI_PLAY_CTRL_TEMPO;
    4 CMD_MIDI_GOON,无参数,传NULL 即可;
    5 CMD_MIDI_CTRL_MODE,参数结构体MIDI_PLAY_CTRL_MODE;
    6 CMD_MIDI_SET_SWITCH,参数为所有使能位;
    7 CMD_MIDI_SET_EX_VOL,参数结构体EX_CH_VOL_PARM;
    8 CMD_INIT_CONFIG,参数结构体MIDI_INIT_STRUCT;
    9 CMD_INIT_CONFIGS,参数结构体MIDI_CONFIG_PARM;
    10 CMD_MIDI_OKON_MODE,参数结构体MIDI_OKON_MODE;
    11 CMD_MIDI_SET_SEMITONE,结构体MIDI_SEMITONE_CTRL_STRUCT
  3. parm:命令对应的参数结构体,请看cmd参数说明;
  4. 返回值:成功 0;
    失败 其他值;
    image
1.2.11.3 函数void midi_okon_mode_set(music_play_obj *music_obj, u8 mode)

该函数实现配置midi解码的模式,其中参数:

  1. music_obj:midi解码句柄;
  2. mode:midi解码模式,可用mode如下:
    1 CMD_MIDI_CTRL_MODE_0,正常解码模式;
    2 CMD_MIDI_CTRL_MODE_ 1, one key one note模式;
    3 CMD_MIDI_CTRL_MODE_2,只推消息不出声模式;
    4 CMD_MIDI_CTRL_MODE_W2S,外部音源模式;
    imageimageimageimageimage
1.2.11.4 函数void midi_okon_goon(music_play_obj *music_obj)

该函数实现midi解码okon模式启动下一个音符,其中参数:

1. music_obj:midi解码句柄;
1.2.11.5 函数void midi_init_info(MIDI_INIT_STRUCT *init_info)

该函数实现midi解码配置初始化,会给midi解码器主动调用,其中参数:

1. init_info:midi解码初始化配置结构体,具体请参照代码中的配置信息;

imageimage

1.3 MIDI琴

MIDI琴功能支持通过函数驱动midi解码。该应用依赖我司自定义的mid音色库,用户可通过我司mid工具进行转换,详情请看《JLmidi工具使用说明》。 本节将介绍midi琴初始化过程和相关的接口函数。

1.3. 1 MIDI琴初始化

1.3.1.1 初始化过程
  1. 在系统初始化时会调用void midi_ctrl_decode_init(void)函数记录MIDI音色库文件的信息;midi琴MAX_CTR_PLAYER_CNT 同时发声的key数默认为 15。
  2. 调用decoder_init(void)初始化解码器;
  3. 调用decoder_io(void *pfile, u32 dec_ctl, dp_buff *dbuff, u8 loop)进行解码,该函数 dec_ctl参数传入BIT_MIDI_CTRL;
  4. 配置各通道乐器,弹奏解码。
1.3.1.2 注意要点
  1. 同时发声的最大通道数MAX_PLAYER_CNT可以在midi_ctrl_api.c 中根据需要进行设置,范围是 1~ 32,该值的大小会影响到解码buf的大小,sdk默认配置如下:
    image
2) SDK 中MIDI琴中的通道号chn符合mid标准,一共有16个通道(0~ 15)。

其中0~ 8、10~ 15号通道可以使用0~ 127号乐器,9号通道用于 128号以上的打击乐器。如选择00-01高亮大钢琴,那么通道号可以选择0~ 8或10~ 15,乐器号写0 8+1 = 1;
如选择 16-00standard,乐器号为 16
8+0= 128,大于127,所以通道号只能选9,乐器号写: 16*8+0-128 = 0;
imageimage

1.3.2 MIDI琴音符回调功能

midi琴运行时,弹奏音符后可回调响应函数;该功能与midi解码的主旋律音符回调一致; 区别在于midi 琴中的回调配置只能在运行中通过动态配置的方式使能,可参考《l.2. l.4MIDI在运行中动态配置功能示例》 以及SDK 中的说明,配置顺序如下:
l)CMD_MIDI_MELODY_TRIGGER配置音符开始的回调;
2)CMD_MIDI_STOP_MELODY_TRIGGER配置音符结束的回调;
3) CMD_MIDI_SET_SWITCH 配置回调使能, switch_enable 使能参数需要置上 MELODY_ENABLE和MELODY_STOP_ENABLE使能位;

1.3.3 MIDI琴函数接口

1.3.3.1 函数void midi_ctrl_decode_init(void)

该函数实现查找midi琴的音色库并记录音色库信息,在系统初始化中调用;

1.3.3.2 函数int music_midi_ctrl_set_prog(music_play_obj *hdl, u8 prog, u8 chn)

该函数实现查找设置midi琴的乐器,0其中参数:
l. hdl:midi琴解码句柄;
2. prog:乐器号,与midi音色库制作工具中的乐器号一致。详情请看《l.3. l.2注意事项》说明;
3. chn:发声通道,该值范围在0~ l5;
4. 返回值:成功 0;
失败 其他值;

1.3.3.3 函数int music_midi_ctrl_pitch_bend(music_play_obj *hdl, u16 pitch_val, u8 chn)

该函数实现配置midi琴弯音轮参数,其中参数:
l. hdl:midi琴解码句柄;
image 2. pitch_val:弯音值,默认值是256,可根据该值调整;
3. chn:发声通道,该值范围在0~ l5;
4. 返回值:成功 0;
失败 其他值;

1.3.3.4 函数int music_midi_ctrl_config(music_play_obj *hdl, u32 cmd, void *parm)

image 该函数实现配置midi琴的其他功能,其功能参数和midi解码中的一致,其中参数:
l. hdl:midi琴解码句柄;
2. cmd:命令,可用命令如下;
1 CMD_MIDI_CTRL_TEMPO;
2 CMD_MIDI_SET_EX_VOL;
3 CMD_INIT_CONFIGS;
4 CMD_MIDI_SET_SEMITONE;
5 CMD_MIDI_SET_SWITCH;
3. parm:命令参数,可查看midi解码中的介绍;
4. 返回值:成功 0;
失败 其他值;
imageimageimageimageimage

1.3.3.5 函数int music_midi_ctrl_note_on(music_play_obj *hdl, u8 nkey, u8 nvel, u8 chn)

该函数实现弹奏指定通道的音符,其中参数:
l. hdl:midi琴解码句柄;
2. nkey:音符,与midi音色库制作工具中的音符号一致,范围在0~ l27;
3. nvel:琴键按下力度,范围在0~ l27;部分乐器(如钢琴)有效,不同力度会使按下后的余音长短不同;
4. chn:发声通道,该值范围在0~ l5;
5. 返回值:成功 0;
失败 其他值;
image

1.3.3.6 函数int music_midi_ctrl_note_off(music_play_obj *hdl, u8 nkey, u8 chn)

image 该函数实现查找设置midi琴的乐器。对于声音不会衰弱的乐器(如笛子),调用Note_on 函数后需要调用该函数以结束音符,对于声音会衰弱的乐器(如钢琴)可不用。其中参数:

  1. hdl:midi琴解码句柄;
  2. nkey:音符,与midi音色库制作工具中的音符号一致,范围在0~ 127;
  3. chn:发声通道,该值范围在0~ 15;
  4. 返回值:成功 0;
失败 其他值;
1.3.3.7 函数 int music_midi_ctrl_vel_vibrate(music_play_obj *hdl, u8 nkey, u8 vel_step, u8
vel_rate, u8 chn)

该函数实现配置音符的颤音效果,其中参数:

  1. hdl:midi琴解码句柄;
  2. nkey:音符,与midi音色库制作工具中的音符号一致,范围在0~ 127;
  3. vel_step:抖动步长,该值范围在0~7;
  4. vel_rate:抖动幅度,该值范围在0~ 15;
  5. 返回值:成功 0;
    失败 其他值;
1.3.3.8 函数int midi_ctrl_play_end_deal(music_play_obj *hdl)

该函数实现停止midi琴解码,在所有音符停止后会被调用,其中参数:

  1. hdl:midi琴解码句柄;
  2. 返回值:无;
    imageimage
1.3.3.9 函数void midi_ctrl_callback_init(music_play_obj *hdl, u32(*melody_callback)(void

*, u8, u8), u32(*melody_stop_callback)(void *, u8))
该函数实现配置音符开始与结束的回调函数,其中参数:

  1. hdl:midi琴解码句柄;
  2. melody_callback:音符开始回调函数,回调函数的原型参照《1.2.6.1主旋律的音符回调功能》 中的说明;
  3. melody_stop_callback:音符结束回调函数,回调函数的原型参照《1.2.6.2主旋律的音符结束回调功能》 中的说明;
  4. 返回值:无;
    image
MIDI工具

http://www.zh-jieli.com/

第二章 MIDI工具

2. 1 MIDI工具主界面

2.1.1 MIDI版本说明

image 带有“压缩编辑”选项和“导入SF2音色库”选项的为新版工具(JLmidi_new_ 0706),
只支持AD14和AD15在SDK版本大于等于V1 .3.0的SDK上运行,旧版本工具(JLmidi_ 60)
支持所有版本SDK。
新版和旧版工具均可在gitee上下载。

2.1.2 MIDI工具简介

MIDI文件是一种事件文件,不含音源,它记录的是一系列的事件。
MIDI文件解码,是从MIDI音源库中查找(或者根据一定的算法计算)得到事件对应的音频,因此对于不同的音源库而言,相同的MIDI文件解码出来的声音不同。
我司MIDI音源文件不会记录每个按键的声音,解码时再依次查找叠加,这种做法会导致音源库很大。我司的做法是:假设0号乐器的第n 到m号按键是可以通过N号按键计算的(m<=(N+12)),那么库中只需要记录N号按键。 比方说,0-20号key都用 10号key 的声音根据频率关系去计算,21-47号key都用48号key去计算…那么只需记下0号乐器的第 10、48…号按键。
本工具的作用:可以查看,某个乐器某个按键的音源及其信息。也可以进行编辑修改成自己想要的声音。
点击“pWM.exe”,打开midi工具。
imageimage

2.1.3 主界面-乐器种类

图中的红色框为乐器大类,共32项;蓝色框为乐器细分种类,共8项。对应的乐器号计算方法:假设乐器种类为0-31,乐器细分为0-7。 乐器号为(乐器种类*8+乐器细分)。
在“打击乐器”中,有很多的乐器是没有的,用户可以自主添加乐器声。
鼠标点击“乐器细分种类”后,可点击按键试听音色。

2.1.4 主界面-选中乐器

在midi文件转换的时候,工具会自动把文件中所使用的乐器加载到库中。 同时,用户也可以手动添加一些乐器(用于midi琴等),在midi转换的时候把这些库也加载到库中。选择乐器时会提示选择乐器的哪些key,未选择的key在SDK弹奏的结果不可预测。
SDK程序中midi琴有 16个通道,其中0~ 8和9~ 15号通道可以使用0-127号乐器,9 号通道只能使用 128-255号乐器。
如选择00-01高亮大钢琴,那么通道号可以选择0~ 8或10~ 15,乐器号写0 8+1 = 1;
如选择 16-00 standard,乐器号为 16
8+0= 128,大于 127,所以通道号只能选9,乐器号写:16*8+0-128 = 0;
image

2.2 MIDI转换

image midi转换过程包括选择输出目录、转换和导出库三个步骤。
原始的midi文件需要通过我司的MIDI转换工具“转换”后才能正常使用; “导出库”会将midi文件中用到的乐器制作成音色库。
若是只用到midi琴的应用,在主界面选择自己所需要的乐器后,直接点击“导出库”选项即可生成相应的音色库。

2.2.1 选择需要转换的MIDI文件

在MIDI工具主界面中点击“MID转换”弹出MIDI文件转换工具,点击“添加文件”按钮,在弹出的文件选择框中选中要转换的一个或多个midi文件。
imageimage

2.2.2 输出目录

点击 “输出目录”,选择转换后midi文件存放的文件夹。 默认路径为 “工具根目录\OutMID”文件夹中。
image

2.2.3 转换

点击 “开始转换”,即可在设置的输出目录下生成我司自定义的mid文件,右下角显示转换进度。此时按键灰掉不能使用,等待转换完成才恢复。
imageimage

2.2.4 导出库

转换完成后,点击“导出库”,工具根据“输出目录”中的文件生成一个我司自定义的 mid音色库文件,保存在“输出目录”的 “MID_RES”文件夹中,默认为路径为“工具根目录\OutMID\MID_RES”文件夹中。
如果在主界面中有选中乐器, “导出库”会将midi文件需要的乐器和主界面选中的乐
imageimage 器一起打包制作成音色库文件。若是只用到midi琴的应用,在主界面选择自己所需要的乐
器后,直接点击“导出库”选项即可生成相应的音色库。
注:新的SDK支持新版工具生成的“.mda”后缀音色库,且兼容旧版工具生成的“.mid”后缀音色库; 旧的SDK 只支持旧版工具生成的 “.mid”后缀音色库。可通过SDK 中midi 初始化的代码判断是否支持新版工具制作的音色库。
imageimage

2.3 MIDI音色库压缩

MIDI一个乐器的相邻的一连串音符(key),并非都是单独的音频文件,可能是由同一个音源文件经过音频算法偏移得到的。
MIDI音色库压缩就是压缩这类音源文件,因此压缩一个音源文件会影响到一连串音符(key)的音质,甚至会影响到同一个大类下的其他乐器的一连串音符的音质。

2.3.1 压缩流程

  1. 鼠标点击蓝色框乐器细分种类和琴键后,可以通过点击右边“编辑压缩”选项,选择是否压缩对应的音色文件。
    image
  2. 选中相应的乐器,勾选并点击“编辑压缩”选项,会打开如下编辑界面,选择需要的压缩方式并保存;如果全部音源都是不压缩的,建议不要勾选该选项,因为压缩会带来额外开销。
    image
  3. 编辑界面会显示所选乐器的key 的音源文件号,以及该音源文件会影响到的所有乐器及该乐器的key范围。改了压缩选项后,返回主界面弹奏对应的琴键,即可试听压缩后的效果。
    image
  4. 进入编辑界面算好压缩方式后,点击“压缩乐器”,会将所选乐器的所有音符对应的音源文件,全部按照所选压缩方式进行压缩。
    imageimage
5) 将该乐器压缩后的音色库导出,导出后可以查看更多乐器的压缩信息。

image

2.3.2 压缩信息查询

导出库后,midi工具根目录下会更新midiinfo.html、progaudio.html、progaudio_all.html、 proginfo.html四个文件,这些文件能显示更加详细的音色和压缩信息。

1) midiinfo.html

该文件可以查看转换的midi乐谱文件用到哪些乐器的哪些key,可根据这里的信息再去压缩对应的音源文件。
imageimage

2) progaudio.html

该文件可以查看导出的音色库中的音源文件,是否哪种压缩算法,音源文件影响的乐器的key范围以及压缩前后的大小。其中:
● 工具默认的乐器所依赖的音源从0开始编号
● 用户自行导入的SF2音色库从32768开始编号
● 用户使用”WAV编辑”生成的音色从65536开始编号
image

3) progaudio_all.html

image 该文件与progaudio.html类似,区别在可以查看所有的音源文件,以及音源文件影响的乐器的key范围。

4) proginfo.html

该文件可以查看导出库中包含的乐器信息,包括key 映射的范围。
image

2.3.3 还原压缩配置内容

配置完压缩后,若需要重置压缩选项,可以删除工具根目录下的“config.txt”文件,再重启软件;
image

2.4 MIDI导入SF2音色库

midi工具除了可以使用我司默认的音色库外,还可以导入SF2音色库。

2.4.1 添加或删除SF2文件

image 主界面中点击“导入SF2音色库”选项,点击“添加SF2文件”选择SF2文件;单个 SF2文件大小不可超过65535字节,否则会报错;
导入后点击“替换到音色库”。 “替换到音色库”会删掉之前替换生成的bin文件,重新生成新的bin文件;如果列表中保留了上次添加的SF2记录,但SF2源文件已不存在了,
则需要选择“追加替换到音色库”。 替换完成后即可在主界面试听效果。
删除SF2库之后,需要重启软件才会生效。
imageimage

2.4.2 SF2音色库信息查询

SF2音色替换完成并将MIDI音色库导出后,可以在工具根目录下查看progaudio.html 文件;所替换乐器的音源号大于32768小于65535 即表示导出的音色库中 SF2音色替换成功。
image

2.4.3 还原SF2音色库内容

导入SF2音色库后,若需要重置SF2音色库选项,可以删除工具根目录GP文件夹下的“sf2_config.bin”文件,再重启软件;
image

2.5 MIDI WAV编辑

2.5.1 WAV编辑界面简介

image 在主界面中点击“WAV编辑”进入MIDI音源编辑界面,编辑音源时记得要把乐器跟 key都选好。
● 文件界面:当前选中的音频文件,可以点击“打开文件”添加自己的文件
● 波形界面:选中文件的wav波形显示与编辑
● 正常/松手衰减:音频的衰减情况
● 包络编辑界面:勾选左侧“包络”选项,可编辑当前文件wav波形的包络效果
imageimageimage

2.5.2 波形编辑

在波形图界面中点击右键弹出波形编辑框,点击“选择->边界标记”,再点击“选择->区间选择”选中一段区域,那么就可以对这一段音频进行复制\剪切之类的编辑了。
选择右击菜单的最后一项“当前WAV文件另存为…”,可以将编辑结果另存为自己的 wav文件。 否则编辑无效,就算是打开的默认音色的wav文件,也是生成的一个临时文件而已。如果不另存,下一次编辑也是会被改写的。
另外,提示打不开tmp.wav,可能是库里面不包含该按键的声音。也可能没有选择key,导致没有文件生成。 具体检查方法,可以看下“.\GP”中tmp.wav 的Wav文件存在,但是
长度为0,则该声音不存在。
imageimage

2.5.3 参数配置

在“WAV编辑”界面中点击“参数”进入参数编辑界面。如下图,图中是一个音色文件的单元信息,也就是该乐器的key码对应wav波形。音量、上升速度、正常衰减、松手衰减、衰减限制都是0-1,但是工具中, 以65535量化。所以,65535对应1,其中参数:
image ● Key码:
当前编辑的为乐器的 115号按键
● KEY范围:
当前乐器的 115-126号按键通过映射而来,映射范围在0~ 127之间,如果设置了非
法值,则本次编辑无效
● 音量:
默认音量的大小。可以调节该值,改变该乐器的默认音量
● 上升速度:
改变的是一个按键发声的时候,它的淡入速度
● 正常衰减与松手衰减:
该按键音的衰减速度。一般松手之后,声音会更快地衰减。右图曲线窗显示的只有前面32ms 的衰减形状

● 衰减限制:

按键长按时,声音会hold住的一个阈值。 只有在松手后,声音才会低于该阈值继续衰减

● 循环起始位置:

只对应循环有效的音源信息文件有效,即后面的小框是勾起的。简单的来说,如果不是循环的,那先忽略音量,就是一个音源文件有多长,那发声最长也就那样了。一个声音发完了就是发完了。但是,如果一个循环的音源文件,就是一个无穷长的文件,从循环位置开始一直到波形文件最后的这段波形视为一个周期,这个周期一直在现有的波形文件后面做周期性扩展。所以编辑的时候请注意,波形前后扩展时的过度,例如波形为[ 1,2,3,4,5,6,7], 3为循环起始,那波形实则为[1,2,3,4,5,6,7,3,4,5,6,7,3,4...]。这时候,请保证,周期扩展连接处,即7,3之间。 [1,2,3,4,5,6,7,3,4,5,6,7,3,4...]这个才是最后的波形,如果,这个声音在连接处不平滑,有啪一声,那就会一直啪啪响的了。例如波形是
image [ 1,2,3,4,5,6,5,4,3,2],则为[1,2,3,4,5,6,5,4,3,2, 3,4,5,6,5,4,3,2, 3,4,…],要保证这个声音听起来好听。

● 包络曲线:

选择是否需要编辑包络效果,与主界面“包络”勾选项一致。
image 另外需要确认的是,该窗口最上面的wav文件路径。请选择自己之前保存的wav文件路径,不要用临时路径。就是默认打开的音色编辑的wav。 该wav文件,是从库里剔出来生成的临时文件而已。下次是会被重写的。每次修改完保存的都只是路径而已。如果该wav 无效了,或者被修改了。那都是按最后wav文件的内容进行库编辑的。
imageimage

2.5.4 包络编辑

image 勾选主界面左侧的“包络”选项,或者在参数配置中勾选“包络曲线”,即可在主界面编辑wav音频的包络效果。
包络界面说明:

  1. 纵轴代表幅值,范围为0~ 100%;
  2. 横轴代表时间,默认范围为0~ 1500ms;可修改默认的 1500ms 时间长度,超过wav 文件时间范围的话,表示会保持包络最后一点的能力;
    包络编辑方法:
  3. 双击增加包络点;
  4. 长按可以拖动包络点;
  5. 鼠标挪到包络点位置,点击右键即可删除节点;
    注意:使用包络模式,参数配置中的上升速度跟松手衰减这2个值依旧有效!
    image

2.5.5 波形保存

修改完之后,点击确定。回到上级窗口,这时候保存按键亮起。如果点击保存,所做的修改就会被写入一个.bin文件。否则无效。在退出的时候,会调用一个批处理去扫描.bin文件,生成最后需要的库。
imageimage

2.5.6 WAV编辑信息查询

image WAV编辑完成并将MIDI音色库导出后,可以在工具根目录下查看progaudio.html文件;所替换乐器的音源号大于65535 即表示导出的音色库中WAV编辑成功替换了原始音源。
image

2.5.7 还原WAV编辑内容

WAV编辑完成后,若需要重置WAV编辑内容,可以删除工具根目录GP文件夹下的“config_out.bin”文件,再重启软件。
image

2.6 按键与乐器表

2.6.1 按键表

下表列出的是与音符相对应的命令标记。八度音阶|| 音符号

image
C
C#image
D
D#image
E
image
F
F#image
G
G#image
A
A#image
B
image
0
01234567891011
image
1
121314151617181920212223
image
2
242526272829303132333435
image
3
363738394041424344454647
image
4
484950515253545556575859
image
5
606162636465666768697071
image
6
727374757677787980818283
image
7
848586878889909192939495
image
8
96979899100101102103104105106107
image
9
108109110111112113114115116117118119
10120121122123124125126127

image

2.6.2 乐器表

乐器表可参考SDK 中的app\src\app_mg\midi\midi_prog.h文件。
image