ชื่อของ Object และ Argument

ใน Tutorial นี้ ผู้เขียนจะแนะนำ Object ใหม่ให้รู้จักกันครับ Object นี้ชื่อว่า metro คงจะพอเดาได้ว่าทำหน้าที่เป็นเมโทรโนม (เครื่องให้จังหวะ) สังเกตเห็นว่าในกล่องของ Object จะมีตัวเลขอยู่ข้างหลังคำว่า metro ตัวเลขนี้จะมีค่าเป็นมิลลิวินาทีซึ่งเป็นระยะห่างของช่วงเวลาของแต่ละ “ติ๊ก” (เมโทรโนมจะเสียงติ๊กเป็นจังหวะคงที่)

ตัวเลขที่อยู่หลังคำว่า Metro นี้แหละครับ ที่เราจะเรียกว่า argument ซึ่งเราจะเห็น Argument ของ Object Print มาก่อนแล้ว Argument จะเป็นข้อมูลในการทำงานของ Object นั้น ๆ ยกตัวอย่าง แม่จะให้เราไปซื้อของที่ตลาด แม่จะบอกเราว่าซื้ออะไรบ้าง สิ่งของที่จะซื้อ เราจะเรียกว่า Argument

ในบาง Object จะต้องการ Argument ทุกครั้งในการทำงาน เหมือนกับว่าแม่จะให้เราไปซื้อของ ก็จำเป็นต้องมีรายชื่อของสิ่งของที่ต้องการจะซื้อ อย่างในกรณีของ metro จะใช้ Argument เป็นค่าเริ่มต้นสำหรับความเร็วของการให้จังหวะ เมื่อ metro เริ่มทำงาน มันจะส่ง Bang Message ออกไปทุก ๆ n มิลลิวินาที (โดย n เป็น Argument) จนกว่าจะได้รับคำสั่งให้หยุด แต่หากไม่มีค่า Argument พิมพ์ลงไป metro จะมีค่าเริ่มต้นที่ 5 และจะส่ง Bang ออกไปทุก ๆ 5 มิลลิวินาที

Metro จะมี Inlet อยู่สองตัว Inlet ซ้ายจะรับคำสั่งเพื่อที่จะเริ่มหรือหยุดการทำงานของเมโทรโนม โดยเมโทรโนมจะทำงานเมื่อรับจำนวนที่ไม่ใช่ศูนย์เข้ามาทาง Inlet ซ้าย และจะหยุดเมื่อรับค่า 0 หรือเราจะใช้ Bang ทำการเริ่มและใช้คำว่า Stop ในการหยุดก็ได้ ส่วน Inlet ขวา จะรับจำนวนเข้ามาเพื่อทำการเปลี่ยนคาบเวลาของการส่ง Bang ออกทาง Outlet เป็นค่าค่านั้น

– ทดลองเปิดและปิด Metro และสังเกตสิ่งที่พิมพ์ออกมาทางหน้าต่าง Max

– ทดลองส่งจำนวนต่าง ๆ เข้าไปยัง Outlet ของ Metro และสังเกตการณ์เปลี่ยนแปลงของความเร็วที่พิมพ์ออกมา เราสามารถทำการเปลี่ยนความเร็วในขณะที่เมโทรโนมยังทำงานอยู่ได้แต่การเปลี่ยนจริง ๆ จะเริ่มที่ Bang ถัดไป

การที่ Metro ส่ง Bang ออกมาเป็นจังหวะ ทำให้เราสามารถใช้ประโยชน์ Metro ในการ Trigger Object อื่น ๆ เป็นจังหวะที่เราสามารถกำหนดได้ครับ

สรุป

เมื่อเราพิมพ์ชื่อ Object ที่เราจะใช้งานลงไปแล้ว เราสามารถใส่ค่า Argument หลังชื่อของ Object นั้น ๆ บาง Object จะใส่หรือไม่ใส่ Argument ก็ได้ (Optional Argument) ขณะที่บาง Object ก็ต้องการ Argument ในการเริ่มการทำงาน (Obligation Argument) ถ้าหากเราไม่ใส่ Argument ให้กับ Object ที่เป็น Optional Argument โปรแกรม Max จะใส่ค่าเริ่มต้นลงไปให้เอง

ศึกษาเพิ่มได้จาก Max Reference หัวข้อ

Metro Output bang, at regular intervals