{"id":2256,"date":"2021-01-02T19:16:40","date_gmt":"2021-01-02T13:46:40","guid":{"rendered":"https:\/\/www.rangakrish.com\/?p=2256"},"modified":"2021-01-02T19:16:40","modified_gmt":"2021-01-02T13:46:40","slug":"using-jfugue-with-external-daw","status":"publish","type":"post","link":"https:\/\/www.rangakrish.com\/index.php\/2021\/01\/02\/using-jfugue-with-external-daw\/","title":{"rendered":"Using JFugue with External DAW"},"content":{"rendered":"<p><strong>Let this New Year 2021 bring health and happiness to us all!<\/strong><\/p>\n<p>In the last <a href=\"https:\/\/www.rangakrish.com\/index.php\/2020\/12\/20\/jfugue-a-java-library-for-music-synthesis\/\" target=\"_blank\" rel=\"noopener\"><em><strong>article<\/strong><\/em><\/a>, I talked briefly about <a href=\"http:\/\/www.jfugue.org\" target=\"_blank\" rel=\"noopener\"><em><strong>JFugue<\/strong><\/em><\/a> and showed how to access it from <a href=\"http:\/\/www.lispworks.com\/products\/lispworks.html\" target=\"_blank\" rel=\"noopener\"><em><strong>LispWorks Lisp<\/strong><\/em><\/a>\u00a0on a PC running Windows 10. In that example, the music was rendered by the built-in synthesizer. Although this is fine, it is sometimes desirable to play the generated MIDI notes through an external DAW because it usually allows us to take advantage of a much wider range of musical instruments and sounds. How to do that is the focus of today\u2019s article.<\/p>\n<p>I had written about <a href=\"https:\/\/www.uvi.net\/falcon.html\" target=\"_blank\" rel=\"noopener\"><em><strong>UVI Falcon<\/strong><\/em><\/a> in an earlier <a href=\"https:\/\/www.rangakrish.com\/index.php\/2020\/12\/06\/using-falcon-2-with-opusmodus\/\" target=\"_blank\" rel=\"noopener\"><em><strong>article<\/strong><\/em><\/a>. I installed <em><strong>Falcon<\/strong><\/em> on my Windows 10 machine, along with the <em><strong>\u201cFalcon Factory\u201d<\/strong><\/em> soundbank. In order to play notes through an external MIDI device, <em><strong>JFugue<\/strong><\/em> requires us to create a new <em><strong>MusicReceiver<\/strong><\/em> object, bound to a suitable MIDI device. For this purpose, I had to download and install the free <a href=\"https:\/\/springbeats.com\/2016\/12\/10\/springbeats-free-virtual-midi-cable\/\" target=\"_blank\" rel=\"noopener\"><em><strong>\u201cSpringbeats Virtual MIDI\u201d<\/strong><\/em><\/a>.<\/p>\n<p>To check if it is installed, I wrote the following <em><strong>Lisp<\/strong><\/em> function:<\/p>\n<figure id=\"attachment_2257\" aria-describedby=\"caption-attachment-2257\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Code-to-check-devices.jpg?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"2257\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/01\/02\/using-jfugue-with-external-daw\/code-to-check-devices\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Code-to-check-devices.jpg\" data-orig-size=\"1009,130\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1609601556&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=\"Checking Available MIDI Devices\" data-image-description=\"&lt;p&gt;Checking Available MIDI Devices&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Checking Available MIDI Devices&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Code-to-check-devices.jpg\" class=\"wp-image-2257\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Code-to-check-devices.jpg?resize=550%2C71&#038;ssl=1\" alt=\"Checking Available MIDI Devices\" width=\"550\" height=\"71\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Code-to-check-devices.jpg?resize=300%2C39&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Code-to-check-devices.jpg?resize=768%2C99&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Code-to-check-devices.jpg?w=1009&amp;ssl=1 1009w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><figcaption id=\"caption-attachment-2257\" class=\"wp-caption-text\"><strong>Checking Available MIDI Devices<\/strong><\/figcaption><\/figure>\n<p>When I ran it, this is what I got:<\/p>\n<figure id=\"attachment_2258\" aria-describedby=\"caption-attachment-2258\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Checking-for-midi-devices.jpg?ssl=1\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" data-attachment-id=\"2258\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/01\/02\/using-jfugue-with-external-daw\/checking-for-midi-devices\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Checking-for-midi-devices.jpg\" data-orig-size=\"669,654\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1609583790&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=\"Available Devices\" data-image-description=\"&lt;p&gt;Available Devices&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Available Devices&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Checking-for-midi-devices.jpg\" class=\"wp-image-2258\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Checking-for-midi-devices.jpg?resize=500%2C489&#038;ssl=1\" alt=\"Available Devices\" width=\"500\" height=\"489\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Checking-for-midi-devices.jpg?resize=300%2C293&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Checking-for-midi-devices.jpg?w=669&amp;ssl=1 669w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2258\" class=\"wp-caption-text\"><strong>Available Devices<\/strong><\/figcaption><\/figure>\n<p>For this, as well as to create a new <em><strong>MusicReceiver<\/strong><\/em>, I had to declare additional <em><strong>Java<\/strong><\/em> methods in <em><strong>Lisp<\/strong><\/em>:<\/p>\n<figure id=\"attachment_2259\" aria-describedby=\"caption-attachment-2259\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Declaring-Java-methods.jpg?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"2259\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/01\/02\/using-jfugue-with-external-daw\/declaring-java-methods\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Declaring-Java-methods.jpg\" data-orig-size=\"1136,493\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1609601664&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=\"Declaring Java methods\" data-image-description=\"&lt;p&gt;Declaring Java Methods&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Declaring Java Methods&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Declaring-Java-methods-1024x444.jpg\" class=\"wp-image-2259\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Declaring-Java-methods.jpg?resize=550%2C239&#038;ssl=1\" alt=\"Declaring Java Methods\" width=\"550\" height=\"239\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Declaring-Java-methods.jpg?resize=300%2C130&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Declaring-Java-methods.jpg?resize=1024%2C444&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Declaring-Java-methods.jpg?resize=768%2C333&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Declaring-Java-methods.jpg?w=1136&amp;ssl=1 1136w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><figcaption id=\"caption-attachment-2259\" class=\"wp-caption-text\"><strong>Declaring Java Methods<\/strong><\/figcaption><\/figure>\n<p>Not much of a hassle, really.<\/p>\n<p>After this, I had to configure the MIDI settings in <em><strong>Falcon<\/strong><\/em>. See this image:<\/p>\n<figure id=\"attachment_2261\" aria-describedby=\"caption-attachment-2261\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/MIDI-Settings.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2261\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/01\/02\/using-jfugue-with-external-daw\/midi-settings\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/MIDI-Settings.jpg\" data-orig-size=\"904,762\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1609263585&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=\"Falcon MIDI Settings\" data-image-description=\"&lt;p&gt;Falcon MIDI Settings&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Falcon MIDI Settings&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/MIDI-Settings.jpg\" class=\"wp-image-2261\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/MIDI-Settings.jpg?resize=500%2C421&#038;ssl=1\" alt=\"Falcon MIDI Settings\" width=\"500\" height=\"421\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/MIDI-Settings.jpg?resize=300%2C253&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/MIDI-Settings.jpg?resize=768%2C647&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/MIDI-Settings.jpg?w=904&amp;ssl=1 904w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2261\" class=\"wp-caption-text\"><strong>Falcon MIDI Settings<\/strong><\/figcaption><\/figure>\n<p><span class=\"Apple-converted-space\">\u00a0<\/span>You can see that I have mapped <em><strong>Port A<\/strong><\/em> to <em><strong>Springbeats Virtual MIDI<\/strong><\/em>.<\/p>\n<p>And here is the <em><strong>Falcon<\/strong><\/em> view with the two instruments I selected for playing the notes. I need two tracks because one of the statements uses two <em><strong>\u201cvoices\u201d<\/strong><\/em> (or tracks).<\/p>\n<figure id=\"attachment_2262\" aria-describedby=\"caption-attachment-2262\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Falcon.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2262\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/01\/02\/using-jfugue-with-external-daw\/falcon-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Falcon.jpg\" data-orig-size=\"1867,1206\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1609584212&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=\"Falcon with Two Tracks\" data-image-description=\"&lt;p&gt;Falcon with Two Tracks&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Falcon with Two Tracks&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Falcon-1024x661.jpg\" class=\"wp-image-2262\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Falcon.jpg?resize=500%2C323&#038;ssl=1\" alt=\"Falcon with Two Tracks\" width=\"500\" height=\"323\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Falcon.jpg?resize=300%2C194&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Falcon.jpg?resize=1024%2C661&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Falcon.jpg?resize=768%2C496&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Falcon.jpg?resize=1536%2C992&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Falcon.jpg?resize=140%2C90&amp;ssl=1 140w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Falcon.jpg?w=1867&amp;ssl=1 1867w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2262\" class=\"wp-caption-text\"><strong>Falcon with Two Tracks<\/strong><\/figcaption><\/figure>\n<p>As mentioned earlier, I had to create a new player to play notes through the external device:<\/p>\n<figure id=\"attachment_2263\" aria-describedby=\"caption-attachment-2263\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/create-device.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2263\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/01\/02\/using-jfugue-with-external-daw\/create-device\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/create-device.jpg\" data-orig-size=\"1237,134\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1609601621&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=\"Creating New MusicReceiver\" data-image-description=\"&lt;p&gt;Creating New MusicReceiver&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Creating New MusicReceiver&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/create-device-1024x111.jpg\" class=\"wp-image-2263\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/create-device.jpg?resize=550%2C60&#038;ssl=1\" alt=\"Creating New MusicReceiver\" width=\"550\" height=\"60\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/create-device.jpg?resize=300%2C32&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/create-device.jpg?resize=1024%2C111&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/create-device.jpg?resize=768%2C83&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/create-device.jpg?w=1237&amp;ssl=1 1237w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><figcaption id=\"caption-attachment-2263\" class=\"wp-caption-text\"><strong>Creating New DAW Player<\/strong><\/figcaption><\/figure>\n<p>I used the 5th element (0-based index 4) in the list of printed MIDI devices for creating the <em><strong>MusicReceiver<\/strong><\/em>. Here is the code for the <em><strong>\u201cplay\u201d<\/strong><\/em> method:<\/p>\n<figure id=\"attachment_2265\" aria-describedby=\"caption-attachment-2265\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/play-method.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2265\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/01\/02\/using-jfugue-with-external-daw\/play-method\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/play-method.jpg\" data-orig-size=\"853,91\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1609601733&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=\"The Play Method\" data-image-description=\"&lt;p&gt;The Play Method&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;The Play Method&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/play-method.jpg\" class=\"wp-image-2265\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/play-method.jpg?resize=500%2C53&#038;ssl=1\" alt=\"The Play Method\" width=\"500\" height=\"53\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/play-method.jpg?resize=300%2C32&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/play-method.jpg?resize=768%2C82&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/play-method.jpg?w=853&amp;ssl=1 853w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2265\" class=\"wp-caption-text\"><strong>The Play Method<\/strong><\/figcaption><\/figure>\n<p>Here are the notes that we play:<\/p>\n<figure id=\"attachment_2266\" aria-describedby=\"caption-attachment-2266\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/test-play.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2266\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/01\/02\/using-jfugue-with-external-daw\/test-play\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/test-play.jpg\" data-orig-size=\"842,98\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1609601701&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=\"Playing Sample Notes\" data-image-description=\"&lt;p&gt;Playing Sample Notes&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Playing Sample Notes&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/test-play.jpg\" class=\"wp-image-2266\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/test-play.jpg?resize=500%2C58&#038;ssl=1\" alt=\"Playing Sample Notes\" width=\"500\" height=\"58\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/test-play.jpg?resize=300%2C35&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/test-play.jpg?resize=768%2C89&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/test-play.jpg?w=842&amp;ssl=1 842w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2266\" class=\"wp-caption-text\"><strong>Playing Sample Notes<\/strong><\/figcaption><\/figure>\n<p>Note that the second statement uses two voices, <em><strong>V0<\/strong><\/em> and <em><strong>V1.\u00a0<\/strong><\/em>When we run the <em><strong>\u201ctest-play&#8221;<\/strong><\/em> method, this time, the music is rendered on the external DAW,\u00a0<em><strong>Falcon<\/strong><\/em>.<\/p>\n<figure id=\"attachment_2267\" aria-describedby=\"caption-attachment-2267\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Playing.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2267\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/01\/02\/using-jfugue-with-external-daw\/playing\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Playing.jpg\" data-orig-size=\"801,133\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1609584149&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=\"Playing the Notes\" data-image-description=\"&lt;p&gt;Playing the Notes&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Playing the Notes&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Playing.jpg\" class=\"wp-image-2267\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Playing.jpg?resize=500%2C83&#038;ssl=1\" alt=\"Playing the Notes\" width=\"500\" height=\"83\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Playing.jpg?resize=300%2C50&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Playing.jpg?resize=768%2C128&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/01\/Playing.jpg?w=801&amp;ssl=1 801w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2267\" class=\"wp-caption-text\"><strong>Playing the Notes<\/strong><\/figcaption><\/figure>\n<p>So, using <em><strong>JFugue<\/strong><\/em> with an external instrument is not that hard at all. Although it is unlikely that I will be using <em><strong>JFugue<\/strong><\/em> for my composition experiments, I wanted to make sure I am aware of its possibilities and limitations.<\/p>\n<p>Here is my <a href=\"http:\/\/www.rangakrish.com\/downloads\/jfCore.lisp\" target=\"_blank\" rel=\"noopener\"><em><strong>Lisp<\/strong> <strong>code<\/strong><\/em><\/a>.<\/p>\n<p>Have a great weekend and a wonderful year ahead!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Let this New Year 2021 bring health and happiness to us all! In the last article, I talked briefly about JFugue and showed how to access it from LispWorks Lisp\u00a0on a PC running Windows 10. In that example, the music was rendered by the built-in synthesizer. Although this is fine, it is sometimes desirable to [&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":[261,257,258,256],"class_list":["post-2256","post","type-post","status-publish","format-standard","hentry","category-lisp","category-music","category-programming","tag-daw","tag-falcon","tag-jfugue","tag-music-composition"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9OLnF-Ao","jetpack-related-posts":[{"id":2242,"url":"https:\/\/www.rangakrish.com\/index.php\/2020\/12\/20\/jfugue-a-java-library-for-music-synthesis\/","url_meta":{"origin":2256,"position":0},"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":2256,"position":1},"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":2256,"position":2},"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":[]},{"id":2224,"url":"https:\/\/www.rangakrish.com\/index.php\/2020\/12\/06\/using-falcon-2-with-opusmodus\/","url_meta":{"origin":2256,"position":3},"title":"Using Falcon 2 with Opusmodus","author":"admin","date":"December 6, 2020","format":false,"excerpt":"The recently concluded Black Friday sale by UVI\u00a0was an irresistible temptation for me and I ended up investing in Falcon 2 and a few other instruments. Although I have the latest versions of Ableton Live, Propellerheads Reason, Renoise, and Reaper, I felt Falcon 2 would be a good addition to\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"Sample Code in Opusmodus","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/12\/code-248x300.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3017,"url":"https:\/\/www.rangakrish.com\/index.php\/2023\/02\/16\/calling-external-dll-functions-from-julia\/","url_meta":{"origin":2256,"position":4},"title":"Calling External DLL Functions from Julia","author":"admin","date":"February 16, 2023","format":false,"excerpt":"Julia supports calling external functions, especially those written in \u201cC\u201d language. As Julia documentation says, such calls do not involve any \u201cboilerplate\u201d code and hence are efficient. In today\u2019s article, I am going to show how to call functions defined in a DLL (Windows 64 bit). Instead of using direct\u2026","rel":"","context":"In &quot;Julia&quot;","block_context":{"text":"Julia","link":"https:\/\/www.rangakrish.com\/index.php\/category\/julia\/"},"img":{"alt_text":"The \"lispEval\" Function","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2023\/02\/code-300x117.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2023\/02\/code-300x117.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2023\/02\/code-300x117.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":3271,"url":"https:\/\/www.rangakrish.com\/index.php\/2023\/12\/10\/generating-polynomials-part-2\/","url_meta":{"origin":2256,"position":5},"title":"Generating Polynomials &#8211; Part 2","author":"admin","date":"December 10, 2023","format":false,"excerpt":"In my last article, I showed how we can use Prolog to generate univariate Polynomials. After I finished that article, I wanted to try Lisp for the same task. Prolog is \u201cdeclarative\u201d, whereas Lisp is primarily \u201cfunctional\u201d (it supports OOP as well), so the implementation will exhibit that difference. Here\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"Function to Generate Polynomial","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2023\/12\/code1-300x139.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2023\/12\/code1-300x139.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2023\/12\/code1-300x139.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/2256","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=2256"}],"version-history":[{"count":0,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/2256\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/media?parent=2256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/categories?post=2256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/tags?post=2256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}