題:
尋找高級音樂編程語言
Roland Bouman
2014-04-12 04:31:57 UTC
view on stackexchange narkive permalink

我正在尋找一種高級編程語言。我進行了一些谷歌搜索,發現了許多示例(此處有些摘要 http://users.soe.ucsc.edu/~sasha/proj/musicpaper.pdf),但是我還沒有發現

我要尋找的主要功能是該語言可以讓我根據某種輸入材料(一種旋律)來創作音樂,然後讓我將其餘部分指定為一系列初始輸入材料的轉換。我要尋找的轉換類型是碎片化(指定原始圖像的一個子集),換位(音高變化),擴充和縮小(音高變化持續時間),倒置(音高變化方向),逆行(音高變化順序)。

是否存在類似的東西?

更新:我目前正在嘗試使用music21( http://web.mit.edu/music21/)。它可能會允許我執行此操作,但可能不會以這樣的方式進行編輯或閱讀。

我在win32上使用c ++。它不是工具,而是您使用它創建的項目。到目前為止,這是一個定義很鬆散的項目...讓我們面對現實。人們創造出比計算機更好的音樂。永遠都會。
@StephenHazel我不需要的是能為我生成音樂的計算機程序。我要的是一個計算機程序,該程序可以讓我根據輸入內容將構圖表達為一系列變換。您的c ++示例沒有意義。假設我要一個程序讓我根據文本模式提取子字符串,那麼您肯定會向我推荐一些正則表達式庫嗎?那麼,我要的是一種語言,該語言可以讓我基於一系列定義明確的輸入音樂操作來創作音樂。
十二 答案:
Martin Drautzburg
2014-04-14 02:51:31 UTC
view on stackexchange narkive permalink

除了您已在本文中提到的Haskore和其他人提到的Haskore之外,還有 SuperCollider Pure Data

我完全理解你的問題。我自己一直在尋找如此高級的東西。這是我對此的個人想法:

我還沒有發現任何好的東西,並且得出的結論是,那裡沒有現成的普遍接受的抽象。這可能是因為每個人都對延遲,鋸齒波或Butterworth濾鏡達成共識,但沒有公認的寫音樂方法。

因此,最好的選擇是找到一種具有足夠“抽象能力”,因此您可以編寫自己的抽象。毫無疑問,Haskell就是這樣的野獸,但是學習起來很困難(儘管很有意義)。

我目前正在與Supercollider達成協議。我是幾天前才開始的,所以我不知道能走多遠。它對我來說至少要做的就是從MIDI中解放出來。我可以隨時控制聲音。即使您(如您所說)僅對編寫音符序列轉換感興趣,您也可能很快就淘汰了這種方法,因為它聽起來都是一樣的。然後,您可能希望對樂器的控制超出Midi所允許的範圍。至少這是我現在的位置。

但是Haskell也有OSC綁定,因此我可以將Supercollider用於聲音合成,將Haskell用於構圖合成。我還在考慮將兩者結合的球員綜合功能。

馬丁,謝謝你!我將檢查您提到的產品。就像您說的,我開始相信目前沒有任何東西可以滿足我的要求。我目前正在研究將其與JMusic或JFugue配合使用(因為我對Java感到滿意)。但是,我一定會考慮您對Haskell的建議。
evamvid
2014-04-12 04:54:44 UTC
view on stackexchange narkive permalink

請參見此特殊問題。我不確定這是否正是您所需要的,但這可能會有所幫助。

因為我只是鏈接另一個問題,所以通常將其作為註釋。但是,我尚未對此網站發表評論權限。

謝謝!這個問題肯定有很多答案,比我鏈接的論文多得多的例子。尚不確定我要尋找的東西是否在那裡,但看起來很有希望。再次感謝!
CoolGuy
2014-04-12 10:31:15 UTC
view on stackexchange narkive permalink

您可能對CHucK編程語言感興趣。

https://www.coursera.org/course/chuck101

您可以添加更多有關此語言的信息嗎?
謝謝。當我第一次起草這個問題時,我偶然發現了CHucK,然後再發布。我玩了一段時間,我覺得它很酷,但是對於我來說,這太低了。例如,在CHucK中,我沒有儀表,秤,甚至音符。只是合成器和時間。因此,Chuck距離我的真正需求還差一兩層。
Lee Kowalkowski
2014-04-15 15:26:03 UTC
view on stackexchange narkive permalink

使用跟踪器軟件可能是另一種方法。您可以將跟踪器樂譜符號視為編程語言,將跟踪器播放器視為編譯器/解釋器。

您可以加載和播放很多音樂模塊(歌曲)。這些都是一直共享的。

您可以直接使用Tracker軟件編輯“輸入音樂”(例如 OpenMPT)。

有很多開源庫,可讓您以這種格式播放音樂,例如: http://xmp.sourceforge.net。因此,將源代碼帶到播放器上可能會讓您領先於通過程序來處理歌曲的各個方面。

這是多少台計算機遊戲播放了音樂(尤其是較早的街機遊戲,其中存儲了數量有限,無法提供最終歌曲的完整樣本數據)。

許多跟踪器模塊播放器已經允許粗暴的歌曲控制;靜音樂器,調換樂器,靜音軌道,更改速度,跳至樂曲位置。遊戲已經可以與遊戲內事件同步地實時執行粗略的歌曲控制(在遊戲角色使用無敵加電時或在遊戲結束時,跳到不同模式集或取消靜音通道中的相同模式位置)級別的戰鬥。)

許多跟踪器編輯器也是開源的( MilkyTracker,OpenMPT),並且具有轉調歌曲部分的功能(因為它們重新敲擊應用程序中的鍵盤快捷鍵)以及播放歌曲(因為歌曲編輯器也會播放歌曲)。

希望這會給您一些想法。儘管不是傳統的編程語言。

Dave
2014-04-14 22:16:34 UTC
view on stackexchange narkive permalink

可以考慮將 Lilypond裝入此模型:儘管它更專注於排版音樂,但它可以輸出樂譜的MIDI表示。但是,我發現,就基本用法而言,要在midi輸出中實現表達效果並不容易。此外,它沒有實時功能。我之所以提到它,主要是因為如果您最終滾動自己的系統,它可能會提供實現高級接口的想法(或代碼)。

Édouard
2014-04-12 05:09:41 UTC
view on stackexchange narkive permalink

嘗試使用 OpenMusic(一種用於符號音樂的可視編程語言)。剛開始時有點令人恐懼,但本教程應該使您快速入門。

dorien
2014-04-16 00:30:50 UTC
view on stackexchange narkive permalink

我不確定它們是否包含您需要的所有功能。但是java jmusic庫非常廣泛,我認為這是您的最佳選擇。

否則,其他選項將是ircam的JFugue,music21(python)或視覺編程語言 CSound,也非常廣泛。

uzjsme
2014-04-14 21:45:08 UTC
view on stackexchange narkive permalink

Édouard提到了OpenMusic,有點類似,PatchWork的後代是PWGL( http://www2.siba.fi/PWGL/)。從語言中查看您的需求可能會很有用,尤其是PWGL的“約束”部分。學習曲線很陡峭(LISP),但值得您花時間學習。一些很棒的外部庫也可以控制節奏。祝你好運

Dave Yarwood
2014-04-16 00:25:38 UTC
view on stackexchange narkive permalink

我認為泛音具有您正在尋找的功能以及更多功能。這是一個Clojure庫,可作為SuperCollider的強大前端。學習如何使用它可能需要一段時間(特別是如果您是Clojure的新手),但是一旦使用它,它就會變得強大而靈活。您可以執行類似將旋律定義為一系列音階間隔的操作,然後將其與任何特定的音階和音符持續時間值序列組合在一起,從而為您提供了很大的自由來處理某個主題的變奏。即使您不熟悉Clojure,也值得一試!

FWIW,我正在開發自己的Overtone前端(我知道;這將是一個前端。前端),使您可以充分利用其功能,但使用更簡單的語法,而不是程序員,更著眼於音樂家/作曲家。目前尚無法使用,但希望在不久的將來有一天。在此之前,我衷心推薦Overtone:)

Chochos
2014-09-19 20:47:19 UTC
view on stackexchange narkive permalink

您想要的聲音類似於安德魯·索倫森(Andrew Sorensen),這真是太神奇了。他使用一種叫做 Extempore的語言,與Lisp類似,但其中包含一些C,它使您可以實時定義和播放內容。您可以在本視頻中看到這一點,他在其中進行現場編碼。

我想您可以在此之上構建一些東西,例如音階,然後再構建音階,這樣您就可以操縱音階,而不必一直直接使用半音。
大概可以。但是我正在尋找已經有的東西。從目前為止我所看到的,music21最接近我想要的。
TrizioMusic
2015-07-20 07:39:19 UTC
view on stackexchange narkive permalink

幾年前,我玩了一種叫做KeyKit的語言。它將音樂表示為短語對象,並具有音符,和弦的概念,以及大量功能,可通過編碼和使用內置的簡化圖形控制器來操縱和生成音樂。我認為這門語言很容易學習。我認為創建它的人仍在使用它,您甚至可以從他那裡得到問題的答案:

http://nosuch.com/keykit/

W. Dijkgraaf
2016-12-17 01:21:29 UTC
view on stackexchange narkive permalink

您可能正在尋找的是 Opusmodus。編程語言是Common Lisp。它帶有一個龐大的庫,專門用於合成功能,以及一個OMN(Opusmodus符號),可將您的函數輸出轉換為樂譜以及內部或外部MIDI播放器。最後但並非最不重要的一點是,它具有實時編碼功能,並且可以MIDI和MusicXML格式導出。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...