{"id":124,"date":"2016-01-08T12:23:07","date_gmt":"2016-01-08T12:23:07","guid":{"rendered":"http:\/\/www.rangakrish.com\/?p=124"},"modified":"2016-01-08T23:50:03","modified_gmt":"2016-01-08T23:50:03","slug":"how-to-use-reaktor-with-opusmodus","status":"publish","type":"post","link":"https:\/\/www.rangakrish.com\/index.php\/2016\/01\/08\/how-to-use-reaktor-with-opusmodus\/","title":{"rendered":"How to Use Reaktor with Opusmodus"},"content":{"rendered":"<p>For those of you who do not know about <em><strong>Opusmodus<\/strong><\/em> (OM), it is a very powerful and flexible algorithmic music composition environment built in Lisp. It is available for the Mac.<\/p>\n<p>Today I wanted to understand how to make Opusmodus communicate with Reaktor 6 to play some tunes. The built-in documentation gives a couple of examples of how the interaction can be enabled, but I felt the explanation was too brief for a newbie. Nothing better than learning by experimenting!<\/p>\n<p>Let us get started.<\/p>\n<p>First you must configure the MIDI ports on the Mac. For this, launch the <em><strong>Audio MIDI Setup<\/strong><\/em> program located in the <em><strong>Utilities<\/strong><\/em> folder. Select <em><strong>Window&gt;Show MIDI Studio<\/strong><\/em> from the menu. Then double-click on the <em><strong>IAC Driver<\/strong><\/em> icon in the MIDI studio. This will display the IAC Driver properties dialog.<\/p>\n<figure id=\"attachment_125\" aria-describedby=\"caption-attachment-125\" style=\"width: 283px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/IAC-Driver.png\" rel=\"attachment wp-att-125\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" data-attachment-id=\"125\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2016\/01\/08\/how-to-use-reaktor-with-opusmodus\/iac-driver\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/IAC-Driver.png\" data-orig-size=\"490,520\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"IAC Driver\" data-image-description=\"&lt;p&gt;IAC Driver&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;IAC Driver&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/IAC-Driver.png\" class=\"size-medium wp-image-125\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/IAC-Driver-283x300.png?resize=283%2C300\" alt=\"IAC Driver\" width=\"283\" height=\"300\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/IAC-Driver.png?resize=283%2C300&amp;ssl=1 283w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/IAC-Driver.png?w=490&amp;ssl=1 490w\" sizes=\"(max-width: 283px) 100vw, 283px\" \/><\/a><figcaption id=\"caption-attachment-125\" class=\"wp-caption-text\">IAC Driver<\/figcaption><\/figure>\n<p>Make sure you have at least <em><strong>Bus 1<\/strong><\/em> in the list of MIDI ports available.<\/p>\n<p>To see if the ports can be accessed from Opusmodus, execute the function <em><strong>(midi-destinations)<\/strong><\/em> in OM Listener. This will return a list of MIDI ports available for our use. See figure.<\/p>\n<figure id=\"attachment_126\" aria-describedby=\"caption-attachment-126\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/MIDI-Destinations.png\" rel=\"attachment wp-att-126\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"126\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2016\/01\/08\/how-to-use-reaktor-with-opusmodus\/midi-destinations\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/MIDI-Destinations.png\" data-orig-size=\"584,186\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"MIDI Destinations\" data-image-description=\"&lt;p&gt;MIDI Destinations&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;MIDI Destinations&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/MIDI-Destinations.png\" class=\"size-medium wp-image-126\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/MIDI-Destinations-300x96.png?resize=300%2C96\" alt=\"MIDI Destinations\" width=\"300\" height=\"96\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/MIDI-Destinations.png?resize=300%2C96&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/MIDI-Destinations.png?w=584&amp;ssl=1 584w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-126\" class=\"wp-caption-text\">MIDI Destinations<\/figcaption><\/figure>\n<p>You can see that 4 ports have been set up on my Mac. Each port is shown with its number as well as name.<\/p>\n<p>Next launch Reaktor. Since Reaktor is going to receive our MIDI messages, we need to ensure that the ports are set up correctly. Select <em><strong>File&gt;Audio and MIDI Settings\u2026<\/strong><\/em> from the menu, and switch to the MIDI tab. <em><strong>IAC Driver (Bus 1)<\/strong><\/em> must be turned on if it is off. For now we are not concerned with\u00a0the other ports since we won\u2019t be using them.<\/p>\n<figure id=\"attachment_127\" aria-describedby=\"caption-attachment-127\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Reaktor-MIDI-Settings.png\" rel=\"attachment wp-att-127\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"127\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2016\/01\/08\/how-to-use-reaktor-with-opusmodus\/reaktor-midi-settings\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Reaktor-MIDI-Settings.png\" data-orig-size=\"500,364\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Reaktor MIDI Settings\" data-image-description=\"&lt;p&gt;Reaktor MIDI Settings&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Reaktor MIDI Settings&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Reaktor-MIDI-Settings.png\" class=\"size-medium wp-image-127\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Reaktor-MIDI-Settings-300x218.png?resize=300%2C218\" alt=\"Reaktor MIDI Settings\" width=\"300\" height=\"218\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Reaktor-MIDI-Settings.png?resize=300%2C218&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Reaktor-MIDI-Settings.png?w=500&amp;ssl=1 500w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-127\" class=\"wp-caption-text\">Reaktor MIDI Settings<\/figcaption><\/figure>\n<p>Next, we load the pre-installed synthesizer <em><strong>Green Matrix.ens<\/strong><\/em>. For this experiment, any synth will do since our objective is only to understand the interface between OM and Reaktor, and not to create professional music.<\/p>\n<figure id=\"attachment_128\" aria-describedby=\"caption-attachment-128\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Loading-a-synthesizer.png\" rel=\"attachment wp-att-128\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"128\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2016\/01\/08\/how-to-use-reaktor-with-opusmodus\/loading-a-synthesizer\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Loading-a-synthesizer.png\" data-orig-size=\"903,705\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Loading a synthesizer\" data-image-description=\"&lt;p&gt;Loading a synthesizer&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Loading a synthesizer&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Loading-a-synthesizer.png\" class=\"size-medium wp-image-128\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Loading-a-synthesizer-300x234.png?resize=300%2C234\" alt=\"Loading a synthesizer\" width=\"300\" height=\"234\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Loading-a-synthesizer.png?resize=300%2C234&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Loading-a-synthesizer.png?resize=768%2C600&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Loading-a-synthesizer.png?w=903&amp;ssl=1 903w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-128\" class=\"wp-caption-text\">Loading a synthesizer<\/figcaption><\/figure>\n<p>The next step is to configure the connection settings for this synthesizer. Click the <em><strong>EDIT<\/strong><\/em> button and then the <em><strong>Check mark<\/strong><\/em> at the top left to view the connection settings.<\/p>\n<p>We are only interested in the first two parameters. Select <em><strong>IAC Driver (Bus 1)<\/strong><\/em> for <em><strong>External<\/strong><\/em> and use either <em><strong>1<\/strong><\/em> or <em><strong>Omni<\/strong><\/em> for the <em><strong>Channel<\/strong><\/em> parameter.<\/p>\n<figure id=\"attachment_129\" aria-describedby=\"caption-attachment-129\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Connection-settings-for-the-synth.png\" rel=\"attachment wp-att-129\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"129\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2016\/01\/08\/how-to-use-reaktor-with-opusmodus\/connection-settings-for-the-synth\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Connection-settings-for-the-synth.png\" data-orig-size=\"905,705\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Connection settings for the synth\" data-image-description=\"&lt;p&gt;Connection settings for the synth&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Connection settings for the synth&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Connection-settings-for-the-synth.png\" class=\"size-medium wp-image-129\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Connection-settings-for-the-synth-300x234.png?resize=300%2C234\" alt=\"Connection settings for the synth\" width=\"300\" height=\"234\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Connection-settings-for-the-synth.png?resize=300%2C234&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Connection-settings-for-the-synth.png?resize=768%2C598&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Connection-settings-for-the-synth.png?w=905&amp;ssl=1 905w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-129\" class=\"wp-caption-text\">Connection settings for the synth<\/figcaption><\/figure>\n<p>Now we are ready to program in OM. The following is a simple program fragment to test the communication.<\/p>\n<figure id=\"attachment_130\" aria-describedby=\"caption-attachment-130\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Program-1.png\" rel=\"attachment wp-att-130\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"130\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2016\/01\/08\/how-to-use-reaktor-with-opusmodus\/program-1\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Program-1.png\" data-orig-size=\"489,266\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Program-1\" data-image-description=\"&lt;p&gt;Program-1&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Program-1&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Program-1.png\" class=\"size-medium wp-image-130\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Program-1-300x163.png?resize=300%2C163\" alt=\"Program-1\" width=\"300\" height=\"163\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Program-1.png?resize=300%2C163&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Program-1.png?w=489&amp;ssl=1 489w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-130\" class=\"wp-caption-text\">Program-1<\/figcaption><\/figure>\n<p>The important point to note here is the use of <em><strong>:port<\/strong><\/em> option in the instrument section with a value of <em><strong>0<\/strong><\/em>. You can also use the string name of the port if you wish. When you <em><strong>Evaluate and Play<\/strong><\/em> the program, you can hear the notes being played through Reaktor\u2019s Green Matrix synth.<\/p>\n<p>Let us now make it a bit more interesting. Opusmodus allows us\u00a0to send control parameters, in addition to MIDI notes. Likewise, Reaktor allows us\u00a0to manipulate device parameters through control codes. For this experiment, I decided to control the <em><strong>Pitch<\/strong><\/em> knobs of <em><strong>Oscillators 1, 2 and 3<\/strong><\/em> by sending values from the program. To do that, we\u00a0have to configure these UI controls such that each gets a unique control number and is enabled for MIDI input. See the screenshot (shows the settings for Oscillator 1).<\/p>\n<figure id=\"attachment_131\" aria-describedby=\"caption-attachment-131\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Configure-panel-controls.png\" rel=\"attachment wp-att-131\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"131\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2016\/01\/08\/how-to-use-reaktor-with-opusmodus\/configure-panel-controls\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Configure-panel-controls.png\" data-orig-size=\"905,706\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Configure panel controls\" data-image-description=\"&lt;p&gt;Configure panel controls&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Configure panel controls&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Configure-panel-controls.png\" class=\"size-medium wp-image-131\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Configure-panel-controls-300x234.png?resize=300%2C234\" alt=\"Configure panel controls\" width=\"300\" height=\"234\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Configure-panel-controls.png?resize=300%2C234&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Configure-panel-controls.png?resize=768%2C599&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Configure-panel-controls.png?w=905&amp;ssl=1 905w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-131\" class=\"wp-caption-text\">Configure panel controls<\/figcaption><\/figure>\n<p>I assigned <em><strong>CC Number<\/strong><\/em> 1 for <em><strong>Oscillator 1<\/strong><\/em>, 2 for <em><strong>Oscillator 2<\/strong><\/em>, and 3 for <em><strong>Oscillator 3<\/strong><\/em>. Then I modified the OM program to emit different control parameters as the notes are being emitted.<\/p>\n<figure id=\"attachment_132\" aria-describedby=\"caption-attachment-132\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Program-2.png\" rel=\"attachment wp-att-132\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"132\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2016\/01\/08\/how-to-use-reaktor-with-opusmodus\/program-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Program-2.png\" data-orig-size=\"499,354\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Program-2\" data-image-description=\"&lt;p&gt;Program-2&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Program-2&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Program-2.png\" class=\"size-medium wp-image-132\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Program-2-300x213.png?resize=300%2C213\" alt=\"Program-2\" width=\"300\" height=\"213\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Program-2.png?resize=300%2C213&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/Program-2.png?w=499&amp;ssl=1 499w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-132\" class=\"wp-caption-text\">Program-2<\/figcaption><\/figure>\n<p>Notice the use of <em><strong>:controllers<\/strong><\/em> option with a list of various control codes and their values. As before, when you <em><strong>Evaluate and Play<\/strong><\/em> this program, you can see that the knobs on the panel keep changing their positions dynamically as notes are played through the synth! Exciting, isn\u2019t it?<\/p>\n<p>The few hours that I spent on this experiment was definitely worth it. I learnt a few things about Reaktor and OM that I did not know before.<\/p>\n<p>Today\u2019s post has been\u00a0about using MIDI to communicate between programs, in particular between Opusmodus and Reaktor. In an <a href=\"http:\/\/www.rangakrish.com\/index.php\/2015\/09\/22\/using-reaktor-6-as-a-osc-receiver\/\" target=\"_blank\">earlier post<\/a>\u00a0I explained how you can control Reaktor using OSC. You may want to check that out too.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>For those of you who do not know about Opusmodus (OM), it is a very powerful and flexible algorithmic music composition environment built in Lisp. It is available for the Mac. Today I wanted to understand how to make Opusmodus communicate with Reaktor 6 to play some tunes. The built-in documentation gives a couple of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[18,5,17],"tags":[38,37,2],"class_list":["post-124","post","type-post","status-publish","format-standard","hentry","category-lisp","category-music","category-programming","tag-midi","tag-opusmodus","tag-reaktor"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9OLnF-20","jetpack-related-posts":[{"id":1501,"url":"https:\/\/www.rangakrish.com\/index.php\/2019\/03\/20\/controlling-reaktor-from-opusmodus-using-osc\/","url_meta":{"origin":124,"position":0},"title":"Controlling Reaktor from Opusmodus Using OSC","author":"admin","date":"March 20, 2019","format":false,"excerpt":"I am a great fan of Opusmodus\u00a0software. I have written many articles about it in the past. Owing to my several other commitments, I am not able to spend much time on it these days, but I keep checking the features in new releases regularly. The software has evolved substantially\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"A Simple Sine Oscillator","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-1-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-1-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-1-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-1-1.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":268,"url":"https:\/\/www.rangakrish.com\/index.php\/2016\/06\/29\/pattern-matching-with-optima-lisp-library-part-3\/","url_meta":{"origin":124,"position":1},"title":"Pattern Matching with Optima Lisp Library &#8211; Part 3","author":"admin","date":"June 29, 2016","format":false,"excerpt":"In the previous two posts on this topic, I explained some of the basic pattern matching facilities of Optima\u00a0library. There are many\u00a0more advanced features in the library and I will try to discuss them in future posts. In today\u2019s post, I will outline a straightforward application of the library for\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"Optima Example","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/06\/Optima-Example-1024x622.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/06\/Optima-Example-1024x622.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/06\/Optima-Example-1024x622.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/06\/Optima-Example-1024x622.png?resize=700%2C400 2x"},"classes":[]},{"id":169,"url":"https:\/\/www.rangakrish.com\/index.php\/2016\/03\/04\/a-gui-front-end-for-cellular-automata-generator\/","url_meta":{"origin":124,"position":2},"title":"A GUI Front-end for Cellular Automata Generator","author":"admin","date":"March 4, 2016","format":false,"excerpt":"In my last post, I explained how we can use Cellular Automata (CA) in Opusmodus\u00a0to create music. For today\u2019s post, I wanted to build a simple UI to control the parameters used in the CA example. This posed a practical difficulty. Opusmodus does not yet provide a GUI library. Even\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"Opusmodus GUI Driver","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/03\/Opusmodus-Driver.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/03\/Opusmodus-Driver.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/03\/Opusmodus-Driver.png?resize=525%2C300 1.5x"},"classes":[]},{"id":140,"url":"https:\/\/www.rangakrish.com\/index.php\/2016\/02\/06\/organum-in-music\/","url_meta":{"origin":124,"position":3},"title":"Organum in Music","author":"admin","date":"February 6, 2016","format":false,"excerpt":"When two or more voices in a song follow the same rhythm and move by the same interval, thus causing a parallel motion of the voices, it is referred to as Organum. Depending on the intervals between the voices, this can give rise to a rich and interesting effect. For\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"Single voice","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/02\/Single-voice.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/02\/Single-voice.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/02\/Single-voice.png?resize=525%2C300 1.5x"},"classes":[]},{"id":2242,"url":"https:\/\/www.rangakrish.com\/index.php\/2020\/12\/20\/jfugue-a-java-library-for-music-synthesis\/","url_meta":{"origin":124,"position":4},"title":"JFugue: A Java Library for Music Synthesis","author":"admin","date":"December 20, 2020","format":false,"excerpt":"JFugue\u00a0is an open-source Java library that can be used for algorithmic music composition. Developed by David Koelle, currently it is in its fifth major version. You can get the library from here. I had downloaded the library some time ago, but could not spend much time since my primary focus\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"Simple Java Program","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/12\/java-2-300x142.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/12\/java-2-300x142.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/12\/java-2-300x142.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":2206,"url":"https:\/\/www.rangakrish.com\/index.php\/2020\/11\/22\/a-library-for-algorithmic-music-composition\/","url_meta":{"origin":124,"position":5},"title":"A Library for Algorithmic Music Composition","author":"admin","date":"November 22, 2020","format":false,"excerpt":"I have recently started implementing a library for algorithmic music composition. It provides higher-level algorithms and abstractions for composing multi-track music, and works with Opusmodus\u00a0software. Opusmodus is a great platform for music composition and has excellent support for MIDI-based music. My library is an attempt to enrich the Opusmodus platform\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"App for Controlling Opusmodus","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/11\/Screen1-300x139.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/comments?post=124"}],"version-history":[{"count":0,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/124\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/media?parent=124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/categories?post=124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/tags?post=124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}