A minimal fractal music fractal music composition language
Download
1 / 52

A Minimal Fractal Music Fractal Music Composition Language - PowerPoint PPT Presentation


  • 100 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' A Minimal Fractal Music Fractal Music Composition Language' - tass


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



Tal giat
Tal Giat







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}}




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);



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



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



Gunit2
gUnit

gunit AmFm;

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

//test lexer

COMMENT:

"//hello\n" OK

"// hello world\n" OK

"/** too complicated */" OK



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


ad