LFO教學(下):延伸自我生成

作者:Gregory Taylor 譯者:Rio

現在我們有了自我生成的patch,也有聆聽這patch的方法。接著我想要做些改進與延伸,來給定大的音樂結構。換句話說,我們要建立指令,來命令此patch如何自我生成音樂。我相信世上有很多人希望她生成重複類似的結果,但我自己希望她有更大的自由度。此篇教學將會加入一些此方向的改變。

此處下載patch

generator_patchsm.jpg

點擊上圖可看大圖。

Coll的可變程度

在玩以上LFOur – LFOur_vst與LFOur_out這幾個patch的時候,我雖能用coll中儲存的少量音高值,就能生成大量的不同型態結果,但我還想令她有更大程度的變異。有些時候(如操作VST鼓機時),僅有少量的選擇是比較好的。要限制這選項的多寡,我可改變用於對映輸出值的coll物件之內容,或實驗四個LFO的個別音符時長值與其採樣速率的搭配方式。在實驗的過程中,我發現我可以使用多個coll物件強化這功能,或改變用於採樣的coll之中音高範圍及其個數。(就是說,如果我想要產生反覆音,用於對映至輸出的coll之中將只有兩個選項)

經考慮後,既然加上這兩項功能並不困難,我就把他倆都加上了。

首先,我想用多個coll物件改變LFOur輸出所對映的音高組合。我多加上了個receive物件,連接到coll。

notemap_new.jpg

將refer [後接coll物件名稱],這訊息送入s ref物件時,就能切換對映輸出的coll。

要選擇coll物件中部分範圍,就得在notemap子patch中加上兩個inlet物件。另外還得在最上層patch內加上兩個數字方塊,設定scale物件對映LFO輸出到MIDI音高數值時的最大最小值。這麼做還有一個好處,如此,我們可以不管所使用的coll的內容多寡,而將之設定到任意的大小區間內,再對映到不同個數的coll物件內容(只要更改其最大值)。或者我可以更改兩個數值,對映到coll物件內容中的部份子集合(如0-15, 8-23, 60-63等)。這兩個設定最大最小值的數字方塊也給定了名稱,會被加入到pattr機制內,所以現在呼叫儲存預設值時也能控制。

兩物件的小故事

notemap子patch的最右方有新加入的兩個inlet輸入接點,用來設定scale物件的引數。任何一位有經驗的Max玩家都會告訴你,有兩個物件可以用來作數值的線性對映:scale物件與zmap物件。他們倆都能將一組數值對映到不同範圍間。在這裡,是將LFOur生成的0-127間數值對映到coll物件的個數。但我使用scale物件有個特別的理由:我可以顛倒對應時的數值,得到反向的coll物件數值對映。也就是說,我可以正向或反向讀取coll。

註:scale與zmap物件的差異很小:scale物件雖然可讓你反向對映數值,但他不會限定輸出數值到你給定的範圍之內。如果你給了他一個很大的值,他將會忠實地對映到給定輸出範圍之外。

two_objects.jpg

zmap物件會限制輸出大小,但是他沒辦法反向對映輸出(似乎沒有太多人留意到這點)。因為用了scale物件,所以我加上另個數字方塊,並給定它的最小與最大數值(從Insepctor設定)來限定輸出範圍。設好後,你就沒辦法鍵入超過0-63間的數值了。我寫patch時常用這小技巧。

操控自我生成的方向

有多留意的讀者會注意到LFOurGenerator中,最大的改變在於transport物件周圍有四個從未見過的物件:timepoint。

transport_additions.jpg

每個timepoint物件都有各自的引數,以小節數,拍數,與unit數來給定一個時間點。這物件的功能很簡潔:當transport物件到了該個時間點時就會送出bang訊息。在此patch中,timepoint控制了下面幾件事情:

  • 第一個timepoint會遞增計數器counter物件,所以會逐一呼叫LFOurGenerator的預設值。這些預設值控制LFOur的來源,音高值,及數值範圍,以供採樣為輸入值。

