Skip to content

vug/reproduce-riff-o-matic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reproduction of "Rough Raga Riffs"

This repository is to study Brad Garton's great algorithmic composition Rough Raga Riffs.

It was composed in 1991. This is the original program note

Rough Raga Riffs is the sonic output of my attempt to grow a wailin' heavy-metal guitarist in my NeXT computer. For this piece, however, the heavy metal seems to have been mined somewhere in South India -- hence the 'raga' in the title.

The synthesized guitar sounds come from a remarkable variation of the Karplus-Strong (or "plucked-string") digital synthesis algorithm written by Charles Sullivan. The 'virtual guitarist' you hear performing is actually a LISP program designed to improvise suitably "wailin'" guitar riffs when given a simple scale. I'm able to coerce different sorts of melodies and playing techniques by holding long conversations in LISP with my home-grown guitar player, but the actual note-by-note musical choices (pitch, rhythm, articulation, etc.) are being made by something other than me. And I swear I can hear it practicing late at night...

The score is generated using Common Lisp code. Then that score is fed into Cmix a computer music framework made by Paul Lansky himself.

Generating score

  • Install CLISP "an ANSI Common Lisp Implementation". Latest binaries from 2010 are at sourceforge.
  • Get the piece-o-matic code and extract to a folder, say riff-o-matic.
  • Get utils.lisp from Garton's software link and move into the same folder.

The way I was able to generate some score is to call riff-o-matic(nnotes) in CLISP interpreter to generate nnotes notes. But first some small amount of changes such as setting the utils.lisp file correctly and redefining calcsteps function is needed, which were done in this repo.

  • On command line, go to riff-o-matic folder. Run clisp interpreter.
  • Inside the interpreter run (load 'interpreter.lisp) command.
  • This loads necessary function definitions.
  • Generate some notes via (riff-o-matic 10).
  • It asks for a file name.
  • Say test_score.sco.
  • It'll generate the file with CMIX commands.

This is my output

FRET1(0 , 0.060093362 , 4.08 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
FRET1(0.060093362 , 0.060093362 , 4.09 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
FRET1(0.120186724 , 0.060093362 , 4.1 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
FRET1(0.18028009 , 2.0717335 , 5.0 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
FRET1(2.2520137 , 1.0627258 , 5.01 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
FRET1(3.3147395 , 0.08079089 , 5.0000005 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
FRET1(3.3955305 , 0.08079089 , 4.1100006 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
MAKEGEN(1 , 10 , 1024 , 1 , 0.1)
MAKEGEN(2 , 7 , 1000 , 0 , 100 , 1 , 200 , 0.7 , 50 , 0.95 , 150 , 0.8 , 125 , 0.7 , 75 , 0.9 , 200 , 0.5 , 100 , 0.89)
VFRET1(3.4763215 , 2.0521562 , 5.0 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1 , 5 , 7 , (CPSPCH( 5.0 ) * 0.02) , 0.174)
FRET1(5.5284777 , 0.5565672 , 5.01 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
FRET1(6.085045 , 0.061817233 , 5.0000005 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
FRET1(6.146862 , 0.061817233 , 4.1100006 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
MAKEGEN(1 , 10 , 1024 , 1 , 0.1)
MAKEGEN(2 , 7 , 1000 , 0 , 100 , 1 , 200 , 0.7 , 50 , 0.95 , 150 , 0.8 , 125 , 0.7 , 75 , 0.9 , 200 , 0.5 , 100 , 0.89)
VFRET1(6.208679 , 1.0616497 , 5.0 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1 , 5 , 7 , (CPSPCH( 5.0 ) * 0.02) , 0.864)
FRET1(7.270329 , 1.0403857 , 5.01 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
MAKEGEN(1 , 7 , 1000 , 1 , 25 , 0.97 , 75 , 1 , 100 , 0.95 , 50 , 0.99 , 500 , 0 , 100 , 0.05 , 75 , 0.02 , 25 , 0 , 50 , 0.2)
BEND1(8.310715 , 2.0735993 , 5.01 , 5.03 , 1 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
MAKEGEN(1 , 7 , 1000 , 0 , 75 , 0.03 , 25 , 0.01 , 350 , 1 , 450 , 0 , 50 , 0.02 , 25 , 0.01 , 25 , 0.03)
BEND1(10.384314 , 0.52708966 , 5.01 , 5.03 , 1 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
FRET1(10.911404 , 0.085689664 , 5.0000005 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
FRET1(10.997093 , 0.085689664 , 4.1100006 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
FRET1(11.082783 , 0.5252182 , 5.0 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)
FRET1(11.608001 , 2.0566807 , 5.01 , 20 , 1.0 , 15 , 0.07 , 7.0 , 0 , 1)

CLISP references

Rendering score into sound

It looks like Cmix is not available anymore.

Garton made its real-time version called RTcmix. We'll try to modify the score so that it'll run on RTcmix.

About

Reproduce Brad Garton's Rough Raga Riffs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published