当前位置:首页 » 编程软件 » 音符动画编程

音符动画编程

发布时间: 2023-08-18 05:31:39

1. midi电子编程鼓使用教程

谈谈MIDI鼓轨的制作

在MIDI制作中,无论乐曲是流行音乐,摇滚乐,爵士乐,还是芬克等等,鼓轨的制作都很重要,因为,鼓轨是整个乐曲的节奏框架,是主要节奏乐器,作这样的乐曲,最先做的轨应该是鼓轨。
鼓轨又分套鼓轨和其它打击乐器轨。制作鼓轨的分轨要视MIDI系统的情况而定,能做鼓轨的音源越多,鼓轨的平衡和混音就越好做,音色的选择就越多。但是今天我就讲讲最难做的只有一个音源一个通道的鼓轨作法,这个会做了,多通道的鼓轨作法就更容易了。
假定你的声卡音源是在端口一(PORT 1),你的鼓轨在声卡的第十通道(channel 10),我们先在音序器软件(如CAKEWALK)中打开若干轨,都设定为PORT 1的CHANNEL 10,这样我们就获得了在同一端口下的同一MIDI通道中的若干个逻辑轨,做的越细,开的逻辑轨就要越多,甚至每一个打击乐器都要开一轨。不过,一般用以下的分轨方式就可以得到较平衡的逻辑轨了。
1.BASS DRUM(脚大鼓),2.snare drum(军鼓),3.HI-HAT(小立钗),4.SYM(各种吊钗),5.TOM-TOM(通通鼓),6.CONGA(康加),7.TAMB-CLAV-COWBELL-TRIA(铃鼓,响棒,牛铃,三角铁),8.其它。这样的分逻辑鼓轨的方法,八轨就可以了。
第一步做BASS DRUM和SNARE DRUM,这两个鼓最好同时做,因为这是构成基本节奏的两个乐器,以错开为主,不能奏同一节奏点,这是一个原则,除非你有特别的设计(如TANGO节奏,进行曲等),四四拍一般两个小节为一个循环,少用一个小节不断反复,同一节奏型也可在第二小节比第一小节做一些小的改动,比如在最后一拍加一记脚鼓或军鼓的小碎点,还有一些方法比如,第二小节的第一正拍不做脚鼓等,总之两个小节的不同之处要明显而有创意;
第二步做小立钗,要考虑到真实演奏的效果,在军鼓通鼓点密集处要错开使用或不用,如果脚鼓军鼓构成的基本节奏型较工整,小钗可节奏碎一点,比如出现一些前后十六分音符和小切分,如果基本节奏型切分较多或不太方整,小钗要均匀等值些,比如持续八分音符或十六分音符;还有小钗力度要有不同,不要一直是一种力度,比如可以做一记强一记弱。
第三步做吊钗,大钗使用一般性原则一是在通鼓后的强拍,二是强化旋律中的强音,三连音等,三是在有的节奏型中强化脚鼓或军鼓,钗顶的音色有时可代替小立钗用,有时可根据需要选用中国钗的音色,碎钗选用一种延时较长的钗声,用分步录音的方式,再修改力度,吊钗的音色可多选用几种,尤其在较大密度使用时,不要给人感觉你只有一面大钗,
第四步做通鼓,一般用于FILL IN,有时低通可用来当民族大鼓打,高通可以当康加打,
第五步做打击乐器,铃鼓的用法有几种,一可用于强化军鼓点,二可单独用于代替军鼓的节奏,三可用于强化立钗点,用法同立钗,四可用滚奏的方式,康加的用法原则是弱奏用来打节奏,强奏用来错开基本节奏型,也就是说强音不要与军鼓和脚鼓重复,三角铁的用法同立钗,还可强化节奏的音头。
由于所有逻辑轨都使用同一MIDI通道,所以音量值(VOLUME)和声像值(PAN)是一样的,动一轨就是动所有轨,所以音量平衡就使用力度值(VEL)来调,今天就说这么多,请大家来补充,特别是鼓方面的高手,毕竟我不会打鼓。
一种方法是实录(REAL),也就是用键盘弹,可以打开若干轨,但都使用同一音源的同一通道,比如都用第十通道(一般都是这个通道),这样你可以在不同的轨里录不同的乐器,比如先开一轨录底鼓(BASS DRUM)和小鼓(SNARE DRUM),再录一轨小钗(HI HAT),再录一轨通通鼓(TOM),再是大钗(SYM),后是小打(PERCUSSION),小打要是复杂的话再分几轨录。还有一种方法是步录(STEP),也就是点有小脚印的那个钮,这个方法比较适合用来做快速且等长的音符,如连续十六分音符的小钗,还适合用来做滚奏,如小鼓,大钗的滚奏,选择时值密一点的值,如三十二分音符,三十二分音符三连音等。在五线谱上点也是一个方法,如果你对键盘演奏没有信心的话,这种方法最大的好处就是可以边听边改,如果你不太会编鼓,可以先用BAND IN A BOX等自动编曲软件生成一个文件后,再编其它声部。

