杰理AD1x-45678_MIDI应用说明文档
📎 原始文档:https://www.kdocs.cn/l/csuQ0zcVQXK5 杰理AD1xN-45678 MIDI
应用说明文档
珠海市杰理科技股份有限公司
Zhuhai Jieli Technologyco.,LTD
版权所有,未经许可,禁止外传
2023年8月16 日
修改日志

| 1.03 2023 / 8 / 16 添加midi解码音符结束回调所有音符说明 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| . | ||||||||||
| . | . | . | ||||||||
| : | e | no e o c r a | e | ; us c | a | o | ; e * | , u | vo c n | ; |
| . | 一 | |||||||||
| : |
目录
第一章 MIDI应用.................................................................................................................................. 6
- 1 MIDI功能介绍...............................................................................................................................6
.................................................................................................................................. 6
.................................................................................................. 6
................................................................................................................................7
............................................................................... 7
.....................................................................................................................7
......................................................................................................................................8
............................................................................................................. 9
...................................................................................................10
............................................................................ 11
.................................................................................................... 12
.............................................................................................................................. 12
..................................................................... 12
........................................................................................................................................ 14
.................................................................................................................................... 14
...................................................................................................................... 14
..................................................... 15
............................................................................................... 16
................................................................................................................................ 16
.............................................................................................................. 16
.........................................................................................................................17
.................................................................................................................... 17
............................................................................................................ 17
...........................................................................................................................18
........................................................................................................................................ 18
........................................................................................................................................ 18
.................................................................... 18
................................................................... 19
.............................................................. 19
...............................................................20
..............................................................................................................21
... v。 _ ec。 e n v。 ................................................................................................21
1.2.11.2 函数int music_midi ctrl c。nfig(music_play。bj *hdl, u32 cmd, v。id *parm) ......................... 21
1.2.11.3 函数v。id midi_。k。n_m。de_ set(music_play_。bj *music_。bj, u8 m。de) ................................... 22
1.2.11.4 函数v。id midi_。k。n_ g。。n(music_play_。bj *music_。bj) .......................................................... 22
1.2.11.5 函数v。id midi_ init_ inf。(MIDI_ INIT_ STRUCT *init_ inf。) .......................................................22
1.3 MIDI琴.........................................................................................................................................23
1.3.1 MIDI琴初始化......................................................................................................................23
1.3.1. 1 初始化过程.....................................................................................................................................23
1.3.1.2 注意要点.........................................................................................................................................23
1.3.2 MIDI琴音符回调功能..........................................................................................................24
1.3.3 MIDI琴函数接口..................................................................................................................24
1.3.3. 1 函数v。id midi_ ctrl_ dec。de_ init(v。id) .......................................................................................... 24
1.3.3.2 函数int music_midi_ ctrl_ set_pr。g(music_play_。bj *hdl, u8 pr。g, u8 chn) ................................. 24
1.3.3.3 函数int music_midi_ ctrl_pitch_bend(music_play_。bj *hdl, u16 pitch_val, u8 chn) ................... 24
... 函数 n us c__ c r _ c。n ( us c_ a 。 * , u c , v。 * ar ........................... 25
... n us c_ c r n。e。n us c_ a 。 * , u n e , u nve , u c n ....................25
. . . n us c _ c r n。e。 us c_ a 。 * , u n e , u c n, u eca _ e ..... 26
... n us c_ c r _ve v ra e us c a _。 * , u n e , u ve _ s e , u ve ra e, u8
c n ...............................................................................................................................................................26
... n _ c r _ a _ en _ ea us c a 。 * .............................................................. 26
... v。 _ c r _ ca ac _ n us c a _。 * , u * e。 _ ca ac (v。 *, u , u ),
u * e。 _s。 ca ac v。 *, u ................................................................................................... 27
... v。 e __ c r _ a _ e us c a _。 * , u c n .............................................. 27
....................................................................................................................................28
..............................................................................................................................28
..............................................................................................................................28
................................................................................................................................ 30
........................................................................................................................30
.....................................................................................................................30
.....................................................................................................................30
.. - ............................................................................................................... 31
.. - ............................................................................................................... 31
....................................................................................................................................32
................................................................................................32
...............................................................................................................................33
.......................................................................................................................................33
...................................................................................................................................34
........................................................................................................................35
...............................................................................................................................35
.......................................................................................................................38
...............................................................................................................40
............................................................................................................... 40
.......................................................................................................... 40
........................................................................................................... 41
2.4.3 还原SF2 音色库内容........................................................................................................ 42
2.5 MIDI WAV编辑........................................................................................................................ 43
2.5. 1 WAV编辑界面简介............................................................................................................43
2.5.2 波形编辑.............................................................................................................................44
2.5.3 参数配置.............................................................................................................................45
2.5.4 包络编辑.............................................................................................................................47
2.5.5 波形保存.............................................................................................................................47
2.5.6 WAV编辑信息查询............................................................................................................48
2.5.7 还原WAV编辑内容...........................................................................................................48
2.6 按键与乐器表.............................................................................................................................49
2.6. 1 按键表.................................................................................................................................49
2.6.2 乐器表.................................................................................................................................49
MIDI应用
http://www.zh-jieli.com/
第一章 MIDI应用
1. 1 MIDI功能介绍
1. 1. 1 MIDI简介
MIDI全称是乐器数字接口(Musical Instrument Digital Interface),是20 世纪80 年代初为解决电声乐器之间的通信问题而提出的,编曲界最广泛的音乐标准格式。
MIDI用音符的数字控制信号来记录音乐。 一首完整的MIDI音乐只有几十KB大,而能包含数十条音乐轨道。其传输的不是声音信号,而是音符、控制参数等指令,它指示MIDI 设备要做什么,怎么做,如演奏哪个音符、 多大音量等。
SH54 / 55支持MIDI乐谱解码以及MIDI琴两种应用。其中:
MIDI乐谱解码有4种方式:
1 正常解码模式
2 OKON(ONE KEY ONE NOTE)模式
3 只推消息不出声模式
4 外部音源模式
MIDI琴有 1种方式:
1 琴键解码模式
1. 1.2 SDK 中midi模式的文件依赖
SDK 中midi乐谱解码模式需要midi乐谱, 以及midi音色库,其中midi乐谱通过打包工具制作成dir_midi文件,midi音色库通过打包工具制作成midi_cfg文件。
SDK 中midi琴模式需要midi音色库,midi音色库通过打包工具制作成midi_ctrl_prog 文件。
以上打包文件名可以自定义,在SDK中midi初始化代码中修改相应名称至可识别即可。 midi音色库文件可共用,详情想看第二章midi工具使用介绍。




1.2 MIDI乐谱解码
MIDI乐谱解码的过程为,初始化后,打开MIDI乐谱文件获取到音符,再访问音色库找到对应的乐器音色进行解码,不断获取音符并重复该过程直到乐谱结束。本节讲介绍MIDI 解码的初始化、MIDI解码的功能配置以及注意点。
1.2. 1 MIDI乐谱解码初始化与CMD配置介绍
1.2.1.1 MIDI乐谱解码运行步骤
- 在系统初始化时会调用midi_decode_init(void)函数记录MIDI音色库文件的信息; midi乐谱解码MAX_DEC_PLAYER_CNT 同时发声的key数默认为8。
- 调用decoder_init(void)初始化解码器;
- 打开midi乐谱文件并调用函数decoder_io(void *pfile, u32 dec_ctl, dp_buff *dbuff, u8 loop)进行解码,该函数dec_ctl参数传入BIT_MIDI;
- midi解码初始化中会调用函数void midi_decode_api(void *p_file, void **ppdec, void *p_dp_buf),初始化MIDI解码信息, 比其他解码格式多了配置参数这一步!
- 配置参数会调用函数midi_init_info(MIDI_INIT_STRUCT *init_info),进行MIDI功能的初始化,包括主旋律选择、外部音量设置、所有回调函数的注册等,最后使能对应的控制使能位。
- 通过CMD_INIT_CONFIG命令将midi初始化的信息传入解码器中,到此midi功能初始化完成。
- 解码器启动,dac开始发声;

1.2.1.2 初始化的配置
MIDI解码功能的初始化在函数void midi_init_info(MIDI_INIT_STRUCT *init_info)中进行。该函数中会配置MIDI_INIT_STRUCT结构体内包含的成员。配置功能结构体后,还需要配置功能对应的控制使能参数,sdk 中默认的MIDI功能配置如图所示:
, _ _ _ _ 构
, :
1.2.1.3 MIDI乐谱解码的CMD配置
CMD命令配置说明
MIDI乐谱解码可以通过CMD实时配置功能。 首先配置CMD对应的功能结构体,再调用函数int music_midi_ctrl_config(music_play_obj *hdl, u32 cmd, void *parm),函数参数分别传入midi解码句柄、 CMD命令以及配置好的功能结构体指针即可实现,MIDI 的CMD
。
, 位
。 一 u , 一 一 , 会
。
MIDI功能使能的方式有两种,一种是在MIDI初始化中配置MIDI_INIT_STRUCT结构体的switch_info成员,并调用CMD_INIT_CONFIG命令配置初始化后生效。
另一种时通过调用上一节函数music_midi_ctrl_config(),分别传入MIDI解码句柄、 CMD_MIDI_SET_SWITCH命令以及配置好的使能参数。注意,该命令传入的使能参数是所
有功能的使能位,单独操作某一使能位时不能影响到其他bit,否则会影响到其他功能。可以沿用MIDI初始化的全局变量init_info->switch_info来管理使能位。
. . .
, ;
,
,
。
, us c ec con
;
, 。
n n o- s c n o , ,
, 。
1.2.2 解码方式(CMD_MIDI_CTRL_MODE)
MIDI解码方式共有4种,分别是:
1 正常解码模式
该模式即正常解码MIDI乐谱文件。
2 OKON(ONE KEY ONE NOTE)模式
, 一 一 。
。
, 。
:
n n o- o e n o , ,s
。

初始化配置之后调用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)》说明。
. .
. . .
o on o e se , 。
。
. . .
, :
;
一 ;
;
:
其中,只有主旋律OKON副旋律不发声的工作模式,在解码过程中有可能长时间占用 CPU,所以需要在wdt_clear_trigger()函数中调用清狗函数,否则有可能会导致系统复位!
OKON按键按下后可以回调的音符,该功能需要置上MELODY_ENABLE使能位。 回调的方式共有两种,分别是:
一
:
n n o- o on n o , ,
s 。
1.2.3.3 设置主旋律
OKON 模式需要确定主旋律来播放音符。 初始化时, 系统会判断 const 变量 MAINTRACK_USE_CHN 的值,值为0通过轨道(track)号选择主旋律,值为 1通过通道(channal)号选择主旋律。修改init_info->mainTrack_info.chn的值可以在初始化中确定主旋律,
有效范围是0~ 15。若让系统自动选择第一个音符所在轨道或通道为主旋律,则选择 17。Sdk:
, rac , a n rac _ n o.c n 道
一 ;
,
c anna
a n rac n o.c n
,一
, a n rac n o.c n
,
一 , 一
件;;例
、 , , rac ,
a n rac _ n o.c n , ; c anna ,
a n rac n o.c n , 一 。
. . .
, _ _ E
。 一 一 , , 个
一 一 ; , 一 , 其
。
1.2.3.5 中途切换OKON模式
中途切换MIDI模式可以调用函数midi_okon_mode_set(),并将mode设置为OKON模式(CMD_MIDI_CTRL_MODE_ 1)。 OKON模式下需要调用midi_okon_goon()函数启动下一个音符。sdk 中应用示如图所示:
. .
,
_ _
。
ro
,
re ace o e
,
;
ex vo
,
:
,
:
;
,
ex vo
;
,
。
;
该功能可以在 MIDI 运行中动态设置,调用函数 music_midi_ctrl_config(),并将 CMD_MIDI_SET_CHN_PROG命令和配置好的结构体参数传入;置上SET_PROG_ENABLE 使能位即可。详情请看《2 . 1.3MIDI乐谱解码的CMD配置》说明。
1.2.5 乐谱中添加标记(MARK)功能
MIDI解码能够识别到MIDI乐谱文件上标准的MARK标记。遇到MARK标记时支持回调函数,而且支持两个MARK之间进行循环播放。
1.2.5.1 MARK 回调函数
, ,
。 u _ ar _ r er vo * r v, u *va , u en
va , en 。 :
. . .
,
_ _ , , :
2)在循环播放中取消MARK_LOOP_ENABLE使能会跳出循环,同时丢失两个MARK 信息,如下图:
3)MARK_A和MARK_B 中间循环时取消使能后,在解码到MARK_B之前再次置上
,
,
run:
,
,
一
,
s
. .
. . .
u
, e
e o r er vo
*
,
, :
r v, u e , u ve , r v , e
ve 。
. . .
置上MELODY_STOP_ENABLE使能位,音符解码结束后会回调:
初始化配置MIDI_INIT_STRUCT结构体中moledy_stop_info 回调时,需要配置回调模式main_chn_enable,该配置仅在midi解码模式下生效,midi琴模式无效,其中:
● main_chn_enable = 1, midi解码音符结束仅回调主旋律的音符;
● main_chn_enable = 0, midi解码音符结束会回调所有音符;
u32 midi_melody_stop_trigger(void *priv, u8 key, u8 chn)函数,其参数priv是私有参数, key是音符,chn是音符通道。
1.2.6.3 节拍(BEAT)的回调
置上BEAT_TRIG_ENABLE使能位,节拍来时会回调:
u32 midi_beat_trigger(void *priv, u8 val1, u8 val2)函数,其中参数priv是私有参数,val1
一 ,ve 。
. . .
_ _
u e v r
er vo
*
, :
r v , r v
。
. . .
,
, . . 。
. .
_ _
。
cc vo
,
,
:
,
量,1<<12得到4096,cc_vol值为4096则不修改音量;如增到到音源音量的2倍,则2<<12得到8192, 以此类推。外部音量不建议放大,会有破音的可能;
ex_vol_use_chn参数决定修改的是通道,或者轨道音量;
2 ex_vol_use_chn
音量通道选择,0表示cc_vol修改的是轨道音量, 1表示cc_vol修改的是通道音量;
Sdk默认配置如下:
一
, ,
。 us c c r con ,_ _ _ _ ; _ _ _
。 . . 。
. .
。
_ _
n ,
_ _ _ :
e
;
, 。
。 us c c r con ,
_ ; _
。 . . 。
1.2.9 更改节奏和衰减(CMD_MIDI_CTRL_TEMPO)
MIDI解码能够强制改变节奏、每个通道的衰减程度以及mute 阈值水平,其结构体参数 MIDI_PROG_CTRL_STRUCT如下:
1 tempo_val
节奏速度,默认值为 1042;数值越大,节奏越慢;
2 decay_val [CTRL_CHANNEL_NUM]
衰减参数,低 11bit有效,每个通道单独配置;数值越小,余音衰减越快;
3 mute_threshold
mute 阈值,数值越高,主旋的静音音符回调会越多,需要置上MELODY_ENABLE使能位。
Sdk 中的默认配置如下:

