advanced multimedia development

20
Advanced Multimedia Development MUMT 402 E-230 (UCL) Tuesday 4:35pm -7:25pm Ichiro Fujinaga [email protected]

Upload: lassie

Post on 05-Jan-2016

28 views

Category:

Documents


0 download

DESCRIPTION

Advanced Multimedia Development. MUMT 402 E-230 (UCL) Tuesday 4:35pm -7:25pm Ichiro Fujinaga [email protected]. Introduction. Overview of this class Review First object: bang. Overview of class. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Advanced Multimedia Development

Advanced Multimedia Development

MUMT 402

E-230 (UCL)

Tuesday 4:35pm -7:25pm

Ichiro Fujinaga

[email protected]

Page 2: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

Introduction

Overview of this classReviewFirst object: bang

Page 3: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

Overview of class

Design, programming, and deployment of music and audio in multimedia production. Topics include: complex MIDI programming Low-level audio synthesis algorithms interactive music timing and scheduling

Most of programming will be performed within the context of Max/MSP environment by developing external objects in C.

Page 4: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

Mark distribution

15% Mid-term exam 25% Final exam 10% Participation  50% Assignments

Page 5: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

Assignments

Weekly assignmentsAssignment 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, documentation

Page 6: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

Contact

Email: [email protected]: www.music.mcgill.ca/~ichPhone: 398-4535x00944Office: 550 Sherbrooke W.Office hours: Any time via email or by

appointment

Page 7: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

Music Technology Computer Lab (E230) and linux accounts

Get MTCL account from Darryl Cameron ([email protected])

Get linux (shell, sftp) account on music.mcgill.caCreate your web home page (assignment #1)

Basic personal info Links to your classes Place to post your assignments

Page 8: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

Review I

What is:MaxMSPOOP

Class Objects Messages Encapsulation Inheritance (not implemented in Max/MSP)

Page 9: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

Review II

What is:CompilerLibraryLinkerShared library

DLL Plugin External objects

Page 10: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

Writing max External Objects

Initializationmain()Definition of methods to create new objectDefinition of methods to bind to other

messages

Page 11: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

Preparation

Documentation Max/MSP Externals Tutorial v3.2 External Objects for Max and MSP 4.3

Programming environment Xcode 2.1

Page 12: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

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

Page 13: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

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

Page 14: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

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

Page 15: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

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

Page 16: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

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)  

Page 17: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

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)  

Page 18: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

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

Page 19: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

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()

Page 20: Advanced Multimedia Development

Ichiro Fujinaga MUMT 402: Week 0

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