从下到上分别是Bass Drum 地鼓,Snare军鼓,和Close Hi-hat 闭的踩镲,往上是手鼓及一些打击乐器。

2. 单片机对于音乐的编程中 ,音符的十六位数据表是怎样

只有音乐发声汇编程序,没有加入LED灯,供参考。数据代码已改为小星星发声
;**********************************************
ORG 0000H
SJMP MAIN
ORG 0BH
AJMP TIME0

;*************主程序************************

MAIN: MOV SP,#60
MOV TMOD,#01H ;T0定时工作方式
MOV IE,#82H ;CPU 中断允许,T0中断允许

START0: MOV 30H,#00H ;TABLE 相对地址指针
NEXT: MOV A,30H
MOV DPTR,#TABLE ;到TABLE处取 简谱码 节拍 码
MOVC A,@A+DPTR
MOV R2,A ;取到的简谱码 节拍码 暂存于R2中

JZ ENDF ;取到 00 结束

ANL A,#0FH ;否,取低四位 节拍 码
MOV R5,A ;将节拍码存于R5中
MOV A,R2 ;简谱码 节拍 码 给A
SWAP A ;高4位 与 低4位 交换
ANL A,#0FH ;取简谱 码
JNZ SING ;取到的简谱 码不是0,则去发声
CLR TR0 ;取到0 则不发声
SJMP DLY1 ;节拍延时子程序( 随节拍码变化,延时时间不同)

;---------------发声-----------------------
SING: DEC A ;取到的简谱码减1
;(简谱码计数值16位数据存储首地址从TABLE1 《相对地址》0处开始放起,所以要减1)
MOV 22H,A ;存入(22H)中
RL A ;乘2 因为取的数据占两字节(16位)
;所以指针增加量要乘2

MOV DPTR,#TABLE1
;...........简谱码转换为相应定时器16位计数值.............
MOVC A,@A+DPTR ;到TABLE1取相应的高字节计数值
MOV TH0,A ;高字节计数值存入TH0和(21H)中
MOV 21H,A
MOV A,22H ;减1的简谱码给A
RL A ;乘2 因为取的数据占两字节(16位)
;所以指针增加量要乘2
INC A ;A 增加 取下一个字节计数值

;...........简谱码转换为相应定时器16位计数值.............
MOVC A,@A+DPTR ;到TABLE1取相应的低字节计数值
MOV TL0,A ;低字节计数值存入TL0和(20H)中
MOV 20H,A
SETB TR0 ;启动T0定时器让喇叭发出不同频率声音

;---------------节拍延时-------------------
DLY1: ACALL DELAY ;基本单位时间为1/4拍 187ms
INC 30H ;取下一个简谱码 节拍 码
SJMP NEXT

;---------------歌放完结束---------------
ENDF: CLR TR0 ;关闭T0定时器
AJMP START0 ;反复循环

;****T0中断子程序(用来驱动喇叭发出不同频率声音)**************
TIME0: PUSH ACC
PUSH PSW
MOV TL0,20H ;重装计数值
MOV TH0,21H
CPL P3.7 ;驱动发声
POP PSW
POP ACC
RETI

;******************节拍延时187ms****************************
DELAY: MOV R7,#187 ;187ms延时子程序
DLY2: MOV R4,#02
DLY3: MOV R3,#248
DJNZ R3,$
DJNZ R4,DLY3
DJNZ R7,DLY2
DJNZ R5,DELAY
RET

;*******音符T值表(用来让定时器发出不同的频率)**DW 表示一个 计数值 占两个字节存储单元***************

TABLE1: DW 64260,64400,64524,64580,64684 ;低音SO 低音LA 低音SI /中音DO 中音RE
DW 64777,64820,64898,64968,65030 ;中音MI 中音FA 中音SO 中音LA 中音SI
DW 65058,65110,65157,65178,65217 ;高音DO 高音RE 高音MI 高音FA 高音SO

;*********简谱码 节拍码(高4位简谱码 ,低4位节拍码)*************

TABLE: DB 44H,44H,84H,84H ; 1 1 5 5
DB 094H,094H,88h ; 6 6 5 -

DB 74H,74H,63H,63H ; 4 4 3 3
DB 52H,52H,48h ; 2 2 1-

DB 84H,84H,74H,74H ; 5 5 4 4
DB 64H,64H,58h ; 3 3 2-

DB 84H,84H,74H,74H ; 5 5 4 4
DB 64H,64H,58h ; 3 3 2-

DB 44H,44H,84H,84H ; 1 1 5 5
DB 094H,094H,88h ; 6 6 5 -

DB 74H,74H,63H,63H ; 4 4 3 3
DB 52H,52H,48h ; 2 2 1-

END

加入了LED灯,水平有限,效果有点不太好
;**********************************************
ORG 0000H
SJMP MAIN
ORG 0BH
AJMP TIME0

;*************主程序************************

MAIN: MOV SP,#60
MOV TMOD,#01H ;TO定时工作方式
MOV IE,#82H ;CPU 中断允许,TO中断允许

