{"id":156,"date":"2012-04-17T14:32:00","date_gmt":"2012-04-17T13:32:00","guid":{"rendered":"http:\/\/www.celesteh.com\/blog\/2012\/04\/17\/liveblogging-modality-modal-control-in\/"},"modified":"2015-06-19T00:23:18","modified_gmt":"2015-06-18T23:23:18","slug":"liveblogging-modality-modal-control-in","status":"publish","type":"post","link":"https:\/\/www.celesteh.com\/blog\/2012\/04\/17\/liveblogging-modality-modal-control-in\/","title":{"rendered":"LiveBlogging: Modality &#8211; modal control in SuperCollider"},"content":{"rendered":"<p>by many people<\/p>\n<p>Modality is a loose collaboration to make a toolkit to hook up controllers to SC.&nbsp; Does mapping, including some complex stuff and some on-the-fly stuff.<\/p>\n<p>Marije spoke a bit of how they began collaborating<\/p>\n<p>Concept &#8211; support many devices over many protocols. Make a common interface. Easily remap.<\/p>\n<h3>\nDevices <\/h3>\n<p>\nThey currently support MIDI and HID. the common interface is MKtl. Provides a system to process the data. They have templates. Templates for common ways of processing. Same interface for MKtl and MDispatch. (they may move to FRP (I don&#8217;t know what that is))<\/p>\n<p>Ktl quark is out of date.<\/p>\n<p>(I think I might be interested in contributing to this project &#8211; or at least provide templates for stuff)<\/p>\n<p>Different protocol have different transport mechanisms. Things very by OS. Different controllers have different semantics.<\/p>\n<p>A general solution is not trivial.<\/p>\n<p>Scaling is different on different OSes. Names of devices may have variations. MIDI has some device name issues.&nbsp; real MIDI (non-usb) will not report their names, but use MIDI ports.&nbsp; Similar issues will arise with OSC or SerialPort.&nbsp;<\/p>\n<p>The device description index is an identity dictionary. It&#8217;s got some NanoKontrol stuff in it. I am definitely interested in this&#8230;<\/p>\n<p>They&#8217;ve got some templates, but it&#8217;s still a bit vapourware.<\/p>\n<p>For every button or input on your device, they define what it is, where it is, etc.&nbsp; This is good stuff.&nbsp; You can also set the I\/O type.<\/p>\n<p>Device descriptions have names, specifications, platform differences, hierarchical naming (for use in pattern-matching). You can programmatically fill in the description<\/p>\n<p>nanoKontrol, Gamepad, DanceMat, a bunch of things.<\/p>\n<h3>\nEvents and signals<\/h3>\n<p>Functional reactive processing. Events, data flow, change propogation. FRP &#8211; functional reactive programming<\/p>\n<p>These are functions without sideFX until you get to the output phase.<\/p>\n<p>In the FP Quark &#8211; functional programming Quark.<\/p>\n<p>Events are encoded in an event stream.&nbsp; Event Source with a do method adds a side effect.&nbsp; When somethng happens (is &#8220;fired&#8221;), do the do.&nbsp; Only event sources can be fired.<\/p>\n<p>the network starts with an event source.&nbsp;<\/p>\n<p>Signals are similar but have state? You can ask for the value and change it.<\/p>\n<p>To create the network use combinators.<\/p>\n<p>inject has state internally.<\/p>\n<p>Dynamic Event Switching limits and event depending on a selector.&nbsp; this is kind of like the gate thing in max.<\/p>\n<p>With Modality, every control has an elements, every element has a singal and a source. Controls have keys.<\/p>\n<p>You can combine values, attach stuff to knob changes. Easy to attach event streams to functions.<\/p>\n<p>this is complex to describe, but works intuitively in practice.&nbsp; You can do deltas, accumulators, etc.<\/p>\n<h3>\nClosing remarks<\/h3>\n<p>this is on github, but it not yet released.&nbsp; depends on the FP quark.<\/p>\n<p>Needs gui replacements.&nbsp; Needs a backend for OSC devices.<\/p>\n<p>Needs some hackin in the SC source.<\/p>\n<h3>\nQuestions<\/h3>\n<ul>\n<li>Would you be interested in doing the descriptors in JSON, so it can be used by non-SC guys? Yeah, why not.&nbsp; This is a good plan, even.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>by many people Modality is a loose collaboration to make a toolkit to hook up controllers to SC.&nbsp; Does mapping, including some complex stuff and some on-the-fly stuff. Marije spoke a bit of how they began collaborating Concept &#8211; support many devices over many protocols. Make a common interface. Easily remap. Devices They currently support &hellip; <a href=\"https:\/\/www.celesteh.com\/blog\/2012\/04\/17\/liveblogging-modality-modal-control-in\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">LiveBlogging: Modality &#8211; modal control in SuperCollider<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[1],"tags":[110,54,64],"class_list":["post-156","post","type-post","status-publish","format-standard","hentry","category-uncategorised","tag-hid","tag-live-blog","tag-supercollider"],"_links":{"self":[{"href":"https:\/\/www.celesteh.com\/blog\/wp-json\/wp\/v2\/posts\/156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.celesteh.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.celesteh.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.celesteh.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.celesteh.com\/blog\/wp-json\/wp\/v2\/comments?post=156"}],"version-history":[{"count":1,"href":"https:\/\/www.celesteh.com\/blog\/wp-json\/wp\/v2\/posts\/156\/revisions"}],"predecessor-version":[{"id":2355,"href":"https:\/\/www.celesteh.com\/blog\/wp-json\/wp\/v2\/posts\/156\/revisions\/2355"}],"wp:attachment":[{"href":"https:\/\/www.celesteh.com\/blog\/wp-json\/wp\/v2\/media?parent=156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.celesteh.com\/blog\/wp-json\/wp\/v2\/categories?post=156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.celesteh.com\/blog\/wp-json\/wp\/v2\/tags?post=156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}