<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>with Generative Systems in the Digital Audio Workstation</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ian Clester</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jason Freeman</string-name>
          <email>jason.freeman@gatech.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Georgia Institute of Technology</institution>
          ,
          <addr-line>Atlanta, GA</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>1957</year>
      </pub-date>
      <abstract>
        <p>Generative systems present new opportunities for composers, but it can be unclear how to integrate such systems into creative workflows. We put forward a vision for a generative audio workstation, in which the composer can work with generative expressions much like ordinary audio or MIDI items, seamlessly mixing static and dynamic musical material. We present our research prototype in this direction, LambDAW, which takes the form of an extension to REAPER (a popular digital audio workstation) that executes Python expressions directly in the timeline, and we discuss possibilities for integration with generative models and machine learning libraries.</p>
      </abstract>
      <kwd-group>
        <kwd>Music Transformer today</kwd>
        <kwd>In all these cases</kwd>
        <kwd>the computer</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        generative music, end-user programming, music composition, digital audio workstation
© 2023 Copyright for this paper by its authors. Use permitted under Creative Commons License formula, a name begins with = to indicate that it contains
Attribution 4.0 International (CC BY 4.0).
proach afords limited support for generative music. To
and work with disparate materials. However, this ap- draw on computational notebooks such as Jupyter [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ],
which promote interactive programming and allow code
incorporate generative systems into a piece, the com- to generate pieces of the document it is embedded in.
the generative system separately, generate some audio or (which brings code into Western music notation).
      </p>
    </sec>
    <sec id="sec-2">
      <title>1. Vision</title>
      <sec id="sec-2-1">
        <title>Generative musical systems have a long history [3], from</title>
        <p>Australia
(J. Freeman)
(J. Freeman)
htp:/ceur-ws.org
ISN1613-073</p>
        <p>CEUR</p>
        <p>Workshop Proceedings (CEUR-WS.org)
1They can also put the generative system in a plugin, but this is
hidden in the FX chain, exists for all time, and has limited ability to
interact with the DAW.
as DAWs are with (static) digital audio. In our vision,
code is not something separate to be executed outside
of the DAW, nor is it timeless in the FX chain. Instead,
it is right in the timeline, alongside the other musical
materials. Furthermore, it can connect to other materials
by reference, enabling the composer to create meaningful
links through the piece. In this model, the composer need
not give up all control to generative systems, nor reject
them entirely. Instead, they retain ultimate control of the
piece and can bring in generative systems as they see fit,
like any other source of material.</p>
      </sec>
      <sec id="sec-2-2">
        <title>We take inspiration from end-user programming software, including the classic example of spreadsheets and more recent work from Ink &amp; Switch [5, 6]. We also</title>
      </sec>
      <sec id="sec-2-3">
        <title>Our work is also related to Manhattan [8] (which brings</title>
        <p>
          code fragments into a music tracker), Ossia Score [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]