START0: MOV 30H,#00H ;TABLE 相对地址指针
NEXT: MOV A,30H
MOV DPTR,#TABLE ;到TABLE处取 简谱码 节拍 码
MOVC A,@A+DPTR
MOV R2,A ;取到的简谱码 节拍码 暂存于R2中

JZ ENDF ;取到 00 结束

ANL A,#0FH ;否,取低四位 节拍 码
MOV R5,A ;将节拍码存于R5中
MOV A,R2 ;简谱码 节拍 码 给A
SWAP A ;高4位 与 低4位 交换
ANL A,#0FH ;取简谱 码
JNZ SING ;取到的简谱 码不是0,则去发声
CLR TR0 ;取到0 则不发声
SJMP DLY1 ;节拍延时子程序( 随节拍码变化,延时时间不同)

;---------------发声-----------------------
SING: DEC A ;取到的简谱码减1
;(简谱码计数值16位数据存储首地址从TABLE1 《相对地址》0处开始放起,所以要减1)
MOV 22H,A ;存入(22H)中
RL A ;乘2 因为取的数据占两字节(16位)
;所以指针增加量要乘2

MOV DPTR,#TABLE1
;...........简谱码转换为相应定时器16位计数值.............
MOVC A,@A+DPTR ;到TABLE1取相应的高字节计数值
MOV TH0,A ;高字节计数值存入TH0和(21H)中
MOV 21H,A
MOV A,22H ;减1的简谱码给A
RL A ;乘2 因为取的数据占两字节(16位)
;所以指针增加量要乘2
INC A ;A 增加 取下一个字节计数值

;...........简谱码转换为相应定时器16位计数值.............
MOVC A,@A+DPTR ;到TABLE1取相应的低字节计数值
MOV TL0,A ;低字节计数值存入TL0和(20H)中
MOV 20H,A
SETB TR0 ;启动T0定时器让喇叭发出不同频率声音

;---------------节拍延时-------------------
DLY1: ACALL DELAY ;基本单位时间为1/4拍 187ms
INC 30H ;取下一个简谱码 节拍 码

CPL P1.0 LED灯 闪烁
CPL P1.1
CPL P1.2
CPL P1.3
CPL P1.4
CPL P1.5
CPL P1.6
CPL P1.7

SJMP NEXT

;---------------歌放完结束---------------
ENDF: CLR TR0 ;关闭T0定时器
AJMP START0 ;反复循环

;****T0中断子程序(用来驱动喇叭发出不同频率声音)**************
TIME0: PUSH ACC
PUSH PSW
MOV TL0,20H ;重装计数值
MOV TH0,21H
CPL P3.7 ;驱动发声
POP PSW
POP ACC
RETI

;******************节拍延时187ms****************************
DELAY: MOV R7,#187 ;187ms延时子程序
DLY2: MOV R4,#02
DLY3: MOV R3,#248
DJNZ R3,$
DJNZ R4,DLY3
DJNZ R7,DLY2
DJNZ R5,DELAY
RET

;*******音符T值表(用来让定时器发出不同的频率)**DW 表示一个 计数值 占两个字节存储单元***************

TABLE1: DW 64260,64400,64524,64580,64684 ;低音SO 低音LA 低音SI /中音DO 中音RE
DW 64777,64820,64898,64968,65030 ;中音MI 中音FA 中音SO 中音LA 中音SI
DW 65058,65110,65157,65178,65217 ;高音DO 高音RE 高音MI 高音FA 高音SO

;*********简谱码 节拍码(高位简谱码 ,低位节拍码)*************

TABLE: DB 44H,44H,84H,84H ; 1 1 5 5
DB 094H,094H,88h ; 6 6 5 - -表示有节拍

DB 74H,74H,63H,63H ; 4 4 3 3
DB 52H,52H,48h ; 2 2 1-

DB 84H,84H,74H,74H ; 5 5 4 4
DB 64H,64H,58h ; 3 3 2-

DB 84H,84H,74H,74H ; 5 5 4 4
DB 64H,64H,58h ; 3 3 2-

DB 44H,44H,84H,84H ; 1 1 5 5
DB 094H,094H,88h ; 6 6 5 -

DB 74H,74H,63H,63H ; 4 4 3 3
DB 52H,52H,48h ; 2 2 1-

END

热点内容
怎么自己开个我的世界服务器地址 发布:2025-02-04 11:51:44 浏览:810
整数是数存储 发布:2025-02-04 11:39:44 浏览:694
12123六位密码是多少 发布:2025-02-04 11:34:43 浏览:797
奥赛编程课 发布:2025-02-04 11:33:59 浏览:376
无法打开共享文件夹 发布:2025-02-04 11:29:50 浏览:635
电脑配置有哪些方面要求 发布:2025-02-04 11:27:38 浏览:525
安卓手机的米加大学什么时候更新 发布:2025-02-04 11:26:39 浏览:705
长城哈弗f5潮版有哪些配置 发布:2025-02-04 11:24:22 浏览:540
编程两阶段 发布:2025-02-04 11:23:00 浏览:154
倒钩编程 发布:2025-02-04 11:13:48 浏览:470