{"id":1501,"date":"2019-03-20T19:10:28","date_gmt":"2019-03-20T13:40:28","guid":{"rendered":"https:\/\/www.rangakrish.com\/?p=1501"},"modified":"2019-03-20T19:27:29","modified_gmt":"2019-03-20T13:57:29","slug":"controlling-reaktor-from-opusmodus-using-osc","status":"publish","type":"post","link":"https:\/\/www.rangakrish.com\/index.php\/2019\/03\/20\/controlling-reaktor-from-opusmodus-using-osc\/","title":{"rendered":"Controlling Reaktor from Opusmodus Using OSC"},"content":{"rendered":"<p>I am a great fan of <a href=\"https:\/\/opusmodus.com\" target=\"_blank\" rel=\"noopener\"><em><strong>Opusmodus<\/strong><\/em><\/a>\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 since its first release a few years ago.<\/p>\n<p>One of the nice feature additions in the latest <em><strong>1.3<\/strong><\/em> release is support for <a href=\"http:\/\/opensoundcontrol.org\/introduction-osc\" target=\"_blank\" rel=\"noopener\"><em><strong>Open Sound Control (OSC)<\/strong><\/em><\/a>. This is something I have been waiting for a long time, so I decided to check it out immediately.<\/p>\n<p>In an <a href=\"https:\/\/www.rangakrish.com\/index.php\/2015\/09\/22\/using-reaktor-6-as-a-osc-receiver\/\" target=\"_blank\" rel=\"noopener\"><em><strong>earlier article<\/strong><\/em><\/a>, I showed how it is possible to configure <a href=\"https:\/\/www.native-instruments.com\/en\/products\/komplete\/synths\/reaktor-6\/\" target=\"_blank\" rel=\"noopener\"><em><strong>Reaktor<\/strong><\/em><\/a>\u00a0as a <strong>OSC<\/strong> receiver. For that example, I used <a href=\"http:\/\/chuck.cs.princeton.edu\" target=\"_blank\" rel=\"noopener\"><em><strong>Chuck<\/strong><\/em><\/a>\u00a0programming language to send <strong>OSC<\/strong> commands to <strong>Reaktor<\/strong>. Today, I want to reconstruct the same <strong>Reaktor<\/strong> experiment, but using <strong>Opusmodus<\/strong>, instead of <strong>Chuck<\/strong>, to send <strong>OSC<\/strong> messages.<\/p>\n<p>Make sure you are running the latest release of <strong>Opusmodus<\/strong>. As of this writing, the latest version is <strong>1.3.24692<\/strong>.<\/p>\n<p>First, we launch <strong>Reaktor 6<\/strong>, and create a new <em><strong>Sine<\/strong><\/em> oscillator with <em><strong>Pitch<\/strong><\/em> and <em><strong>Amplitude<\/strong><\/em> controllers. The output can be connected to the default output channels. See the following figure:<\/p>\n<figure id=\"attachment_1513\" aria-describedby=\"caption-attachment-1513\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-1-1.png?ssl=1\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" data-attachment-id=\"1513\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2019\/03\/20\/controlling-reaktor-from-opusmodus-using-osc\/reaktor-1-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-1-1.png\" data-orig-size=\"908,763\" 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=\"A Simple Sine Oscillator\" data-image-description=\"&lt;p&gt;A Simple Sine Oscillator&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;A Simple Sine Oscillator&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-1-1.png\" class=\"wp-image-1513\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-1-1.png?resize=650%2C546&#038;ssl=1\" alt=\"A Simple Sine Oscillator\" width=\"650\" height=\"546\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-1-1.png?w=908&amp;ssl=1 908w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-1-1.png?resize=300%2C252&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-1-1.png?resize=768%2C645&amp;ssl=1 768w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><figcaption id=\"caption-attachment-1513\" class=\"wp-caption-text\"><strong>A Simple Sine Oscillator<\/strong><\/figcaption><\/figure>\n<p>Next, we should configure the <strong>Pitch<\/strong> and <strong>Amplitude<\/strong> controllers to receive <strong>OSC<\/strong> messages. Whatever name we use here must be the same as the one we use in <strong>Opusmodus<\/strong>. We choose the name <em><strong>\u201cpitch\u201d<\/strong><\/em> for the <strong>Pitch<\/strong> controller and <em><strong>\u201campl\u201d<\/strong><\/em> for the <em><strong>Amplitude<\/strong><\/em> controller.<\/p>\n<figure id=\"attachment_1504\" aria-describedby=\"caption-attachment-1504\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-3.png?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"1504\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2019\/03\/20\/controlling-reaktor-from-opusmodus-using-osc\/reaktor-3\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-3.png\" data-orig-size=\"1019,875\" 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=\"Setting Up OSC Address\" data-image-description=\"&lt;p&gt;Setting Up OSC Address&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Setting Up OSC Address&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-3.png\" class=\"wp-image-1504\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-3.png?resize=650%2C558&#038;ssl=1\" alt=\"Setting Up OSC Address\" width=\"650\" height=\"558\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-3.png?w=1019&amp;ssl=1 1019w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-3.png?resize=300%2C258&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-3.png?resize=768%2C659&amp;ssl=1 768w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><figcaption id=\"caption-attachment-1504\" class=\"wp-caption-text\"><strong>Setting Up OSC Address<\/strong><\/figcaption><\/figure>\n<p>Now that <em><strong>Reaktor<\/strong><\/em> has been setup, we can run <em><strong>Opusmodus<\/strong><\/em> and send <strong>OSC<\/strong> messages. Here is a very short code fragment that illustrates the idea:<\/p>\n<figure id=\"attachment_1505\" aria-describedby=\"caption-attachment-1505\" style=\"width: 615px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus.png?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"1505\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2019\/03\/20\/controlling-reaktor-from-opusmodus-using-osc\/opusmodus\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus.png\" data-orig-size=\"615,245\" 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=\"Sending OSC Messages\" data-image-description=\"&lt;p&gt;Sending OSC Messages&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Sending OSC Messages&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus.png\" class=\"size-full wp-image-1505\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus.png?resize=615%2C245&#038;ssl=1\" alt=\"Sending OSC Messages\" width=\"615\" height=\"245\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus.png?w=615&amp;ssl=1 615w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus.png?resize=300%2C120&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus.png?resize=400%2C160&amp;ssl=1 400w\" sizes=\"(max-width: 615px) 100vw, 615px\" \/><\/a><figcaption id=\"caption-attachment-1505\" class=\"wp-caption-text\"><strong>Sending OSC Messages<\/strong><\/figcaption><\/figure>\n<p>The actual function that transmits the messages is <em><strong>\u201cosc-thread\u201d<\/strong><\/em>. The first argument to the function is the destination address: <em><strong>IP<\/strong><\/em>\u00a0address and <em><strong>Port<\/strong><\/em> number. The second argument is the <strong>OSC<\/strong> address of the receiving controller (make sure the name matches that in <em><strong>Reaktor<\/strong><\/em>). The last argument is the actual data to be transmitted to the recipient. It is a series of <em><strong>&lt;value&gt;<\/strong><\/em> and <em><strong>&lt;time&gt;<\/strong><\/em> pairs.<\/p>\n<p>The <em><strong>\u201cosc-thread\u201d<\/strong><\/em> function returns a <em><strong>Thread<\/strong><\/em> object. We save this in a variable so that we can stop the thread if needed. The created thread runs independent of other threads. In our case, we have created two threads to take care of <em><strong>Pitch<\/strong><\/em> and <em><strong>Amplitude<\/strong><\/em> controls in <em><strong>Reaktor<\/strong><\/em>.<\/p>\n<p>In this example, I have hardcoded the data values to be sent to Reaktor. In practice, this data is likely to be generated algorithmically elsewhere. <em><strong>Opusmodus<\/strong><\/em> has a rich set of functions to do this. Here is another code fragment that uses <em><strong>&#8220;gen-osc-data&#8221;<\/strong><\/em> to get the data in the required format before sending to the target:<\/p>\n<figure id=\"attachment_1509\" aria-describedby=\"caption-attachment-1509\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus2.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1509\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2019\/03\/20\/controlling-reaktor-from-opusmodus-using-osc\/opusmodus2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus2.png\" data-orig-size=\"550,395\" 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=\"Using &amp;#8220;gen-osc-data&amp;#8221; Function\" data-image-description=\"&lt;p&gt;Using &amp;#8220;gen-osc-data&amp;#8221; Function&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Using &amp;#8220;gen-osc-data&amp;#8221; Function&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus2.png\" class=\"size-full wp-image-1509\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus2.png?resize=550%2C395&#038;ssl=1\" alt=\"Using &quot;gen-osc-data&quot; Function\" width=\"550\" height=\"395\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus2.png?w=550&amp;ssl=1 550w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Opusmodus2.png?resize=300%2C215&amp;ssl=1 300w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><figcaption id=\"caption-attachment-1509\" class=\"wp-caption-text\"><strong>Using &#8220;gen-osc-data&#8221; Function<\/strong><\/figcaption><\/figure>\n<p>You can see the data being received by <em><strong>Reaktor<\/strong><\/em>:<\/p>\n<figure id=\"attachment_1506\" aria-describedby=\"caption-attachment-1506\" style=\"width: 564px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-2.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1506\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2019\/03\/20\/controlling-reaktor-from-opusmodus-using-osc\/reaktor-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-2.png\" data-orig-size=\"564,499\" 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=\"Monitoring OSC Messages\" data-image-description=\"&lt;p&gt;Monitoring OSC Messages&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Monitoring OSC Messages&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-2.png\" class=\"size-full wp-image-1506\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-2.png?resize=564%2C499&#038;ssl=1\" alt=\"Monitoring OSC Messages\" width=\"564\" height=\"499\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-2.png?w=564&amp;ssl=1 564w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Reaktor-2.png?resize=300%2C265&amp;ssl=1 300w\" sizes=\"(max-width: 564px) 100vw, 564px\" \/><\/a><figcaption id=\"caption-attachment-1506\" class=\"wp-caption-text\"><strong>Monitoring OSC Messages<\/strong><\/figcaption><\/figure>\n<p>That is it. Quite straightforward, isn&#8217;t it? What I have demonstrated in this example is an extremely simplified situation. It is possible to setup more complex ensembles in <em><strong>Reaktor<\/strong><\/em> and control them from <em><strong>Opusmodus<\/strong><\/em> using <em><strong>OSC<\/strong><\/em>. But the idea is the same. If time permits, I will discuss more interesting examples in the future.<\/p>\n<p>I would like to thank Janusz Podrazik, the creator of <em><strong>Opusmodus<\/strong><\/em>, for developing such a nice environment for music composition, and more importantly for his great support!<\/p>\n<p>Have a nice day!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 since its first release a [&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_post_was_ever_published":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":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[18,5,17],"tags":[198,37,199],"class_list":["post-1501","post","type-post","status-publish","format-standard","hentry","category-lisp","category-music","category-programming","tag-open-sound-control","tag-opusmodus","tag-osc"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9OLnF-od","jetpack-related-posts":[{"id":5,"url":"https:\/\/www.rangakrish.com\/index.php\/2015\/09\/22\/using-reaktor-6-as-a-osc-receiver\/","url_meta":{"origin":1501,"position":0},"title":"Using Reaktor 6 as a OSC Receiver","author":"admin","date":"September 22, 2015","format":false,"excerpt":"Open Sound Control (OSC) is a successor to MIDI and facilitates more flexible communication between software and multimedia devices. In this example, we will configure Reaktor to act as a receiver of OSC messages. Launch Reaktor. First we have to make sure that OSC is enabled. For this, select \u201cFile>OSC\u2026","rel":"","context":"In &quot;Music&quot;","block_context":{"text":"Music","link":"https:\/\/www.rangakrish.com\/index.php\/category\/music\/"},"img":{"alt_text":"Reaktor 6 OSC Settings","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2015\/09\/OSC-Settings2.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":124,"url":"https:\/\/www.rangakrish.com\/index.php\/2016\/01\/08\/how-to-use-reaktor-with-opusmodus\/","url_meta":{"origin":1501,"position":1},"title":"How to Use Reaktor with Opusmodus","author":"admin","date":"January 8, 2016","format":false,"excerpt":"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\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"IAC Driver","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/01\/IAC-Driver-283x300.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2242,"url":"https:\/\/www.rangakrish.com\/index.php\/2020\/12\/20\/jfugue-a-java-library-for-music-synthesis\/","url_meta":{"origin":1501,"position":2},"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":140,"url":"https:\/\/www.rangakrish.com\/index.php\/2016\/02\/06\/organum-in-music\/","url_meta":{"origin":1501,"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":2206,"url":"https:\/\/www.rangakrish.com\/index.php\/2020\/11\/22\/a-library-for-algorithmic-music-composition\/","url_meta":{"origin":1501,"position":4},"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":[]},{"id":3525,"url":"https:\/\/www.rangakrish.com\/index.php\/2024\/10\/13\/using-chatgpt-for-algorithmic-music-composition\/","url_meta":{"origin":1501,"position":5},"title":"Using ChatGPT for Algorithmic Music Composition","author":"admin","date":"October 13, 2024","format":false,"excerpt":"Algorithmic music composition is one of my favourite areas. And in terms of tools, as several of my past articles\u00a0show, OpusModus software is the main choice.\u00a0 Recently I have been spending some time checking if ChatGPT could be cajoled into writing some good OpusModus code. But the experience has not\u2026","rel":"","context":"In &quot;Music&quot;","block_context":{"text":"Music","link":"https:\/\/www.rangakrish.com\/index.php\/category\/music\/"},"img":{"alt_text":"SonicPi Code for Twinkle Twinkle Lite Star","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2024\/10\/twinkle-300x280.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2024\/10\/twinkle-300x280.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2024\/10\/twinkle-300x280.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/1501","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=1501"}],"version-history":[{"count":0,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/1501\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/media?parent=1501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/categories?post=1501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/tags?post=1501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}