2009年1月17日 星期六

day7

考慮到的問題
就是剩一個禮拜
我們揪境要不要加入樂理呢
這也需要花些時間
但很怕沒加入樂理會出現非常糟的和弦

另外關於和弦的部份
有點難解釋

由於每首歌都有可能是十二個調一個
在資料庫有100首歌 可能只有8首歌是同一個調
之前有講過 其實在一個調常用的和絃就那幾個
如果每次收到一段 [1 3 4 5] 這種都要去用十二調的觀點去算
算出來不太準 因為明知道C調不會用B和絃就不需要考慮
因此我的想法是歌進來判斷前都先移調算出 相對調性 反正我們知道什麼調
都先通通移成C調 算出是幾級和絃 再推回去用原來調的該級和絃伴奏
例如一首歌是D調 一小節出現[2 5 6] 再相對於C調歌出現[1 4 5]
全部都化成C調歌形態來算機率樣本會比較完整 相對有100首C調歌

流程會變成
資料庫:
已知和絃歌 => C調歌 => data
移調成C調 和絃亦然 記住小節組成音 與和絃

配和絃:
未知和絃歌 => C調歌 => 配出C調和絃 => 原本調和絃伴奏
移調成C調 進入DP算和絃機率 和絃移回原本調

所以按照音的編號
1 C 2 #C 3 D 4 #D 5 E 6 F 7 #F 8 G 9 #G10 A11 #A12 B13 C14 #C15 D16 #D17 E18 F19 #F20 G21 #G22 A23 #A
移調很快 直接+ -某個數字就好 EX G調移成C調 則要移8-1=7
假設某小節算出和絃是Em(5 8 12) 則在加7變(12 15 19)即可得出該段配樂

day6

把每個音符組成都做編號 因為總共有12個音
所以會有2^12次方總組合

data部份 已經找到一百多首的單音midi檔,tony可以拿去測試看看

Sinze 和弦編號
現在音的編號有故定嗎
不如就
1 C 2 #C 3 D 4 #D 5 E 6 F 7 #F 8 G 9 #G10 A11 #A12 B13 C14 #C15 D16 #D17 E18 F19 #F

day5

12/20

tony 從midi檔案中抓出每小節的音符組成完成
比如說
舉例來說:
M1 = 1 1 5 5 6 6 5 5 à N1 = [ 1 5 6 ]
M2 = 1 5 3 6 5 6 6 7 à N2 = [ 1 3 5 6 7 ]
M3 = 5 4 4 6 2 2 5 5 à N3 = [ 2 4 5 6 ]
M4 = 1 5 6 6 6 5 1 1 à N4 = [ 1 5 6 ]
Mx 代表不同的小節,Nx代表其音符組合,所以處理過之後,變可以知道這首歌的音符組成。

Jeff data training and DP

就是我會吃兩個矩陣
一個叫做observ[i][j]代表當某小節的音符組成是xxx時 是某和弦的機率
第一維會吃所有在某小節可能組成的音符 像是[1,3,5]、[1,2]第二維會吃所有的和弦數
出來會是一個像這樣的東西
某小節的音符組成 [1,3,5] [1,2] [1,4] . . .和弦 C [ 20% 50% ] C# [ 30% . ] D [ 10% . ] D# [ . . ] . [ . . ] . [ . ] . [ . ]
每行加起來會是一 裡頭的%是機率
第二個矩陣transit[i][j]
要計算若前一小節為X和絃的話,那下一節和絃為Y和絃的機率將為何。
格式如下:
和弦 C C# D D# .和弦 C [ 20% 50% ] C# [ 30% . ] D [ 10% . ] D# [ . . ] . [ . . ] . [ . ] . [ . ]
代表某和弦到另一和弦的機率 每"列"加起來會是一
這樣有問題嗎 看的懂嗎 看不懂趕快問我喔!
第一個矩陣不一定是方陣喔 因為和絃數跟小節內音符組成數不一定一樣但第二個一定是方陣 因為和弦數=和絃數
所以要注意一下啦
但因為矩陣都是數字編號
所以你可能要給我一個對應表
像是observ的第一維的對應表:0: [1,3,5]1: [1,2]...
第二維對應表:0: C1: C#2: D3: D#...