。 us c c r con ,
。 . .
。
. .
,
。 , ,
一 , 。 :
see ac n
回退的小节数,范围为 ~,即最大可回退 个小节;值为 时回退到当前小节起始位置;
该功能只能在MIDI运行时才能实现。初始化中置上SAVE_DIV_ENBALE使能位,调用函数music_midi_ctrl_config(),并将CMD_MIDI_SEEK_BACK_N命令和配置好的结构体参数传入即可。详情请看《2 . 1.3MIDI乐谱解码的CMD配置》说明。
1.2. 11 MIDI解码函数接口
1.2.11.1 函数void midi_decode_init(void)
该函数实现查找midi解码的音色库并记录音色库信息,在系统初始化中调用;
. . . s c_ _c r co s c a _o * , c , vo * ar
,
,c:
. : ;
. c : ,
,
,
,
, ,
,
,
,
,
_ _
,
,
,
. ar : , c
4. 返回值:成功 0;
失败 其他值;
;
_ _
_ _
_ _
;
_ _
;
;
_ _
_ _
;
_ _
_ _
;
_ ;
_ ;
_ ;
;
;
;
1.2.11.3 函数void midi_okon_mode_set(music_play_obj *music_obj, u8 mode)
该函数实现配置midi解码的模式,其中参数:
- music_obj:midi解码句柄;
- mode:midi解码模式,可用mode如下:
1 CMD_MIDI_CTRL_MODE_0,正常解码模式;_ _ _ , one e one no e ; _ _ , ; _ _ _ , ;
. . . vo
.
us c_o :
. . . vo
. n _ n o:
o o oo s c a o
o on 一;
o
,
,
*
,
s c o
:
- _ o
, :
;
1.3 MIDI琴
MIDI琴功能支持通过函数驱动midi解码。该应用依赖我司自定义的mid音色库,用户可通过我司mid工具进行转换,详情请看《JLmidi工具使用说明》。 本节将介绍midi琴初
始化过程和相关的接口函数。
. .
. . .
vo c r _ eco e n vo 件
; _ _ _ e 。
eco er_ n vo ;
eco er_ o vo * e, u ec_c , _ u * u , u oo , 数
ec_c _ _ ;
, 。
. . .
_ _ _c r _a .c 进
, , u ,s 下:
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,乐器号为 168+0= 128,大于 127,所以通道号只能选9,乐器号写: 16*8+0-128 = 0;
1.3.2 MIDI琴音符回调功能
midi琴运行时,弹奏音符后可回调响应函数;该功能与midi解码的主旋律音符回调一致; 区别在于midi 琴中的回调配置只能在运行中通过动态配置的方式使能,可参考《l.2. l.4MIDI在运行中动态配置功能示例》 以及SDK 中的说明,配置顺序如下:
l)CMD_MIDI_MELODY_TRIGGER配置音符开始的回调;


