創作內容

1 GP

11/12,續上篇,近期音樂研究-和弦與自動作曲程式寫之前的思考

作者:李兒諳│2015-11-12 16:16:49│巴幣:2│人氣:176
昨天主要是在忙期中報告、考試跟研究和弦
有時會看到些遊戲製作的文章,又會有些想跳進去
不過個人大多都是"晚上想想千條路,早上醒來走原路"啦!!
呀,個人有很多條原路還沒走個大概嘛

好一陣子沒動手寫遊戲製作相關程式
想跳遊戲製作但沒實際跳的原因是
看到的成果大多是Unity、3D相關
而個人過往是HTML 5、2D相關(webGL個人沒碰過嘛)
HTML 5跟視窗程式類似,但有很多細節瀏覽器已經幫忙處理好了

至於Unity
由於個人過往接觸DirectX跟OpenGL都停在第一個程式範例
(雖然有稍微看下後面章節的介紹)
所以是不太清楚些名詞與實際在做些什麼的

雖然還有其它原因
個人有很多小遊戲是不會寫的
(三消、俄羅斯方塊,翻牌配對,貪吃蛇,數獨,2048等)
再來就是自製腳本語言解析(parse)問題
因此沒什麼自信
雖然也沒有很認真想
但隱約覺得自己大概做不出來
也許以後情況會改變
目前個人程式本身問題比美術、音樂、影片、劇本等還嚴重
(雖然其它問題也跟重症末期差不多)
程式不行的話,不是做不了核心功能就是無法擴充
所以覺得遊戲製作相關個人所能做的突破較少

嗯,所以再回去寫遊戲製作前
還是先處理下個人別的較有可能突破的領域好了

再次廣告下,自動作曲目前較成熟
也能免費使用的,就個人發現的有Orpheus(日本學術網站)
不過該網站好像是規定不能錄音的
若看了下還是不會註冊、使用的話
就看我上篇文章

而我接下來要談的自動作曲
是憑著一己之力土法煉鋼的自動作曲
應該沒那網站實用
(雖然相關程式還沒寫出來)

自動作曲-使用musicXML格式
若做得很簡單的話
大概就是音符時值與數量固定後,再隨機改音階、升降音、所在純八度即可
(這做法就像確定作文或詩詞對仗題目後,再藉此挑出較好的作品)
前天那篇文章忘記講 <octave></octave>中間的值是八度高低了
要做得專業的話,應該是固定幾小節然後產生隨機音符時值與音階高低
若那麼做的話
我想休止符應該是不用考慮的
再不然就是機率要調很低
或者是隨著前面的音符量增加,遞增休止符出現的機率,出現後再還原
(後來發現除了自己打的MIDI譜外,多數譜休止符幾乎只會出現0~1次
而我會用的原因是吹笛子要換氣時就加,我才較能知道譜打到哪了
而要知道譜打到哪,主要是為了方便複製貼上)

自動作曲若是完全隨機的話
稍微想像下,應該是很難跳出好的音樂片段
(假設好的音樂片段每個音符是個極稀有轉蛋
要連中很多次才會碰上,在那之前大概耐性會先耗完)
所以理想的話,應該是要研究哪些音符組合片段容易產生佳作
(個人吹直笛時,覺得音符遞增或音符遞減共吹3個音似乎很常見
音階距離近,四個音四個音或五個一組的也常見,但那規則我不知道怎麼寫)
上述討論的主要是針對單音的部分
而多個音,也就是廣義上的和弦啦
因為我是吹笛子的嘛!所以不太了解是否有什麼規則
那部份若亂數隨便取的話
我想出來的歌大概會沒什麼主旋律的感覺
因此昨天跟今天的一小部份我開始在研究和弦
當然只研究一兩天是研究不出什麼的
嗯...只有一兩天的話與其說是研究和弦,不如說是接觸和弦較恰當些
就在我很開心的發現和弦大多是三度疊加(一次3或4個半音)時
然後和弦大概有三和弦、七和弦、九和弦、十一和弦、十三和弦
(十五和弦以上會跟根音重複,此外很難演奏
但以MIDI檔來說的話應該是沒什麼困難,可以考慮看看)
就迫不及待地用那規則審視過往個人認為的好作品
結果第一首-緑眼のジェラシー
就沒辦法單純用三和弦等的方式自動作曲做出來
所以相關規則可能還要再思考


