19 views

Skip to first unread message

Aug 10, 2021, 9:58:54 AM8/10/21

to Procedural Content Generation

======================================================================

FARM 2021

9th ACM SIGPLAN International Workshop on

Functional Art, Music, Modeling and Design

27 August, 2021, co-virtuel with ICFP 2021

https://functional-art.org/2021/

======================================================================

The ACM SIGPLAN International Workshop on Functional Art, Music,

Modelling and Design (FARM) gathers together people who are harnessing

functional techniques in the pursuit of creativity and expression.

Functional Programming has emerged as a mainstream software

development paradigm, and its artistic and creative use is booming. A

growing number of software toolkits, frameworks and environments for

art, music and design now employ functional programming languages and

techniques. FARM is a forum for exploration and critical evaluation of

these developments, for example to consider potential benefits of

greater consistency, tersity, and closer mapping to a problem domain.

Registration

------------

You can register via the ICFP 2021 registration:

http://icfp21.sigplan.org/attending/registration

Don't be confused that it says ~ICFP~ - FARM is part of a larger event

around ICFP 2021, and you can register for FARM without registering

for ICFP.

Keynote

-------

Phoenix Perry will hold the keynote.

Accepted papers

---------------

minimum: a self-extensible programming language for sound and music

Tomoya Matsuura and Kazuhiro Jo

MidifilePerformer: a case study for chronologies

Juliette Chabassier, Myriam Desainte-Catherine, Jean Haury, Marin Pobel and Bernard Serpette

Temporal-Scope Grammars for Polyphonic Music Generation

Lukas Eibensteiner, Martin Ilčík and Michael Wimmer

The W-calculus: A Synchronous Framework for the Verified Modelling of Digital Signal Processing Algorithms

Emilio Jesus Gallego Arias, Pierre Jouvelot, Sylvain Ribstein and Dorian Desblancs

Human-in-the-loop Program Synthesis for Live Coding

Mark Santolucito

Live Performances

-----------------

FARM 2021 will feature a session of live performances:

- John Leo, Logical Soundness

- Emiddio Vasquez, Title TBA

- José Miguel Fernandez, Homotopy

Workshop Organisation

---------------------

Workshop Chair: Daniel Winograd-Cort (Luminous Computing)

Program Chair: Jean-Louis Giavitto (IRCAM Paris)

Publicity Chair: Michael Sperber (Active Group GmbH)

Performance Chair: John MacCallum (HfMT Hamburg)

Aug 19, 2021, 11:32:40 AM8/19/21

to Procedural Content Generation

If I'm generating musical notes by evaluating a numerical function per note parameter (pitch, duration, velocity, etc), is that functional art?

Because I have written a program that parses and calculates user-written numerical functions over program-controlled variables. Right now it reads a specially-formatted text file and outputs a standard MIDI file (.mid), but I'm working on a GUI.

Aug 20, 2021, 3:15:10 AM8/20/21

to François Luc Denhez-Teuton, Procedural Content Generation

On Thu, Aug 19 2021, François Luc Denhez-Teuton <flte...@gmail.com> wrote:

> If I'm generating musical notes by evaluating a numerical function per note

> parameter (pitch, duration, velocity, etc), is that functional art?

>

> Because I have written a program that parses and calculates user-written

> numerical functions over program-controlled variables. Right now it reads a

> specially-formatted text file and outputs a standard MIDI file (.mid), but

> I'm working on a GUI.

framework or new idea behind this, which is hard to gauge from your

brief description.

Note that the program for FARM 2021 is done - this would have to be

2022. But you can get an impression of what FARM is like by attending,

of course!

--

Regards,

Mike

Aug 20, 2021, 8:20:48 PM8/20/21

to Procedural Content Generation

All right, I'll give you the full rundown and you tell me if there's anything novel or interesting. I've looked at wikipedia and the closest I've come to recognizing my idea is in the "mathematical models" section of the wikipedia article on algorithmic composition.

Basically, the concept behind this program is to use only mathematical formulas to write musical compositions. The only knowledge the composer is required to know is arithmetic (including the modulo operation), trigonometric and logarithmic functions, rounding functions, the absolute functions, and some indicative operators that return 1 if the relation is true (the equality, inequality, greater-than and lesser-than relations) and 0 if not, as well as how the different variables increment after evaluation. The composer doesn't need to know how to program.

A note in that context has 4 numbers associated with it, the pitch, duration, temporal offset from the beginning of the piece, and velocity. If you take all the notes in a composition and assign them an order, you get a sequence. A sequence can be calculated by a function. The simplest variable on which to sample that function is the number of notes written before the current note, which we'll call "c", for note __c__ounter. Another variable would be the time taken up by all the notes previously written, which we'll call "t", for __t__ime (as counted in MIDI ticks) elapsed. There's also a "data[*expression*][*expression*]:*parameter-name*" that provides the value of any parameter of any note that's been previously written in the context of that piece. But let's not talk about "data[][]:", because then things get real complicated real fast. There's also a "D" constant, for the __D__uration of the piece.

Now we get to the potentially novel part: These musical parameter functions can be piecewise! Well, sort of piecewise. The composer can use several subfunctions to define the sequence that they want to use, but instead of defining the subdomain for each subfunction as a range, instead, the length of each subdomain (aka *segment*) is calculated by a function, and the subfunction calculated over that segment is also calculated (aka *selected*) by a function. These two "control functions" are named the length selector and formula selector, respectively. This also means that each subfunction has a number associated with it, assigned implicitly by it's appearance order. Now, this segmentation allows for new variables to be used, such as the "s" variable, representing the quantity of segments previously completed, and the "L" constant (at least it's a constant segment-wise) and "l" variable, which represent the __L__ength of the current segment and the __l__ength remaining in the current segment, being measured in notes or ticks, at the composer's choosing. Additionally, there are the variables counting the number of times the subfunction has completed a segment (named "n") and the number of notes the subfunction specifically has written ("x"). These four last variables cannot be used by the control functions, because they are either calculated by them or don't know their values.

A final variable is merely a uniformly-distributed random variable, named "r", which takes a decimal value in the range [0,1[. Additionally, every "r" in a formula is evaluated independently, and has a different value.

I realize that this is a very strange way of writing music, but the idea was to provide a conceptual framework for the mathematical modelisation of individual musical pieces, which would have potentially profound consequences for music theory. In addition, we could then have a mathematical language for discussing the structure of a piece, or a specific melody, or anything that music theorists could think of.

Aug 22, 2021, 6:04:39 AM8/22/21

to François Luc Denhez-Teuton, Procedural Content Generation

I could see some interesting material here, but you'd need to contrast

this with popular livecoding frameworks (such as TidalCycles), which

also allow specifying musical compositions via mathematical formulae.

Make sure to reach out to next year's FARM Program Committee!

--

Regards,

Mike

Reply all

Reply to author

Forward

0 new messages

Search

Clear search

Close search

Google apps

Main menu