音符動畫編程
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