接著和弦相關的部分可能要想、打比較久
而且更重要的是
我接下來打的內容可能會很糟糕
所以就先發文了
(這邊的糟糕是很差勁、不太好讀、也沒什麼幫助的意思
別抱有什麼像是會看到圖文並茂之文章的期待
接下來的內容應該是沒附圖檔,也沒附影片檔)

-------------------------------------------------------------
(以下是這段預計打的重點摘要)

(我不會介紹和弦,請自行參考相關影片
但會講下個人覺得相關的程式大概要怎麼寫
嗯,其實要怎麼寫我也還沒想好
簡單來說的話,我會想把和弦視為單獨的功能、片段
我覺得和弦像是編曲,也就是主旋律出來後的副產物
因此可能要研究musicXML多音軌的寫法)

<octave>,也就是純八度
我測試了下(因為相關文件不好找)
範圍在0~9,但9有時怪怪的
像純八度9的A,反而會變得比純八度0的A還低
此外純八度7的G以上
因為頻率很高,有些人的耳朵是聽不到的
在聲音領域,有人會利用人耳聽不到的高頻聲音來做驅除蚊蟲用
但是實際上是否有效
跟高頻音波是否會傷害人體是不太清楚的

以鋼琴來說的話,音階範圍是從0的A到8的C
由於純八度7以上有些人可能聽不到
因此音符隨機的音階範圍,大概就在0~6的純八度音
不過蠻多樂器音階範圍沒那麼廣,可以再縮減純八度的範圍

那程式隨機的話,我是採取兩段式
因為musicXML處理升降音很麻煩
因此我是打算採取以半音為單位
隨機出一個數值後
再跳出對應的xml
(這部分以程式來說到底好不好寫我也不太清楚)

我大概會寫個陣列,就以純八度3~5來舉例好了
一個純八度是12個半音,也就是七個白鍵,五個黑鍵
純八度3,4,5,所以陣列大小設為36,陣列值是(這邊只舉12個,每12個一循環)
'C','C','D','D','E','F','F','G','G','A','A','B'
然後隨機出來的值
/12後加上+3就是<octave>的值
除12個餘數(VB中印象是mod,其它語言大多照抄C用%符號)
11/13更正:除12的餘數(VB中印象是mod,其它語言大多沿襲C語言用%符號)
餘數是1,3,6,8,10的
<step>還是用陣列[隨機到的值]
但是要額外加上<alter>1</alter>這行
也就是升半音
也就是我預計程式中不會用降半音
反正之前維基百科是說,MIDI檔表現不出升半音與降半音的細微差別
(我是吹笛子的連怎麼升降半音都不太清楚,好像只會F#的按法吧)
也許它們的差別是以音分為單位也說不定
(維基百科上那個音分的聲音檔,我耳朵聽起來都一樣,不太靈敏)
但某個音分的聲音要怎麼用MIDI或musicXML產生我就不知道了
這方面我是外行啦

和弦的話,我是打算研究musicXML多音軌的寫法
自動作曲分成產生主旋律的跟和弦部份(和弦單獨在另一音軌)
不過這種做法
若主旋律全是單音的話
可能會有些浪費電腦自動作曲的優勢就是了
(電腦同時發兩個音以上,也就是廣義上的和弦很穩)
但這樣子的話,感覺出來的結果可能會較理想些
接著主要就是研究小節與多音軌的musicXML格式表達法
研究完成後自動作曲程式應該就能寫出來了

由於時間因素
這篇大概就打到這邊
正好想打的好像也差不多打完了
由於這些研究應該會花些時間
接下來幾天可能不會再新增與自動作曲與其相關程式不相關文章
要專心處理musicXML自動作曲
(說到不相關,我今天早上作夢時,控制夢境還算成功,過往都很容易變惡夢)
-------------------------------------------------------------
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3014995
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

1喜歡★y541258 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:11/10,覺得人生乏味... 後一篇:11/13,自動作曲(對...

追蹤私訊切換新版閱覽

作品資料夾

pjfl20180818空氣
o.O看更多我要大聲說昨天21:33


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】