1 / 18

Advanced Multimedia Development

Advanced Multimedia Development. MUMT 402 E-230 (UCL) Tuesday 4:35pm -7:25pm Ichiro Fujinaga Ich@music.mcgill.ca. Introduction. Overview of this class Review First object: bang. Overview of class.

Download Presentation

Advanced Multimedia Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Advanced Multimedia Development MUMT 402 E-230 (UCL) Tuesday 4:35pm -7:25pm Ichiro Fujinaga Ich@music.mcgill.ca

  2. Introduction • Overview of this class • Review • First object: bang MUMT 402: Week 0

  3. Overview of class • Design, programming, and deployment of music and audio in multimedia production. Topics include: complex MIDI programming, audio synthesis algorithms, interactive music. Most of programming will be performed within the context of Max/MSP environment by developing external objects. • Mark Distribution • 15% Mid-term exam  • 25% Final exam  • 10% Participation   • 50% Assignments MUMT 402: Week 0

  4. Assignments • Weekly assignments • Assignment policy • All assignments are due at midnight of the due date. • Late assignments within 48 hours past the deadline will be given either D or F. • Assignments submitted after 48 hours past the deadline will be given F. • Collaboration (www.mcgill.ca/integrity) • Neatness, elegance MUMT 402: Week 0

  5. Contact • Email: ich@music.mcgill.ca • Webpage: www.music.mcgill.ca/~ich • Phone: 398-4535x00944 • Office: E233 • Office hours: Fri. 3-5pm or by appointment MUMT 402: Week 0

  6. Music Technology Computer Lab (E230) and linux accounts • Get MTCL account from Darryl Cameron (darryl@music.mcgill.ca) • Get linux (shell, sftp) account on music.mcgill.ca • Create your web home page (assignment #1) • Basic personal info • Links to your classes • Place to post your assignments MUMT 402: Week 0

  7. Review I What is: • Max • MSP • OOP • Class • Objects • Messages • Encapsulation • Inheritance (not implemented in Max/MSP) MUMT 402: Week 0

  8. Review II What is: • Compiler • Library • Linker • Shared library • DLL • Plugin • External objects MUMT 402: Week 0

  9. Writing max External Objects • Initialization • main() • Definition of methods to create new object • Definition of methods to bind to other messages MUMT 402: Week 0

  10. The bang object: Initialization #include "ext.h” // Required for all Max external objectsvoid *this_class; // Required. Global pointing to this class • Required for all objects • ext.h in Max/MSP SDK • contains other header files • prototypes • this_class is used as a pointer to this class MUMT 402: Week 0

  11. The bang object: Initialization (data) typedef struct _bang // Data structure for this object{ t_object b_ob; // Must always be the first field; // used by Max void *b_out; // Pointer to an outlet} t_bang; • Must start with t_object (see ext_mess.h) • Max convention: first letter followed by underscore • Every object has an inlet • b_out is a pointer to an outlet MUMT 402: Week 0

  12. The bang object: Initialization (methods) // Prototypes for methods: // need a method for each incoming message void *bang_new(void); // object creation method void bang_bang(t_bang *bang); // method for bang message • Declaration of class methods that will respond to Max messages • Objects respond to messages from the Max environment • Objects receive messages (integer, float, symbol) in their inlets • Object’s methods will process these messages in some way and then send out messages using the object’s outlets • This bang object responds to: “new” and “bang” messages MUMT 402: Week 0

  13. The bang object: main() • When an object is created for the first time: • External object is loaded into memory • main() is executed once and only once • main() specifies how the object should be initialized: • Setup the class: • Allocate memory for the object • Specify method for the creation of instances of the object • Define messages that the object can respond to and bind each message to a method MUMT 402: Week 0

  14. The bang object: main() cont. void main(void) { // set up our class: create a class definition setup(&this_class, (method)bang_new, 0L, (short)sizeof(t_bang), 0L, 0); // bind method "bang_bang” to the "bang" message addbang((method)bang_bang);} } • Setup creates the class • Get pointer to the class, specify instance creation method, instance free method, size of each instance, GUI object. • addbang binds the method to “bang” message coming into the left inlet (addint, addinx, addmess, addft, and addftx) MUMT 402: Week 0

  15. The bang object: main() cont. int main(void) { // set up our class: create a class definition setup(&this_class, (method)bang_new, 0L, (short)sizeof(t_bang), 0L, 0); // bind method "bang_bang” to the "bang" message addbang((method)bang_bang); return (0); } • Setup creates the class • Get pointer to the class, specify instance creation method, instance free method, size of each instance, GUI object. • addbang binds the method to “bang” message coming into the left inlet (addint, addinx, addmess, addft, and addftx) MUMT 402: Week 0

  16. The bang object: The object creation function void *bang_new(void) { t_bang *bang; // create the new instance and return a pointer to it bang = (t_bang *)newobject(this_class); bang->b_out = bangout(bang); // create a bang outlet return(bang);// must return a pointer to the new instance } • Creates an instance of the class by newobject() • Outlet is created by bangout() and assigned in the object’ s struct MUMT 402: Week 0

  17. The bang object: Handling the “bang” message void bang_bang(t_bang *bang) { // send a bang to the outlet bang->b_out outlet_bang(bang->b_out); } • This method is called when “bang” message is received at the left inlet, because of addbang(), • The bang_bang method simply sends a “bang” messages via the outlet via a max method, outlet_bang() • The outlet, bang->b_out was created by bangout() MUMT 402: Week 0

  18. Ich’s C style • no space before commas and semicolons • no space after function names • space after commas and semicolons • space before and after an operator • space after keywords • vertically align matching braces (optional) • no magic numbers MUMT 402: Week 0

More Related