我正在一個小程序中產生隨機旋律。到目前爲止,我有一系列音符和他們的頻率,程序從數組中挑選一個隨機元素並播放它的頻率。問題在於旋律「聽起來很糟糕」:就好像你坐在鋼琴前面,彈奏了隨機鍵。我需要一種算法來生成旋律,包括頻率和時間等等。我不需要任何細節,只需製作一段聽起來不錯的旋律即可。用於生成旋律的算法?
回答
使用現有的音樂(MIDI?)來訓練馬爾可夫模型或Markov chain 。您可能想要將輸入轉置爲相同的密鑰,例如C大調,未成年人。音調*持續時間可能必須被編碼(枚舉)爲單個維度(x * 7 * 5或x * 12 * 5)。 [x:=輸入範圍內的八度數,5 =持續時間,1 downto 1/16] 循環和變化的額外獎勵,但這會更難...
解釋:Google是你的朋友,「寫一些代碼」也許http://sourceforge.net/projects/wakkerbot/ ?? – wildplasser
試着從相同的音階上演奏音符:) C大調,D小調等;) 甚至五聲音。
如果您想要的音樂是「通風」,從來沒有不和諧然後用五聲音調(即喜歡彈鋼琴的黑鍵)
例如: 間距選擇:
C#,D#,F#,G# or A#
音高範圍: 3至5倍頻程(因爲一個八度向上或向下基本上加倍或減半的基本頻率的頻率)
注持續時間:
範圍從16th
到Whole Note
完全是我尋找的東西:一個簡單的系統來產生一個永不和諧的旋律。 [雖然「注意時間」部分非常明顯,例如「從常見的(1/16,1/16及其一半,1/8,1/8及其一半......)中挑選一個隨機值] –
其他人試過這個。您可能想閱讀Richard MacDuff撰寫的文章'音樂和分形景觀'。
ABBA數k vind't VOOR德kleintjes zielig死我laten MMA乙腦,流行性乙型腦炎 vergeetk笏恩huilt OOK weet IK tranen
這是最好不要隨意創造的散記塊A和正如你現在理解的那樣,更好地運用量子理論的概念(自然界中的一切相互作用,就像我們在這裏看到的家庭規則被應用在世界的房子裏一樣) 。
所以,像一個元胞自動機,'生命的遊戲',你可以每一步發揮你'真正'的音符,讓'y軸'的音符號碼和(請數)音符的持續時間adjacing trues沿 'x軸')這種聲音隨機性緣故
實施例: http://simple.ogena.net/Steel_Drum-Slap_Bas.mp3 從生成的源: http://simple.ogena.net/Steel_Drum-Slap_Bas.mid
你能否清理一下你的答案?很難理解你的意思。 – Killah
進口java.io. ;
import javax.sound.sampled。;
class Me {
public static void main(String [] args){
int fij = 128; int tw = 64; int fd = 2048;
int secs = 128; String fo =「Me。WAV「; INT HO = 8;
如果(args.length == 5){FIJ = 4 *的Integer.parseInt(參數[0]);
TW = 4 *的Integer.parseInt (參數[1]); FD = 4 *的Integer.parseInt(參數[2]);
HO = 4 +的Integer.parseInt(參數[3]); FO = ARGS [4];
}
double [] pcm_datadrd = new double [44100 * secs];
double [] pcm_datadr = new double [44100];
對(INT I = 0;我< pcm_datadr.length;我++){
pcm_datadr [I] =(64 * Math.sin((I/1837.5 *(I * I/128 ))* Math.PI * 2)/(1+(Math.cos((4096)+64))+(i/256)));
}
對(INT X = 0; X <(秒-1); X ++){
的for(int i = 0;我< pcm_datadr.length;我++){
pcm_datadrd [((int)的(44100 * X)+ 1)] =(雙)
(128 * Math.sin((I/1837.5 *(I * I/256)) * Math.PI * 2)/(1+(Math.cos((4096)+64))+((double)i/256)));
}
}
字節[] PCM_DATA =新的字節[44100 *秒];
對(INT I = 0;我< pcm_data.length;我++){
雙FUP = 1 +(FIJ * I/pcm_data.length);
PCM_DATA [I] =(字節)(pcm_datadrd [I] +(64 * Math.sin((I/TW FUP Math.cos(3+(I/FD))))+
32 * Math.sin(5+(i/ho * fd)* Math.cos(i /(fd + tw)))));
}
AudioFormat frmt = new AudioFormat(44100,8,1,true,true);
的AudioInputStream AIS =新的AudioInputStream(
新ByteArrayInputStream進行(PCM_DATA),FRMT,pcm_data.length/FRMT。getFrameSize()
); AudioSystem.write(ais,AudioFileFormat.Type.WAVE,new File(fo));以及音頻編碼器。 catch(Exception e){e.printStackTrace();}};}}} }
}}
God保佑斯林格蘭德 –
- 1. 雙螺旋生成算法
- 2. 製作旋律創作的基本算法的簡單方法?
- 3. 用於計算冪律擬合
- 4. Arduino旋律循環?
- 5. 關於路徑生成算法
- 6. 與非WEB應用程序的Java旋律集成
- 7. 在android中用於迷宮生成的遞歸除法算法
- 8. 組生成算法?
- 9. Numbrix生成算法
- 10. 在javascript中播放旋律
- 11. 點擊播放旋律
- 12. Python:如何生成冪律圖
- 13. 生成形狀的算法
- 14. 生成星空的算法
- 15. 用於生成無環有向圖的遞歸算法
- 16. 用於生成軟件堆棧圖的算法
- 17. 用於從雲點生成三角形網格的算法
- 18. 什麼類型的API或算法用於生成會話ID?
- 19. 用於QR碼生成器的Reed-Solomon算法
- 20. 有沒有用於生成三維雲的算法?
- 21. 用於沿路徑生成3d柱面的算法
- 22. 用於在Google新聞中生成推薦的算法?
- 23. 用於生成隨機網絡的算法
- 24. 遞歸算法,用於生成沒有linq的組合
- 25. 用於生成圖形的遞歸算法
- 26. C++法律? (類似於三大法則)
- 27. 生成植物生長的算法
- 28. 關於Facebook授權的法律問題
- 29. nginx重寫規則php的旋律
- 30. 樂趣和簡單的旋律API
你可能想看看[算法組成](http://en.wikipedia.org/wiki/Algorithmic_composition) –
@gtgaxiola:是的,但它是很明顯,隨意選擇頻率不會產生大多數人會認爲美觀的結果。 –
@NiklasB。我只是說,因爲算法組合在流行的意義上不被認爲是「好」的。 12音調技術是一個可愛的過程,但是一個平庸的最終結果。 – gtgaxiola