Yet Another Max/MSP-Cocoa Communication

7,470 views
7,391 views

Published on

This slide presents cocoa_send / receive external objects for Cycling'74 Max/MSP, which enables simple and stable communication between Max/MSP and Native OS X Cocoa programming environment.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
7,470
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
39
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Yet Another Max/MSP-Cocoa Communication

  1. 1. Yet Another Max/MSP - Cocoa Integration cocoa-send / cocoa-receive external objects Nao Tokui 1
  2. 2. Why Integrate? • Max/MSP ○ Useful for Audio / MIDI / Images .... !! Scalability × Hard to manage big data set. 2
  3. 3. Why Integrate? • Cocoa - Native OS X Environment ○ Lots of useful frameworks and easy-to-use tools for them. • Frameworks - CoreData, Bonjour, QuartzComposer... • Tool - Xcode, InterfaceBuilder... × Audio / MIDI API is very very complicated. • Core Audio / Core MIDI / Quick Time 3
  4. 4. Max/MSP Cocoa Bonjour Audio CoreData MIDI OpenGL 4
  5. 5. Conventional Ways • MIDI? • CoreMIDI - Simply Overkill! • Open Sound Control • Very flexible, but clumsy implementation • Not easy to use in Cocoa 5
  6. 6. NE W cocoa_send / receive external object 6
  7. 7. Features ○ Simple to implement and Just works! ○ No need to “connect” explicitly (Always Connected!!) × Limited to local use OK NG! Cocoa Max Cocoa Max http://commons.wikimedia.org/w/index.php?title=Image:MacBook_Pro_transparency.png 7
  8. 8. Technical Details • cocoa_send/receive use OS X’s Inter- Application Communication called “Distributed Notifications” • eg.) Preference Pane • http://developer.apple.com/documentation/UserExperience/Conceptual/ PreferencePanes/Tasks/Communication.html 8
  9. 9. How to Use #1 1. Download cocoa_send/receive objects and sample application from www.naotokui.com 2. Set “Channel Names” • These names will be used to identify communication channels. They must be shared between Max objects and Cocoa project. Max ← Cocoa Max → Cocoa 9
  10. 10. How to Use #2 3. Open Cocoa_SR_Test folder and include Cocoa_SR_Test.h/ m in your own Cocoa Project. 4. Set the same Channel Names #define CH_NAME_FROM_COCOA @quot;FROM_Cocoaquot; #define CH_NAME_TO_COCOA @quot;TO_Cocoaquot; 5. Use -sendString: -sendFloat:/- sendInteger methods to send. 10
  11. 11. Sending from Cocoa • Use -send**: methods. - (void) sendString: (NSString *) str; - (void) sendFloat: (float) number; - (void) sendInteger: (int) number; 11
  12. 12. Receiving in Cocoa • Customize callbackWithNotification: a callback function: - (void) - (void) callbackWithNotification:(NSNotification *)myNotification { NSDictionary *dict = [myNotification userInfo]; // a string value received NSString *string = [dict valueForKey:SHARED_DICTIONARY_KEY_FOR_ANYTHING]; if (string) { // Do something } ..... • Dictionary Keys: SHARED_DICTIONARY_KEY_FOR_FLOAT SHARED_DICTIONARY_KEY_FOR_INT SHARED_DICTIONARY_KEY_FOR_ANYTHING 12
  13. 13. Usage Cases • Phonethica Rondo / VoiceCosmos http://www.ntticc.or.jp/Archive/2006/Openspace/network/phonethica_j.html • Matarisama Binary 1.2 (by N.Nagano) 13
  14. 14. Links • Download • www.naotokui.com/home/Downloads.html 14

×