Combining Effects in a Music Programming Language based on Patterns

  • Andre Du Bois Federal University of Pelotas
  • Rodrigo Ribeiro Federal University of Ouro Preto

Resumo


HMusic is a domain specific language based on music patterns that can be used to write music and live coding. The main abstractions provided by the language are patterns and tracks. Code written in HMusic looks like patterns and multi-tracks available in music sequencers, drum machines and DAWs. HMusic provides primitives to design and combine patterns generating new patterns. The objective of this paper is to extend the original design of HMusic to allow effects on tracks. We describe new abstractions to add effects on individual tracks and in groups of tracks, and how they influence the combinators for track composition and multiplication. HMusic allows the live coding of music and, as it is embedded in the Haskell functional programming language, programmers can write functions to manipulate effects on the fly. The current implementation of the language is compiled into Sonic Pi [1], and we describe how the compiler’s back-end was modified to support the new abstractions for effects. HMusic can be and can be downloaded from [2].

Palavras-chave: Music Expressiveness, Music Formats, Data Structures and Representation, Software Systems and Languages for Sound and Music

Referências

Samuel Aaron, Alan F. Blackwell, and Pamela Burnard The development of Sonic Pi and its use in educational partnerships: Co-creating pedagogies for learning computer programming. Journal of Music, Technology and Education, 9:75–94, 05 2016.

The HMusic DSL. https://github.com/hmusiclanguage/hmusic, January 2019.

CSound. http://csound.com, January 2019.

Emmanuel Favreau, Michel Fingerhut, Olivier Koechlin, Patrick Potacsek, Miller Puckette, and Robert Rowe. Software developments for the 4x real-time system. In International Computer Music Conference, 1986.

David Zicarelli. How I Learned to Love a Program That Does Nothing. Computer Music Journal, 26(4):44–51, 2002.

Miller Puckette. Pure Data: another integrated computer music environment. In in Proceedings, International Computer Music Conference, pages 37–41, 1996.

James McCartney. Supercollider, a new real time synthesis language. In International Computer Music Conference, 1996.

Ge Wang and Perry Cook. Chuck: A programming language for on-the-fly, real-time audio synthesis and multimedia. pages 812–815, 01 2004.

Yann Orlarey, Dominique Fober, and Stephane Letz. FAUST: an Efficient Functional Approach to DSP Programming. In New Computational Paradigms for Computer Music, 2009.

Christopher Alex McLean. Artist-Programmers and Programing Languages for the Arts. PhD thesis, University of London, 2011.

Andre Rauber Du Bois and Rodrigo Geraldo Ribeiro. Hmusic: A domain specific language for music programming and live coding. In Marcelo Queiroz and Anna Xambó Sedó, editors, Proceedings of the International Conference on New Interfaces for Musical Expression, pages 381–386, Porto Alegre, Brazil, June 2019. UFRGS.

Glasgow Haskell Compiler. https://www.haskell.org/ghc/, January 2019.

Sonic Pi Tool. https://github.com/lpil/sonic-pi-tool, January 2019.

System.Cmd. http://hackage.haskell.org/package/process-1.6.5.0/docs/System-Cmd.html, January 2019.

Simon Peyton Jones. Tackling the Awkward Squad:monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell. In Engineering theories of software construction, pages 47–96. Press, 2002.

Charles Roberts, Matthew K. Wright, and JoAnn Kuchera-Morin. Music Programming in Gibber. In ICMC, 2015.

Thor Magnusson. The IXI Lang: A SuperCollider Parasite for Live Coding. In International Computer Music Conference, 2011.

LilyPond. http://lilypond.org/, January 2019.

ABC Notation. http://abcnotation.com/, January 2019.

Alex McLean. Making Programming Languages to Dance to: Live Coding with Tidal. In FARM 2014. ACM, 2014.

Paul Hudak, Tom Makucevich, Syam Gadde, and Bo Whong. Haskore music notation: An algebra of music. J. of Functional Programming, 6(3), May 1996.

H. Thielemann. Audio Processing Using Haskell. In DAFx04, 2004.

Paul Hudak and David Janin. Tiled polymorphic temporal media. In FARM 2014. ACM, 2014.

Paul Hudak. An algebraic theory of polymorphic temporal media. In PADL, 2004.

André Rauber Du Bois and Rodrigo Geraldo Ribeiro. A domain specific language for drum beat programming. In Proceedings of the Brazilian Symposium on Computer Music, 2017.

Samuel Aaron, Dominic Orchard, and Alan F. Blackwell. Temporal semantics for a live coding language. In Proceedings of the 2Nd ACM SIGPLAN International Workshop on Functional Art, Music, Modeling & Design, FARM ’14, pages 37–47, New York, NY, USA, 2014. ACM.

The Emacs editor. https://www.gnu.org/software/emacs/, January 2019.

Simon Thompson. The Craft of Functional Programming. Addison-Wesley, 2011.

The Elm Programming Language. https://elm-lang.org/, January 2019.
Publicado
25/09/2019
DU BOIS, Andre; RIBEIRO, Rodrigo. Combining Effects in a Music Programming Language based on Patterns. In: SIMPÓSIO BRASILEIRO DE COMPUTAÇÃO MUSICAL (SBCM), 17. , 2019, São João del-Rei. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2019 . p. 106-113. DOI: https://doi.org/10.5753/sbcm.2019.10430.