Max:数据采集

18mDataCollections.maxpat
18mDataCollections.maxpat

1. #1:coll物件的基本使用,点击三个消息框,将建立一个小型的索引,当第一个数字框分别输入0、1、2的时候,底部的数字框将分别得到20、-50和33。双击coll物件,将打开一个编辑窗口,在上面你能看到,消息框的第一个数字为索引,第二个数字则为它们对应的值。其实coll物件完成的就是一个索引值设置的储存机制。

2. #2:与#1一样,只不过是索引换为了符号(单词)。我们注意到要以符号作为索引,必须在存储信息之前加上“store”。

3. #3:已经事先储存了数据在其中。选择0~3,在底部的消息框内会显示不同的句子(由prepend set实现)。用文件检查器打开本例的coll物件,看到属性“Save Data With Patcher”被选中。当这个属性被设置后,当patcher文件被保存后任何储存于这个coll物件的信息都将被写入,并且在patch再次打开后能被立即使用。

4. #4:选中toggle触发drawit子patch内prepend在lcd上画圈,makenote/noteout物件发声。coll物件中存储了150000个索引,prepend画的圈依它们对应的值作为纵坐标,makenote/noteout用它们对应的值乘以127后触发MIDI音符。coll物件存储的值位于一个叫做egg的txt文件中,这样做的好处是,当你需要存储大量数据饿的时候,为你的patcher减肥。

5. #5:现双击打开名为cues的coll物件索引,然后顺序选择数字框的0~7,或者next和prev消息框可以在整个coll物件的索引内实现步进式跳转(需要route物件的配合)。他旁边那一个小patch:双击打开同名的coll物件,我们可以看到,它和#5coll的内容是一致的,因为它俩同名。这很想value物件分享数据的方式。同名coll物件共享可以在整个patch甚至是子patch内实现。

6. 右下角的例子:一个route物件的实例,其实就是将各种输入和其对应的输出分流,你可以通过触发指定的输入得到你要的输出,如同这个物件的名字,你可以把它理解为一个路由器。注意最后一个出口是留给无法识别的信息的,比如此例中的zeppo。在本例中,对无法识别输入信息的处理是打印nomatch内容到Max窗口。

本例内新物件:
coll:存储并编辑一组不同的消息集合
route:有选择性的从一个特定的出口通过一个输出

Rio老师关于储存coll物件内容的解读(采于Max 4.6中文教材课程37:资料结构):
一但你將訊息存入coll中後,你可以將之設定為與程式一併儲存。解除視窗鎖定,選擇coll物件,按下Object選單中的Get Info…,勾選Save coll with Patcher選項。

或者你可以將coll物件內容存成獨立檔案(此內容可被用在其他程式內)。你可打開coll物件的文字視窗後,選擇File選單中的Save as…。或是送入write訊息到coll物件內,打開儲存文件對話框。

要由檔案載入coll物件,你可以直接將檔名當成其引數輸入,或是送入read訊息到coll物件,打開開啟文件對話框。

Be Sociable, Share!

发表评论

电子邮件地址不会被公开。 必填项已用*标注