(an “intermedia sequencer” which can be scripted via
JavaScript), and Computational Counterpoint Marks [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>2. Prototype</title>
      <sec id="sec-3-1">
        <title>Our research prototype takes the form of an extension to</title>
        <p>REAPER called LambDAW (“lambda” + “DAW”).2 With
in the timeline to generate audio or MIDI output directly
in the DAW, as shown in Fig. 1. These expressions are
stored in take names, so that both the code and its
generated output are visible in the timeline. Like a spreadsheet</p>
      </sec>
      <sec id="sec-3-2">
        <title>2LambDAW is free software, and it is available at https://github.com/</title>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>3. Conclusion &amp; Future Work</title>
      <p>an expression to be evaluated. (The = may be further
preifxed to give it a name for later reference, as in f o o = b a r ( ) .)
When LambDAW detects a new or updated expression, it We believe LambDAW ofers a useful way to compose
automatically evaluates it and puts the generated output with AI and ML by bringing code into the familiar
inin the associated item. The user can also re-evaluate ex- terface of the DAW. Because LambDAW allows arbitrary
pressions on demand, e.g. to get diferent outputs from a Python expressions in the timeline and provides the
model. project module as a place to import libraries and load
as</p>
      <p>
        Expressions can refer to other items in the timeline as sets, it enables the user to take advantage of Python’s rich
variables. For example, if there is a MIDI item in the time- ecosystem. Expression items can serve as user-specified
line named m y _ c o o l _ r i f f , an expression item can refer “blanks” for an AI to fill in, which the user can re-evaluate
to it with an expression like = t r a n s p o s e ( m y _ c o o l _ r i f f , to generate new output. The ability of LambDAW
expres5 ) . This feature allows the composer to establish connec- sions to refer to other items in the timeline provides
tions between musical material; if they later modify the a convenient way to work with models that transform
original rif, the derived item can be updated simply be or continue input material, and for the user to pre- or
re-evaluating it (unlike a transformed copy, which “for- post-process model data.
gets” its relationship to the original material). Referring Looking ahead, we plan to further explore integrations
to items in expressions also facilitates the transformation with generative libraries and models to find how they can
of recorded material with code. (Expression items can ift into compositional workflows. Some initial work in
also reference other expression items, as in the example this direction is depicted in Fig. 1, which features
expreswith c a r p in track 1 of Fig. 1.) sions that invoke MusicVAE [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and RAVE [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] to generate
      </p>
      <p>Linking expressions by reference enables the user to symbolic data and audio, respectively. We also aim to
divide up complexity between expressions and so pro- make architectural changes to improve LambDAW’s
usvides a way to manage complexity and expression length; ability (especially with ML libraries), such as performing
the user project module provides another.3 LambDAW evaluation in a separate process and allowing to user to
loads a user-defined module for each project in which the interrupt long-running operations.4 Finally, we hope to
user can define functions, import useful libraries, load present our system to composers to get their feedback
resources, etc., for use in timeline-embedded expressions. about the quality of the integration, the degree to which
The user can also customize how LambDAW converts it facilitates their use of generative systems, and how it
DAW items to/from Python objects. The user project afects their creative process.
module thus supports concision and customizability,
enabling the user to choose their own set of abstractions
for composing and maintain the brevity of expressions
in the timeline.</p>
      <sec id="sec-4-1">
        <title>3An expression in the timeline can be arbitrarily complex, but it is</title>
        <p>advisable to keep it brief so that the whole thing can be seen at a
glance and without excessive zooming.</p>
      </sec>
      <sec id="sec-4-2">
        <title>4While building our prototype, we encountered technical issues with</title>
        <p>REAPER’s embedded Python support when using libraries such as
NumPy, TensorFlow, and PyTorch, which required workarounds.
Moving evaluation out to a separate process (as in Jupyter kernels)
would avoid these issues, enable interrupting/killing the interpreter
without restarting the DAW, and prevent evaluation from blocking
the UI thread.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A.</given-names>
            <surname>Roberts</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Engel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Rafel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Hawthorne</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Eck</surname>
          </string-name>
          ,
          <article-title>A hierarchical latent vector model for learning longterm structure in music</article-title>
          ,
          <source>in: International Conference on Machine Learning (ICML)</source>
          ,
          <year>2018</year>
          . URL: http://proceedings.mlr.press/v80/roberts18a.html.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A.</given-names>
            <surname>Caillon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Esling</surname>
          </string-name>
          ,
          <article-title>Rave: A variational autoencoder for fast and high-quality neural audio synthesis</article-title>
          ,
          <year>2021</year>
          . URL: https://arxiv.org/abs/2111.05011.
          <source>doi:1 0 . 4 8</source>
          <volume>5 5</volume>
          <fpage>0</fpage>
          <string-name>
            <surname>/ A R X I</surname>
          </string-name>
          <article-title>V . 2 1 1 1 . 0 5 0 1 1</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>K.</given-names>
            <surname>Essl</surname>
          </string-name>
          ,
          <article-title>Algorithmic composition</article-title>
          , in: N. Collins, J. d'Escrivan (Eds.), The Cambridge Companion to Electronic Music, Cambridge Companions to Music, Cambridge University Press,
          <year>2007</year>
          , p.
          <fpage>107</fpage>
          -
          <lpage>125</lpage>
          .
          <source>doi:1 0 . 1 0</source>
          1 7 / C C O L 9
          <volume>7 8 0 5 2 1 8 6 8 6 1 7 . 0 0</volume>
          <fpage>8</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Cope</surname>
          </string-name>
          ,
          <article-title>Experiments in musical intelligence (emi): Non‐linear linguistic‐based composition</article-title>
          ,
          <source>Interface</source>
          <volume>18</volume>
          (
          <year>1989</year>
          )
          <fpage>117</fpage>
          -
          <lpage>139</lpage>
          . URL: https: //doi.org/10.1080/09298218908570541.
          <source>doi:1 0 . 1 0</source>
          <volume>8 0 / 0 9 2 9 8 2 1 8 9 0 8 5 7 0 5 4 1 .</volume>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>G.</given-names>
            <surname>Litt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Schoening</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Shen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Sonnentag</surname>
          </string-name>
          , Potluck:
          <article-title>Dynamic documents as personal software (</article-title>
          <year>2022</year>
          ). URL: https://www.inkandswitch.com/ potluck/.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>J.</given-names>
            <surname>Lindenbaum</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kaliski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Horowitz</surname>
          </string-name>
          , Inkbase: Programmable ink (
          <year>2022</year>
          ). URL: https://www. inkandswitch.com/inkbase/.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>T.</given-names>
            <surname>Kluyver</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Ragan-Kelley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Pérez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Granger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Bussonnier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Frederic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Kelley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hamrick</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Grout</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Corlay</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Ivanov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Avila</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Abdalla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Willing</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          <article-title>development team, Jupyter notebooks - a publishing format for reproducible computational workflows</article-title>
          , in: F.
          <string-name>
            <surname>Loizides</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          Scmidt (Eds.), Positioning and Power in Academic Publishing: Players, Agents and Agendas, IOS Press, Netherlands,
          <year>2016</year>
          , pp.
          <fpage>87</fpage>
          -
          <lpage>90</lpage>
          . URL: https://eprints. soton.ac.uk/403913/.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>C.</given-names>
            <surname>Nash</surname>
          </string-name>
          , Manhattan:
          <article-title>End-user programming for music</article-title>
          ,
          <source>in: Proceedings of the 14th International Conference on New Interfaces for Musical Expression</source>
          ,
          <year>2014</year>
          , pp.
          <fpage>221</fpage>
          -
          <lpage>226</lpage>
          . URL: https://www.nime. org/proceedings/2014/nime2014_
          <fpage>371</fpage>
          .pdf.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>J.-M. Celerier</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Baltazar</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Bossut</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Vuaille</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.-M. Couturier</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Desainte-Catherine</surname>
          </string-name>
          ,
          <article-title>Ossia: Towards a unified interface for scoring time and interaction</article-title>
          ,
          <source>in: TENOR 2015 - First International Conference on Technologies for Music Notation and Representation</source>
          ,
          <year>2015</year>
          . URL: http://tenor2015.tenor-conference. org/papers/13-Celerier-OSSIA.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>J. C.</given-names>
            <surname>Martinez</surname>
          </string-name>
          ,
          <article-title>Extending music notation as a programming language for interactive music</article-title>
          ,
          <source>in: ACM International Conference on Interactive Media Experiences, ACM</source>
          ,
          <year>2021</year>
          , pp.
          <fpage>28</fpage>
          -
          <lpage>36</lpage>
          . URL: https: //doi.org/10.1145/3452918.3458807.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>