A minimal fractal music fractal music composition language
This presentation is the property of its rightful owner.
Sponsored Links
1 / 52

A Minimal Fractal Music Fractal Music Composition Language PowerPoint PPT Presentation


  • 38 Views
  • Uploaded on
  • Presentation posted in: General

A Minimal Fractal Music Fractal Music Composition Language. Jake Amonette, Tal Giat , Brian Hsieh, Eugene Yao Team Mondegreen. Jake Amonette. Tal Giat. Brian Hsieh. Motivation. Different. Fractal. Context Free Art.

Download Presentation

A Minimal Fractal Music Fractal Music Composition Language

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


A minimal fractal music fractal music composition language

A Minimal Fractal MusicFractal Music Composition Language

Jake Amonette, Tal Giat, Brian Hsieh, Eugene Yao

Team Mondegreen


Jake amonette

Jake Amonette


Tal giat

Tal Giat


Brian hsieh

Brian Hsieh


Motivation

Motivation


Different

Different


Fractal

Fractal


Context free art

Context Free Art


A minimal fractal music fractal music composition language

startshape startrule start{ SS1{ s 1.5 y -.13} }rule SS1 { BASE{s 1.3} BARNEY {} FRED {}}rule BASE { SQUARE {b 0} SQUARE {s 0.9925 b 1}}rule FRED { SQUARE {b 0} SQUARE {s 0.9925 b 1} FRED {r -3 s 0.98}}rule BARNEY { SQUARE {b 0} SQUARE {s 0.9925 b 1} BARNEY {r 1 s 0.98}}


Programmer

!Programmer


Deterministic

Deterministic


Steve reich amfm mozart

Steve Reich < AmFm < Mozart


Language description

Language Description

  • AMFM

    • Object based music fractal composition language

      • Seed-based

      • Self-similar manipulations

    • Outputs music file


Sample program

Sample Program

seed pianotest{PIANO; //6 bars of flute, 1 bar per line  A4,1/4; C5,1/4; E5,1/8; G5,1/8; F4,1/4;  E5,1/4; C5,1/4; A4,1/2;  A4,1/4; C5,1/4; E5,1/8; G5,1/8; F4,1/4;  E5,1/4; C5,1/4; A4,1/2;C5,1/4; D5,1/4; G5,1/8; A5,1/8; Ab4,1/4; G5,1/4; D5,1/4; C5,1/2;}

seed flutetest{  FLUTE; //1 bar of flute, 1 bar per line  A4,1/8; C5,1/8; E5,1/16; G5,1/16; F4,1/8; E5,1/8; C5,1/8; A4,1/4;}start {play(pianotest, 1, 6);SSRhythm(flutetest, 3, 4);}

seed pianotest{

}

PIANO; //6 bars of piano, 1 bar per line

A4,1/4;

C5,1/4; E5,1/8; G5,1/8; F4,1/4;

  E5,1/4; C5,1/4; A4,1/2;A4,1/4; C5,1/4; E5,1/8; G5,1/8; F4,1/4;  E5,1/4; C5,1/4; A4,1/2;C5,1/4; D5,1/4; G5,1/8; A5,1/8; Ab4,1/4; G5,1/4; D5,1/4; C5,1/2;

seed flutetest{  FLUTE; //1 bars of flute, 1 bar per line A4,1/8; C5,1/8; E5,1/16; G5,1/16; F4,1/8; E5,1/8; C5,1/8; A4,1/4;}

start {

}

play(pianotest, 1, 6);

SSrhythm(flutetest, 3, 4);


Translator architecture

Translator Architecture


Systems integration

Systems Integration

  • Music generated by Fractal Composer by Myron Marston

  • Open source fractal music engine

  • www.fractalcomposer.com


Fractal composer

Fractal Composer

  • Fractal music Java library


Fractal composer1

Fractal Composer

  • AMFM generates a Java class that uses Fractal Composer

  • Fractal Composer generates musical output


Fractal composer2

Fractal Composer

  • Simple, right?


Fractal composer3

Fractal Composer

  • I thought so, but…


Fractal composer4

Fractal Composer

  • Problems!


Fractal composer5

Fractal Composer

  • Normally accessed via web front end

  • Unsuitable for our use. Also…


Fractal composer6

Fractal Composer

  • UI is cumbersome for creating large/complex compositions


Fractal composer7

Fractal Composer

  • Can’t read a UI like you can a program (or musical score)


Fractal composer8

Fractal Composer

  • Limitations!


Fractal composer9

Fractal Composer

  • Cannot have more than one seed per composition


Fractal composer10

Fractal Composer

  • No notion of sequence

  • AMFM allows composer to start or stop playing seed arbitrarily


Fractal composer11

Fractal Composer

  • Solution!


Fractal composer12

Fractal Composer

  • Extensive modifications to library


Fractal composer13

Fractal Composer

  • Refactored structure of library


Fractal composer14

Fractal Composer

  • Added multi-seed capability


Fractal composer15

Fractal Composer

  • Added basic sequencing


Fractal composer16

Fractal Composer

  • Modified API to allow generic front end


Environment and support tools

Environment and Support Tools


Test plan

Test Plan

Code check in/out


Test plan1

Test Plan

Code check in/out

Write new code


Test plan2

Test Plan

Code check in/out

Write new code

Automated regression testing


Test plan3

Test Plan

Code check in/out

Write new code

Automated regression testing

Black box testing


Test plan4

Test Plan

Code check in/out

Write new code

All tests

passed

Automated regression testing

Black box testing


Gunit

gUnit

  • gUnit, a unit testing framework for

  • SampleTest.gunit

gunit AmFm;

@header{package org.mondegreen.amfm.compiler;}

//test lexer

COMMENT:

"//hello\n" OK

"// hello world\n" OK

"/** too complicated */" FAIL


Gunit1

gUnit


Gunit2

gUnit

gunit AmFm;

@header{package org.mondegreen.amfm.compiler;}

//test lexer

COMMENT:

"//hello\n" OK

"// hello world\n" OK

"/** too complicated */" OK


Gunit3

gUnit


Conclusion

Conclusion

  • Never be afraid to redesign

  • You have to work hard, so your language users won’t have to

  • Antlr has a steep learning curve, but after that it is a fun ride downhill

  • Building on top of open source code is a double edge sword: you have the code, but not the documentation


  • Login