This paper presents the design and implementation of Juniper: a functional reactive programming language (FRP) targeting the Arduino and related microcontroller systems. Juniper provides a number of high level features, including parametric polymorphic functions, anonymous functions, automatic memory management, and immutable data structures. Also included is a standard library which offers many useful FRP signal processing functions. Juniper is translated to standard C++ and compiled with the existing Arduino development tools, allowing Juniper programs to fit on resource-constrained devices, and enabling seamless interoperability with existing C++ libraries for these devices.
{"title":"Juniper: a functional reactive programming language for the Arduino","authors":"Caleb Helbling, Samuel Z. Guyer","doi":"10.1145/2975980.2975982","DOIUrl":"https://doi.org/10.1145/2975980.2975982","url":null,"abstract":"This paper presents the design and implementation of Juniper: a functional reactive programming language (FRP) targeting the Arduino and related microcontroller systems. Juniper provides a number of high level features, including parametric polymorphic functions, anonymous functions, automatic memory management, and immutable data structures. Also included is a standard library which offers many useful FRP signal processing functions. Juniper is translated to standard C++ and compiled with the existing Arduino development tools, allowing Juniper programs to fit on resource-constrained devices, and enabling seamless interoperability with existing C++ libraries for these devices.","PeriodicalId":416294,"journal":{"name":"Proceedings of the 4th International Workshop on Functional Art, Music, Modelling, and Design","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130141999","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
In this paper I examine the relationship that complexity theory and disjunctive sequences have to music, music-generating programs and literary works. I then apply these ideas by devising a program to generate an infinite ‘Copyright Infringement Song’ that contains all other songs within it. I adopt literary modes of analysis and presentation, which I motivate by arguing that music is a cultural and artistic phenomenon rather than a natural one.
{"title":"Call for collaboration: computational musicology, ????, profit","authors":"C. Ford","doi":"10.1145/2975980.2975987","DOIUrl":"https://doi.org/10.1145/2975980.2975987","url":null,"abstract":"In this paper I examine the relationship that complexity theory and disjunctive sequences have to music, music-generating programs and literary works. I then apply these ideas by devising a program to generate an infinite ‘Copyright Infringement Song’ that contains all other songs within it. I adopt literary modes of analysis and presentation, which I motivate by arguing that music is a cultural and artistic phenomenon rather than a natural one.","PeriodicalId":416294,"journal":{"name":"Proceedings of the 4th International Workshop on Functional Art, Music, Modelling, and Design","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124897310","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
We present a new functional programming language for digital signal processing (DSP) named Arrp, in which signals are regarded as multi-dimensional arrays with an infinite dimension representing time, and defined using quasi-affine recurrence equations. An immediate benefit is an intuitive syntax that is very close to common mathematical notation used in DSP. Code reuse, especially in multi-dimensional and multi-rate signal processing, is supported through polymorphic and higher-order functions. We describe the differences between our approach and other paradigms in the domain, demonstrate the benefits of the language, and outline a method for compilation of the language into efficient C++ code using the polyhedral model. Preliminary experimental evaluation of our compiler shows that Arrp executes as fast or faster than hand-written C++ code, without explicit parallelization.
{"title":"Arrp: a functional language with multi-dimensional signals and recurrence equations","authors":"Jakob Leben","doi":"10.1145/2975980.2975983","DOIUrl":"https://doi.org/10.1145/2975980.2975983","url":null,"abstract":"We present a new functional programming language for digital signal processing (DSP) named Arrp, in which signals are regarded as multi-dimensional arrays with an infinite dimension representing time, and defined using quasi-affine recurrence equations. An immediate benefit is an intuitive syntax that is very close to common mathematical notation used in DSP. Code reuse, especially in multi-dimensional and multi-rate signal processing, is supported through polymorphic and higher-order functions. We describe the differences between our approach and other paradigms in the domain, demonstrate the benefits of the language, and outline a method for compilation of the language into efficient C++ code using the polyhedral model. Preliminary experimental evaluation of our compiler shows that Arrp executes as fast or faster than hand-written C++ code, without explicit parallelization.","PeriodicalId":416294,"journal":{"name":"Proceedings of the 4th International Workshop on Functional Art, Music, Modelling, and Design","volume":"105 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130149950","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Livecoding, while extremely powerful for the arts and beyond, has largely had its semantics tied to pervasive direct mutation of state. For the most part, livecoders have not been able to take full advantage of declarative programming, particularly when dealing with side-effects and the outside world. We present a semantics and implementation for functional reactive programming in the context of livecoding, with code hot-swap as a first-class operation. Programmers are freed from juggling low-level details, allowing them to write in a more declarative style and reap the benefits of pure functional programming.
{"title":"A livecoding semantics for functional reactive programming","authors":"Tom Murphy","doi":"10.1145/2975980.2975986","DOIUrl":"https://doi.org/10.1145/2975980.2975986","url":null,"abstract":"Livecoding, while extremely powerful for the arts and beyond, has largely had its semantics tied to pervasive direct mutation of state. For the most part, livecoders have not been able to take full advantage of declarative programming, particularly when dealing with side-effects and the outside world. We present a semantics and implementation for functional reactive programming in the context of livecoding, with code hot-swap as a first-class operation. Programmers are freed from juggling low-level details, allowing them to write in a more declarative style and reap the benefits of pure functional programming.","PeriodicalId":416294,"journal":{"name":"Proceedings of the 4th International Workshop on Functional Art, Music, Modelling, and Design","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128736421","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
A concert of performances employing functional programming techniques will take place at FARM 2016 in Nara, Japan. Eight performances will be presented on a large full-range sound system with video projection on two walls. Performances will include live coding and generative systems used for both audio and visuals.
{"title":"FARM 2016 concert: live music and visuals produced through functional programming","authors":"R. Bell","doi":"10.1145/2975980.2975989","DOIUrl":"https://doi.org/10.1145/2975980.2975989","url":null,"abstract":"A concert of performances employing functional programming techniques will take place at FARM 2016 in Nara, Japan. Eight performances will be presented on a large full-range sound system with video projection on two walls. Performances will include live coding and generative systems used for both audio and visuals.","PeriodicalId":416294,"journal":{"name":"Proceedings of the 4th International Workshop on Functional Art, Music, Modelling, and Design","volume":"3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123807488","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
This is a summary of the demos presented at the 4th ACM SIGPLAN International Workshop on Functional Art, Music, Modelling and Design, prepared prior to the event itself. The submitted abstracts of these demos are available on the FARM 2016 web site at http://functional-art.org/2016/.
{"title":"FARM 2016 demo summary","authors":"Michael Sperber, David Janin","doi":"10.1145/2975980.2975988","DOIUrl":"https://doi.org/10.1145/2975980.2975988","url":null,"abstract":"This is a summary of the demos presented at the 4th ACM SIGPLAN International Workshop on Functional Art, Music, Modelling and Design, prepared prior to the event itself. The submitted abstracts of these demos are available on the FARM 2016 web site at http://functional-art.org/2016/.","PeriodicalId":416294,"journal":{"name":"Proceedings of the 4th International Workshop on Functional Art, Music, Modelling, and Design","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125643846","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Proceedings of the 4th International Workshop on Functional Art, Music, Modelling, and Design","authors":"David Janin, Michael Sperber","doi":"10.1145/2975980","DOIUrl":"https://doi.org/10.1145/2975980","url":null,"abstract":"","PeriodicalId":416294,"journal":{"name":"Proceedings of the 4th International Workshop on Functional Art, Music, Modelling, and Design","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131732087","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Bithoven is a prolific composer of approximately 1.079363 * 10^239 different compositions based on four-part harmony and basic chord progressions. It is combined with a purely functional audio synthe- sis engine based on the Ricoh RP2A03, found in the 1985 Nintendo Entertainment System (NES). The synthesis engine is parameter- ized over a band of instruments and styles of play, so each com- position can be played in one of approximately 4.22234 * 10^41 different arrangements or "NEStrations".
{"title":"Bithoven: Gödel encoding of chamber music and functional 8-bit audio synthesis","authors":"J. McCarthy","doi":"10.1145/2975980.2975981","DOIUrl":"https://doi.org/10.1145/2975980.2975981","url":null,"abstract":"Bithoven is a prolific composer of approximately 1.079363 * 10^239 different compositions based on four-part harmony and basic chord progressions. It is combined with a purely functional audio synthe- sis engine based on the Ricoh RP2A03, found in the 1985 Nintendo Entertainment System (NES). The synthesis engine is parameter- ized over a band of instruments and styles of play, so each com- position can be played in one of approximately 4.22234 * 10^41 different arrangements or \"NEStrations\".","PeriodicalId":416294,"journal":{"name":"Proceedings of the 4th International Workshop on Functional Art, Music, Modelling, and Design","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117293605","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
In functional reactive programming (FRP), system inputs and outputs are generally modeled as functions over continuous time (behaviors) whose future values are governed by sudden changes (events). In this approach, discrete events are embedded into piece-wise continuous behaviors. In the field of reactive music system programming, we develop an orthogonal approach that seems to better fit our need. Much like piano keys can be played and combined both in sequence and in parallel, we model system inputs and outputs as spatio temporal combinations of what we call temporal values: continuous functions over time whose domain lays between two events: a start and a stop event. Various high level data types and program constructs can then be derived from such a model. They are shown to satisfy robust algebraic and category theoretic properties. Altogether, this eventually provides a simple, robust and elegant programming front-end, temporal tile programming, for reading, memorizing, stretching, combining and transforming flows of inputs into flows of outputs. Although at its infancy, the resulting approach has been experimentally validated for reactive and real-time music system programming.
{"title":"Structured reactive programming with polymorphic temporal tiles","authors":"Simon Archipoff, David Janin","doi":"10.1145/2975980.2975984","DOIUrl":"https://doi.org/10.1145/2975980.2975984","url":null,"abstract":"In functional reactive programming (FRP), system inputs and outputs are generally modeled as functions over continuous time (behaviors) whose future values are governed by sudden changes (events). In this approach, discrete events are embedded into piece-wise continuous behaviors. In the field of reactive music system programming, we develop an orthogonal approach that seems to better fit our need. Much like piano keys can be played and combined both in sequence and in parallel, we model system inputs and outputs as spatio temporal combinations of what we call temporal values: continuous functions over time whose domain lays between two events: a start and a stop event. Various high level data types and program constructs can then be derived from such a model. They are shown to satisfy robust algebraic and category theoretic properties. Altogether, this eventually provides a simple, robust and elegant programming front-end, temporal tile programming, for reading, memorizing, stretching, combining and transforming flows of inputs into flows of outputs. Although at its infancy, the resulting approach has been experimentally validated for reactive and real-time music system programming.","PeriodicalId":416294,"journal":{"name":"Proceedings of the 4th International Workshop on Functional Art, Music, Modelling, and Design","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121297354","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
O.—odot—is a portable media programming framework based on the OSC data encoding. It embeds a small expression language which allows writing and executing programs in OSC structures. The integration of programming and declarative functional descriptions within data transfer protocols enables structured and expressive communication in media systems: program snippets can be distributed in OSC messages, which evaluate to further OSC messages in the different communicating software. We present experiments using this framework in the OpenMusic computer-aided composition environment, and illustrate via case studies some advantages of such integrated system.
{"title":"o.OM: structured-functional communication between computer music systems using OSC and Odot","authors":"J. Bresson, John MacCallum, A. Freed","doi":"10.1145/2975980.2975985","DOIUrl":"https://doi.org/10.1145/2975980.2975985","url":null,"abstract":"O.—odot—is a portable media programming framework based on the OSC data encoding. It embeds a small expression language which allows writing and executing programs in OSC structures. The integration of programming and declarative functional descriptions within data transfer protocols enables structured and expressive communication in media systems: program snippets can be distributed in OSC messages, which evaluate to further OSC messages in the different communicating software. We present experiments using this framework in the OpenMusic computer-aided composition environment, and illustrate via case studies some advantages of such integrated system.","PeriodicalId":416294,"journal":{"name":"Proceedings of the 4th International Workshop on Functional Art, Music, Modelling, and Design","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-09-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132393818","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}