timepoint1.jpg

  • 第二個timepoint物件則用counter演算出一連串數值,設定LFOur的採樣率。這數值將會被送到LFOur的receive L4samp_rate。設定更快的取樣率代表LFO所生成的數值序列變異程度會更大。

timepoint2.jpg

  • 第三個timepoint物件則用了textbutton物件作為開關,會交替送出refer sequence_1與refer sequence_2的訊息到notemap子patch中的receive物件,選擇儲存音高值的coll物件。

timepoint3.jpg

  • 第四個timepoint物件有多個功用:最重要且最有趣的,是他可以重設transport(將 0 訊息送入transport物件的右輸入點),就能創造出一個八小節的迴圈不斷重複。它同時可以控制counter與coll物件組,呼叫LFOur中的預設行進。最後,當counter完成了一個循環,會從其進位輸出點(carry count)送出bang訊息,關閉transport。

timepoint4.jpg

你會發現我還在用來初始化所有計數器及啟動/關閉transport的toggle開關之下,多加了個trigger物件。請仔細看看在transport物件附近的樣子。

transport_additions2.jpg

如果你解除鎖定,你會發現我將preset物件的第三個輸出接點,連接到umenu物件,以及與第二跟第三個timepoint物件相連的textbutton上。這是為了讓這些物件不被preset物件所控制。你可能會對連接到transport上的metro物件感到困惑。為什麼不乾脆用開關物件就好呢?這是為了要從tranport物件得到現在的小節/拍子/unit數值,它必須接收自己的bang訊息,而metro可以提供這樣的訊息。要注意這metro有兩個屬性設定:autostart與autostartime。設定autostart代表在transport啟動時,metro物件也會跟著啟動。autostartime屬性則令metro啟動時從timepoint 0開始計數。這是我們之所以可以看見小節數/拍數顯示更新的原因。

結語

這個patch可以讓我們設定更大程度的自我生成結構。它用了timepoint物件來設定在甚麼時候發生變化。並且不單單只是改變patch本身的設定(使用preset物件),同時也改變了LFOur自身的行為。

當然,你可以繼續延伸這patch。你可以將同樣的控制訊息送到你自己的Max patch中,控制不同的VST樂器如何混音,調整plug-in的設定,等等等等。我這裡有個MP3作品,用到了這patch,並加入了一些新的部份,但這些部分就留給你自己想像。這殘響是我最近從Gol Gumbaz下載的Altiverb Impulse Response,我很愛它,聽起來真如臨現場。

最後,希望這三篇文章能帶給你些靈感。我相信你可以從這些東西開始,創造出自己的有趣混亂,期待下次再會!

     ||      ☛

2 comments so far

  1. MaryLin 四月 13, 2009

    Hello你好
    我最近在做一個專案
    與實驗電音表演有關
    我想做的是一場音樂與畫面同步的表演
    也就是一軌音樂對應一個視覺特效
    是live演出
    音樂的流程是這樣
    從合成器 鼓機 Keyboard等製造出的音樂
    line in到電腦
    再到Ableton live做出分軌
    最後要到MAX/MSP寫程式做出與畫面的同步
    並且立即呈現在畫面上
    就像是一場影音表演但少了VJ這個角色
    直接由樂器控制音樂與畫面
    但是我不清楚Ableton Live與MAX/MSP之間是否需要一個介面或是軟體連結他們
    讓MIDI可以立即進入MAX/MSP之後又立即匯出成畫面?
    這是目前讓我卡關很久的困擾
    所以想請教你一下
    謝謝!

  2. Rio 四月 24, 2009

    MaryLin,不需要介面的,只要能輸出midi out到Max就能用Jitter做出畫面了。新版本max in live還能把所有東西都整合進ableton live呢,還沒出就是了。

Leave a comment

Please be polite and on topic. Your e-mail will never be published.

訂閱

索引

|

討論區

留言

Misc