_ _ ;
, s c ena e
_ _ _ ;
. .
. . . vo c r eco e vo
, ;
*
. . . s c_ _c r se _ ro s c a _o , ro , c
, :
. : ;
. ro: , 一 。
;
. c n: , ;
. : ;
失败 其他值;
1.3.3.3 函数int music_midi_ctrl_pitch_bend(music_play_obj *hdl, u16 pitch_val, u8 chn)
该函数实现配置midi琴弯音轮参数,其中参数:
l. hdl:midi琴解码句柄;
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)
, 一 , :
. : ;
. c : , ;_ _ _ ;_ _ _ _ ;_ _ ;_ _ _ ;_ _ _ ;
. ar : , ;. : ;
;
*
. . . s c_ c r _ o e_o s c a _o , e , ve , c
, :
. : ;
. n e: , 一 , ;
3. nvel:琴键按下力度,范围在0~ l27;部分乐器(如钢琴)有效,不同力度会使按下后的余音长短不同;
4. chn:发声通道,该值范围在0~ l5;
5. 返回值:成功 0;
失败 其他值;
1.3.3.6 函 数 int music_midi_ctrl_note_off(music_play_obj *hdl, u8 nkey, u8 chn, u16
decay_time)
该函数实现查找设置midi琴的乐器。对于声音不会衰弱的乐器(如笛子),调用Note_on 函数后需要调用该函数以结束音符,对于声音会衰弱的乐器(如钢琴)可不用。其中参数:
- hdl:midi琴解码句柄;
. n e: , 一 ,
. c n: , ;
. eca _ e: , s, ;
. : ;
;
*
. . . s c_ _c r _ve v ra e s c a _o , e ,
ve _ra e, c
, :
. : ;
. n e: , 一 ,
. ve _s e: , ;
. ve _ra e: , ;. : ;
;
*
. . . c r a e ea s c a o
该函数实现停止midi琴解码,在所有音符停止后会被调用,其中参数:
- hdl:midi琴解码句柄;
- 返回值:无;
;
ve _s e , u8
;
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))
该函数实现配置音符开始与结束的回调函数,其中参数:
- hdl:midi琴解码句柄;
- melody_callback:音符开始回调函数,回调函数的原型参照《1.2.6.1主旋律的音符;
.
e o s o ca
ac: ,
. . .
的
;
. : ;
*
. . . vo e _ c r _ a _ e s c a _o , c
e , :
. : ;
. c n: ;
. : ;
1.4 midi 限幅器
midi声音削顶采用限幅器的方法进行处理,在midi库中需要回调限幅器的运行函数。
1.4.1.使用说明
、 ,
、 , 。 意
c er n o. er u u u 一 。
1.4.2.参数说明
int bufsize = Limiter_QueryBufSize(); //获取限幅器运行buf大小
int attacktime; //限幅器启动时间,输入信号超过阈值启动限幅器所需要的时间
int releasetime; //限幅器释放时间,输入信号低于阈值恢复到原始信号所需要的时间 int threshold; //限幅器阈值,单位mdb,范围(-90000,0),超过阈值启动限幅器 int samplerate; //采样率,midi琴或者midi解码的采样率
int channel; //通道数,midi琴或者midi解码的通道
MIDI工具
http://www.zh-jieli.com/
第二章 MIDI工具
2. 1 MIDI工具主界面
2.1.1 MIDI版本说明
带有“压缩编辑”选项和“导入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工具。
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,乐器号为 168+0= 128,大于 127,所以通道号只能选9,乐器号写:16*8+0-128 = 0;
2.2 MIDI转换
midi转换过程包括选择输出目录、转换和导出库三个步骤。
原始的midi文件需要通过我司的MIDI转换工具“转换”后才能正常使用; “导出库”会将midi文件中用到的乐器制作成音色库。
若是只用到midi琴的应用,在主界面选择自己所需要的乐器后,直接点击 “导出库”选项即可生成相应的音色库。
2.2.1 选择需要转换的MIDI文件
在MIDI工具主界面中点击 “MID转换”弹出MIDI文件转换工具,点击 “添加文件”按钮,在弹出的文件选择框中选中要转换的一个或多个midi文件。
2.2.2 输出目录
点击 “输出目录”,选择转换后midi文件存放的文件夹。 默认路径为 “工具根目录\OutMID”文件夹中。
,
,
显
。
,
。
2.2.4 导出库
转换完成后,点击“导出库”,工具根据“输出目录”中的文件生成一个我司自定义的 mid音色库文件,保存在 “输出目录”的 “MID_RES”文件夹中,默认为路径为 “工具根目录\OutMID\MID_RES”文件夹中。
如果在主界面中有选中乐器, “导出库”会将midi文件需要的乐器和主界面选中的乐
一 。 ,
, 。
: . a , . ”
; . 。
。
2.3 MIDI音色库压缩
MIDI一个乐器的相邻的一连串音符(key),并非都是单独的音频文件,可能是由同一个音源文件经过音频算法偏移得到的。
MIDI音色库压缩就是压缩这类音源文件,因此压缩一个音源文件会影响到一连串音符 e , 一 一 。
, ,
。
2) 选中相应的乐器,勾选并点击“编辑压缩”选项,会打开如下编辑界面,选择需要的压缩方式并保存;如果全部音源都是不压缩的,建议不要勾选该选项,因为压缩会带来额外开销。
3) 编辑界面会显示所选乐器的key 的音源文件号,以及该音源文件会影响到的所有乐器及该乐器的key范围。改了压缩选项后,返回主界面弹奏对应的琴键,即可试听压缩后的效果。
, ,
, 。
5) 将该乐器压缩后的音色库导出,导出后可以查看更多乐器的压缩信息。

2.3.2 压缩信息查询
导出库后,midi工具根目录下会更新midiinfo.html、progaudio.html、progaudio_all.html、 proginfo.html 四个文件,这些文件能显示更加详细的音色和压缩信息。
1) midiinfo.html
e, 息
。
ro a o.
, , 的
e 。 :
● 用户自行导入的SF2音色库从32768开始编号
● 用户使用”WAV编辑”生成的音色从65536开始编号
ro a o a .
ro au o. , ,
e 。
ro o.
, e 。
2.3.3 还原压缩配置内容
配置完压缩后,若需要重置压缩选项,可以删除工具根目录下的“config.txt”文件,再
重启软件;
, 。
, ;
, ;
。 n ,
n ; , ,
。 。
, 。
, ro a o.
;
。
, ,
s _con . n , ;
2.5 MIDI WAV编辑
2.5.1 WAV编辑界面简介
在主界面中点击 “WAV编辑”进入MIDI音源编辑界面,编辑音源时记得要把乐器跟
e 。
: ,
: av
:
: , av
2.5.2 波形编辑
在波形图界面中点击右键弹出波形编辑框,点击“选择->边界标记”,再点击“选择->区间选择”选中一段区域,那么就可以对这一段音频进行复制\剪切之类的编辑了。
选择右击菜单的最后一项“当前WAV文件另存为…”,可以将编辑结果另存为自己的 wav文件。 否则编辑无效,就算是打开的默认音色的wav文件,也是生成的一个临时文件
。 , 一 。
, . av, 。 e,
。 , . . av av ,
, 。
2.5.3 参数配置
在“WAV编辑”界面中点击“参数”进入参数编辑界面。如下图,图中是一个音色文件的单元信息,也就是该乐器的key码对应wav波形。音量、 上升速度、 正常衰减、 松手衰减、衰减限制都是0-1,但是工具中, 以65535量化。所以,65535对应 1,其中参数:
● Key码:
:
- , ,
,
:
。 ,
:
一
,
:
。一 , 。
s
:
, o 一 。 ,
:
, 。 ,
, , 一 , 。一
声音发完了就是发完了。但是,如果一个循环的音源文件,就是一个无穷长的文件,从循环位置开始一直到波形文件最后的这段波形视为一个周期,这个周期一直在现有的波形文件后面做周期性扩展。所以编辑的时候请注意,波形前后扩展时的过度,例如波形为[ 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...]这个才是最后的波形,如果,这个声音在连接处不平滑,有啪一声,那就会一直啪啪响的了。例如波形是
[ 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,…],要保证这个声音听起来好听。
● 包络曲线:
选择是否需要编辑包络效果,与主界面“包络”勾选项一致。
另外需要确认的是,该窗口最上面的wav文件路径。请选择自己之前保存的wav文件, 。 av。 av ,
。 。 。 av
, 。 av 。
2.5.4 包络编辑
勾选主界面左侧的“包络”选项,或者在参数配置中勾选“包络曲线”,即可在主界面编辑wav音频的包络效果。
:
, ;
, s; s , av
, 一 ;
:
;
;
, ;
: , !
2.5.5 波形保存
修改完之后,点击确定。回到上级窗口,这时候保存按键亮起。如果点击保存,所做的修改就会被写入一个.bin文件。否则无效。在退出的时候,会调用一个批处理去扫描.bin文
件,生成最后需要的库。
, ro a o. 件;
。
2.5.7 还原WAV编辑内容
WAV编辑完成后,若需要重置WAV编辑内容,可以删除工具根目录GP文件夹下的“config_out.bin”文件,再重启软件。
2.6 按键与乐器表
2.6.1 按键表
。
||
| 7 | ||||||||||||
| 9 | ||||||||||||
a src a
_
ro ._
。