[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference napalm::commusic_v1

Title:* * Computer Music, MIDI, and Related Topics * *
Notice:Conference has been write-locked. Use new version.
Moderator:DYPSS1::SCHAFER
Created:Thu Feb 20 1986
Last Modified:Mon Aug 29 1994
Last Successful Update:Fri Jun 06 1997
Number of topics:2852
Total number of notes:33157

2117.0. "Automatic Composition" by MILKWY::JANZEN (cf. ANT::CIRCUITS,ANT::UWAVES) Tue Sep 12 1989 16:23

    I have been goofing around with automatic composition.
    This is based on a compositional model that I developed 13 years ago. 
    At that time I manually wrote the music based on this model, because I
    had no computer access.  Now it is possible to have a computer
    improvise the music.
    Computer composition has a history at least back to the 50's with
    Lejaren Hiller.  There, now that's out of the way...
    
    My model is this:
    The music has 7 elements that determine it's character:
    Mean Dynamic, dynamic range.
    	the average dynamic may be mf, or f, or p (encoded numerically),
    	and the range could be the whole range, ppp to fff, say, or
        medium-wide, say one dynamic level either side of the mean,
    	or very narrow, only at the mean; all the notes would be at the
    	mean dynamic.
    Mean duration, duration range
    	The mean duration can be from zero to the maximum.  The maximum is
    	determined arbitrarily by the programmer.  At a given time in the
    	composition, the average length of a note will be this mean.
        The range of durations is centered on the mean duration.  If the
        mean duration is .5 seconds, and the range .5 seconds, then the
        durations of the notes in a brief section of music will be from .25 to
        .75 seconds, evenly distributed.
    Mean pitch, pitch range
        The mean pitch is, in my application, a note number.  In a given
        short section of music, the note average note number will be this
        mean.  The pitch range may be 1, meaning only the mean pitch will
        be heard, or the whole range of the instrument, say 110.
        If the mean is 60 at a given instant, and the range is 20, then
    	pitches from 50 to 70 may be heard, evenly distributed.
    Texture
        Texture is the number of voices, in the traditional sense, heard at
        once.  My current experiments are with one polyphonal tone color.
    
        
    At any given moment in a piece, the dynamic, duration, and pitch are
    calculated from random numbers.  (In my application, the random seed is
    from the system timer in microseconds, to avoid getting the same random
    numbers in every run).  If the random number generator generates
    numbers from 0 to 1 exclusive, then equations similar to the following
    can generate a pitch:
    
    New_Pitch = ((RND * pitch_range)-(pitch_range/2)) + Pitch_mean
    (a check for illegal pitches and durations and dynamics must be
    performed; illegal pitches are folded by octave back into the legal
    range; illegal durations and dynamics are clamped to the max or min
    values of the parameters)
    	this equation is similar for duration and dynamic.
    
    A work that generated random events in this way without changing the
    ranges could be fairly tedious.  Ways of varying the ranges and means
    of the parameters could increase variety and interest.
    The way I use is to track means and ranges of duration, pitch, and
    dynamic, and also to track the number of voices, on sinusoidal
    variations with time.  The period of these sinusoids is typically 2 
    minutes; the phase may be anything in radians.
    For example, here are expressions for pitch mean and range vs. time:
    
    Pitch_mean_period=120 seconds
    Pitch_mean_phase=- pi/2 radians
    Pitch_range_period=100 seconds
    Pitch_range_phase=0 radians
    Pitch_Mean = Total_Pitch_range*(1+sin(2*pi*(1/pitch_mean_period)*time +
    	pitch_mean_phase))
    Pitch_range= Total_Pitch_range*(1+sin(2*pi*(1/pitch_range_period)*time + 
    	pitch_range_phase))
    
    Because the phase of pitch_mean begins at the low swing of a sinusoid,
    the beginning of the piece will have very low pitches; the pitch_range
    begins at 0, which gives a median value from the sinusoid, so the
    pitches could be anywhere in the bottom half of the range of the
    instrument.
    The arithmetic is the same for duration, dynamic, and texture, except
    that there is no definition of the range of number of voices.  There
    could be, and if different MIDI channels, for example, were assigned to
    different lines, then different textures could result from having
    completely different colour combinations at different times.
    Ranges should be calculated at least twice a second.
    
    This process so far seems to generate atonal music.  If the random
    pitch is re-interpreted to be a pointer into a scale array, then any
    scale can confine the pitches to notes in that scale.
    The durations now seem very random, but if a short delay is introduced
    after each note creation, the music will pulse on that delay, for
    example, 1/6 seconds, assuming the code runs fast enough.
    
    Lastly, it is also possible to generate a random walk up and down the
    scale, rather than random notes.  This gives the lines a melodic
    quality, rather than a wind-chime kind of scattering.
    
    This model and its implementation have produced very pretty, appealing
    music similar on the surface to my piece, "Lucy's Dance", a pentatonic 
    piano piece of 2 1/2 octave range, 
    with fluid rhythm measured on a short pulse.
    
    I am now comtemplating the inclusion of motivic structure.  Melodic Motifs
    could be stored in arrays and played by each voice.
    
    MIDI has good aplicability to pop music, but also some disadvantages in
    limited bandwidth.  Neverytheless, automatic composition experiments
    can be readily performed on computer-sequencer midi setups.  This
    experiemnt runs in real time, so that it can produce indefinitely long
    streams of its music.  It is no longer meaningful to record or score a
    canonic form of a piece, call that the master, and dub it off when
    distributed.  It becomes worth while to generate new masters for each
    distribution; each recording similar, but not with identical notes,
    not with identical rhythms.  The master is the generating program
    itself.
    
    Tom janzen
T.RTitleUserPersonal
Name
DateLines
2117.1automatic replySALSA::MOELLERNested assumption callsTue Sep 12 1989 16:4112
Fascinating topic.  I got a demo version of Intelligent Music's "M" product, 
and experimented a bit.  Similarly to yours, it seems to generate motifs 
around an entered seed pattern (1 to n numbers).  As with my couple of "M"
pieces, I suspect the output of your composer is more interesting to think and
talk about than to listen to.

.. but you weren't clear if this is in the designed phase, or if you have
already coded it for some specific system.. what would be ideal is to have it
generate MIDI note output (poss. multichannel), captured for  further editin
g and instrument assignment by a regular MIDI sequencer.

karl (using DECwindows notes from node KEYS::, client side on SALSA::)  
2117.2Can we hear it?WJO::MASHIAGo placidly amid the noise and haste.Tue Sep 12 1989 17:246
    Tom,
    
    Put it on the next COMMUISIC tape. I'd buy it just to hear that piece.
    That's *real* COMMUSIC.
    
    Rodney
2117.3MIZZOU::SHERMANECADSR::SHERMAN 235-8176, 223-3326Tue Sep 12 1989 20:0112
    I once wrote a paper on how a computer might be used to generate
    music based on lyrics.  Basically, it follows patterns of intonation
    that are conspicuous to the language.  The rhythm is first worked
    out, then the melody, then the chord progressions.  Standard music
    theory tactics can then be used to work in interesting background
    fills.  There has been a lot of study done on the links between spoken
    language and music.  Many popular composers tend to compose this way, 
    often without thinking about the process.  (All kidding aside about
    whether thought is involved at all with some of the more popular
    composers ...)
    
    
2117.4jalskdjf;alksdjMILKWY::JANZENcf. ANT::CIRCUITS,ANT::UWAVESTue Sep 12 1989 20:186
    That's pretty good, Mr. Sherman.  The Vocal inflection of natural
    speech is certainly seen in good popular songs.  I have a copy of an
    scholarly article about that, although I'm not really sympathetic to
    the methodology in it.
    Hm.
    Tom
2117.5EEEEEEEOOOOOOOOOWWWWWWEEEEEEEEEEEEEMILKWY::JANZENcf. ANT::CIRCUITS,ANT::UWAVESWed Sep 13 1989 20:112
    I actually did it and am getting good feedback.
    Tom
2117.6:^)MIZZOU::SHERMANECADSR::SHERMAN 235-8176, 223-3326Wed Sep 13 1989 21:395
    Hey, Tom, ever notice how positive feedback usually leads to loud
    howls, burnout and screechy noises?  I understand that it not only
    applies to the music industry, but to electronic circuits as well ...

    Steve
2117.7Music in BASIC?GUESS::YERAZUNISCaution: Contains subliminal suggestionsMon Sep 18 1989 17:5226
    
    
    I tried a very similar hack on the monophonic, monotimbral output
    of my JapShack 2000.  The algorithm is very simple:
    
    	10 F = 100
    	20 I = 1
    	30 J = 1
    	40 F = F XOR I
    	50 I = I + J
    	60 IF F > 10000 THEN F = 10000
    	70 IF F < 30 THEN F = 30
    	90 SOUND F
    	100 GOTO 40
                     
    (note: SOUND on this machine produces a square wave 'beep' for 0.1
    second, at the specified frequency.)
    
    This produces a very interesting ( ! ) "composition" that sounds
    like a cross between Philip Glass and J.S. Bach... at least for
    the better part of the first minute.
    
    I'd say it rates at least a 2.5 on the "Eliza" artificial-intelligence
    scale.  :-)
    
    		-Bill
2117.8Missed opportunityMILKWY::JANZENcf. ANT::CIRCUITS,ANT::UWAVESTue Sep 19 1989 18:3312
    I also have written (about 9 years ago)
    automatic composition programs for a Radio Shack
     but a model 1 I recall, using the cassette port pulse, so it was mono.
    My programs were strictly chromatic atonal random, although I also had
    a scoring program that I used to record my clarinet duets (overdubbed)
    and research extremely fast (100 trills/sec) trills and such ('cause 
    they sound like multiphonics.) and I implemented Xenakis's fortran
    composition program on VAX (TM) FORTRAN and made it print out a score
    but deleted it.
    When I made my lab pdp11 play music I never wrote an automatic
    composition program for it.
    Tom
2117.9slow progressMILKWY::JANZENTom FXO-01/28 228-5421 MSI ECL TestTue Dec 12 1989 15:0416
    Well, about 6 weeks ago the automatic composition program broke when
    lattice released C 5.04.  I was so discouraged that I didn't want to
    work on it.  meanwhile I learned more C.  So last week I spent about 8
    hours on it and make it work again.  I improved the C style, moved
    unnecesary globals down into the routines they to which they belonged,
    converted almost all data structures into struct's, and took out almost
    all Lattice library routines and swapped in ANSI routines (for random
    numbers) and AmigaDOS devices (for timing).
    
    Last night I added a menu for selecting a scale; 3 koto tunings,
    whole-tone scale, one pentatonic scale, a dodecuple scale.
    Later I will make it possible to set phases and periods of control
    waves, or randomize them, and so on.
    When this stuff seems to work I will iconify/ mousify it, and probably 
    they want to reboot
    Tom.
2117.10"pink tunes"TROA01::HITCHMOUGHWed Dec 13 1989 11:566
    Tom, by any chance did you model any of these on the old "Pink Tunes"
    that ran on the PAIA stuff. I used to find that interesting and
    it would be neat  to hear it play MIDI equipment.
    
    Ken                                             
    
2117.11progressVIKING::JANZENTom FXO-01/28 228-5421 MSI ECL TestWed Dec 13 1989 13:3118
    I have the old articles about pink tunes but don't remember the
    algorithm.  I could go read it and compare the techniques.  I am using
    techniques that produce a form for computer music that 
    I was interested in in 1976 and manually
    wrote into a piece in 1977.  
    Apparently, the overhead is so high now that the program can no longer
    produce more than 10 chords/second or even less for 16 voices.  So I
    will manually optimize the code.  It used to run blinding fast.
    As of last night I can select random walk (up and down the scale)
    or random notes; the periods and phases of the form generation 
    are randomized, but I will permit manual entry soon; I can select
    pulses per second (it's just a wait between updating the voices);
    most importantly a nice header
    prints out at the beginning telling you who wrote the program.
    It might be nice to save the music as a midi file, but it's designed to
    run indefinitely, so how can you save an indefinitely large midi file?
    
    Tom
2117.12set ppq = 2048TROA01::HITCHMOUGHThu Dec 14 1989 14:068
  >      Apparently, the overhead is so high now that the program can no longer
  >      produce more than 10 chords/second or even less for 16 voices. 
       
    Tom, this may sound dumb, but how do you hear 10 chords per sec
    of 16 voices? Are we talking real time here?
    
    Ken
    
2117.13music must be fast, high and loud to be goodMILKWY::JANZENTom FXO-01/28 228-5421 MSI ECL TestThu Dec 14 1989 15:1615
    I have very fast ears.  The program improvises in real time.
    I should use diagnostic code to measure it, but I just listened.
    I know how the program works.  It has a little loop during which it
    checks all the voices to see if the current notes are over for any of
    them.  If the note on a voice is over, it picks a new note (no
    silences aloud).  Then it waits a fraction of a second before going
    again, to make the music pulse even though the voices are asynchronous. 
    It's like having a very free rhythmic counterpoint built out of
    durations that are all multiples of sixteenth notes (1/16 * 5, * 7, *
    15, * 3, *4 etc.).  So I hear the update really more like 6 times a
    second when I make the wait almost nothing.  So I have to make better
    measurements and try to optimize it.
    This is slow.  My first simple experiments gave hundreds of notes a second
    free-running.  I would like it to be that fast again.
    Tom
2117.14SALSA::MOELLERRabia's MY Qalandar Girl!Thu Dec 14 1989 15:477
>  <<< Note 2117.13 by MILKWY::JANZEN "Tom FXO-01/28 228-5421 MSI ECL Test" >>>
>               -< music must be fast, high and loud to be good >-
    
    I look forward to your computer-generated Yngwie Malmsteen
    interpretations on COMMUSIC VIII.
    
    karl
2117.15Algorhythms MIDI improvisor for AmigaMILKWY::JANZENNoting is a privilege not a rightFri Mar 23 1990 15:1414
    It has taken a long time, but I am finishing the Algorhythms program 
    in the next 10 days a
    windowed, icon, menu'ed, pointer interface to the program.  You can
    change or transpose scales on the fly, change the tempo on the fly,
    change the character, save a short form file that just saves the
    overall character descriptors.
    
    I did not come up any real icons, like little clocks for the phase of 
     the parameter sinusoids, or a keyboard that you could click on to
    build a scale, but it will draw the shape of the piece on the screen.
    Maybe later I will make it totally graphical with no words or numbers
    at all.
    Like in Fahrenheit 451, except they had numbers.
    Tom
2117.16beta test of AlgoRhythmsMILKWY::JANZENTom 2285421 FXO/28 Franklin MAWed Mar 28 1990 15:129
    This program works, but I am writing a manual and will finesse up the
    program a little.  Persons interested in reviewing this early version, 
    that is, telling me soon here or in mail what they liked and disliked 
    about it, should contact me via email for transactions through USPS.  
    Your payment for the program is your review or remarks.  You need a 
    commodore amiga computer with a MIDI convertor on the serial port, and a 
    MIDI instrument.  It improvises music according to certain rules.  Some 
    of it is kind of pretty.  
    Tom
2117.17I'll do it!DNEAST::COMBAR_CURTAyuh! I'm from Maine...Thu Mar 29 1990 02:244
I'll give it a shot.  I can do a comparison with DR. T's PVG (Programmable
Variations Generator) also...

Curt
2117.18PAULUS::BAUERRichard Bauer SAM FrankfurtThu Mar 29 1990 14:3911
Hi there !

For those who are interested:

I saw a demo of CUBASE V2 at the Musikmesse Frankfurt and they have now an
Intelligent Phrase "Something".  From what I've seen it seems that it would fit
the bill discussed in that topic. If anyone is interested I might be able to
get some additional info.

	Richard

2117.19AlgoRhythms goes to phase 4MILKWY::JANZENTom 228-5421 FXO/28Mon May 07 1990 12:424
    The AlgoRhythms program is done.  I mailed it to Fred Fish yesterday.
    It is 2800 lines of C and improvises music pretty well.
    Thanks to everyone (esp. Len) for helping with practical suggestions.
    Tom
2117.20But what does it deliver?TOOTER::EIRIKUREirikur HallgrimssonMon May 07 1990 23:285
    What kind of output does it create, Tom?  Anything a non-Amiga user can
    use?  I might be tempted to compile it for the VAX or the Mac (now that
    I have access to Mac compilers).
    
    	Eirikur
2117.21probably notMILKWY::JANZENTom 228-5421 FXO/28Mon May 07 1990 23:356
    It's too tied to Amiga Intuition to compile on anything else.  That's
    what I spend the winter doing, making it window icon menued pointer
    (WIMP, as Edd says).
    I am not sure if the early version still exists, it just worked in
    command line mode.
    Tom
2117.22Highly RecommendedDRUMS::FEHSKENSlen, EMA, LKG2-2/W10, DTN 226-7556Fri May 11 1990 20:2313
    It "delivers" MIDI note-ons and note-offs.  I have spent several hours
    playing with this program and am quite impressed.  I have been able to
    guide it to produce genuinely interesting music.  I will probably submit a
    manually "edited" version of its output to the next COMMUSIC
    compilation.
    
    Somebody facile with C might be able to port the central logic to
    the PC or Mac environment by reimplementing the user interface code.
    
    COMMUSIC Amiga owners ought to take a look at this program.  Tom's
    done a very nice piece of work.
    
    len.
2117.23testing is more work than fixingMILKWY::JANZENTom 228-5421 FXO/28Fri May 11 1990 20:424
    Of course it's a nice piece of work, I incorporated all the suggestions
    you sent me after taking the time to run it!
    Thanks!
    Tom
2117.24will it be for atariCOMICS::DSMMGRMon May 14 1990 11:599
    Is this just a 'fun' project, or is the end result destined to be a 
    comercial product ??
    
    I have an atari and I'd love to see a version of it. Is there any
    chance of this ?
    
    Just interested in this fascinating topic.
    
    Jonathan 
2117.25think before you writeMILKWY::JANZENTom 228-5421 FXO/28Mon May 14 1990 13:083
    If I make it a commerical product for the Mac and the atari, will you
    guys replace my salary at Digital? Because I'd be fired for doing it.
    Tom
2117.26?WEFXEM::COTEWhat if someone sees us? Awwwwkk!Mon May 14 1990 13:175
    > I'd be fired...
    
    I just have to ask. Why?
    
    Edd
2117.27Gratis ???COMICS::DSMMGRTue May 15 1990 12:597
    Mmmm, okay, so you'd be fired if you made it a commercial product,
    then how about gratis ???? <8^)... that's a pleading big puppy-eyed
    smiling face !!!!!
    
    I'd still love to see it for the Atari
    
    Jonathan
2117.28mumble mumble mumbleMILKWY::JANZENTom 228-5421 FXO/28Tue May 15 1990 13:384
    Insofar as the host platform is an Amiga, 
    it could be difficult to develop a program
    for an Atari target platform.
    Tom
2117.29On a Fish diskMILKWY::JANZENTom 228-5421 FXO/28Fri Jun 22 1990 13:003
    AlgoRhythms has appeared on disk 356 Fred Fish's
    freely distributable Amiga software library.
    Tom
2117.30Demo of AlgoRhythms at WCAUGVICE::JANZENTom MLO21-4/E10 223-5140Fri Jan 04 1991 18:5660
	I will be demonstrating my AlgoRhythms MIDI automatic music program 
	(1.0 is on Fish 356) at the Worcester County Amiga User Group meeting 
	9 January 1991.  Feel free to join us at 7:30.  The AlgoRhythms
	software for the  Amiga generates original music in real time over
	MIDI.

Amiga notes
Note 4184.7               Worcester Amiga club meetings                   7 of 7
ELWOOD::PETERS                                       21 lines   3-JAN-1991 10:51
                                -< Jan meeting >-
    
    			January Meeting Wednessday 9 th
    			( see note .3 for directions )
    
    	The January meeting of the Worcester County Amiga User Group
    ( WCAUG ) will be on Jan 9th at 7:30 .  This month the meeting will
    show some PD software and nominate/elect new officers. Since there
    are no new nominations and all the current officers are running I
    expect the election to be very very short.
    
    	The Worcester County Amiga Users Group is an Amiga club based
    in Worcester Ma. The club has monthly meetings, a news letter, and
    will soon have it's own BBS. The next two meetings are scheduled
    for
    
    	Meetings start at 7:30 and are held at 
    					Jeff Griffin's house
    					1 Ebenezer St.
    					Worcester, MA
    					ph 752-5050
    
    		From Plantation street turn on to Montgommery. Go to
    the end of Mongommery. Jeff's house is the first on the right.
    People arrive between 7:00 - 7:30 the meeting takes about 90 min.
    and people hang aroung and talk till 10:00.
    
                                 Ebenezer
                                     |      |
                                    *|      |
                       Montgommery  --------|
                                            |
					    |
					    | /
					    |/
                                    lights  | fire station
                                            |
                                            |
                                            |                I290
                                            |                  |
rt 9 shrewsbury	      | lights		    |lights                  |
--------=====---------+---------------------+------------------+---
	bridge        |     plantation st   |
	(over         |
	Qunsiggy)  ^  |
		   |	
    		U Mass
		Medical
		Centre
	Park just below where that asterisk is, respecting Jeff's 
neighbors' lawns and driveways, etc.
2117.31Good !ULTRA::BURGESSMad man across the waterFri Jan 04 1991 19:5212
re          <<< Note 2117.30 by VICE::JANZEN "Tom MLO21-4/E10 223-5140" >>>
>                       -< Demo of AlgoRhythms at WCAUG >-

>	I will be demonstrating my AlgoRhythms MIDI automatic music program 
>	(1.0 is on Fish 356) at the Worcester County Amiga User Group meeting 
>	9 January 1991.  Feel free to join us at 7:30.  The AlgoRhythms

	I look forward to meeting you at last  - -  and to your demo,
	of course. 

	Reg

2117.32RegretsTLE::TLET8::ASHFORTHMon Jan 07 1991 10:559
Tom- sorry I can't make it to your demo. I've only had a few minutes to try out
your AlgoRhythms program, but I was surprised by its depth. The description I
had come across in this conference don't do it justice.

BTW, for those interested in trying out AlgoRhythms, I noticed that the patterns
it produces are definitely "happier" combined with some voices than with others.
A chime or bell-like voice was quite pleasant, while a bass or piano was
jarring. I haven't tried it, but I expect that string patches would be
intriguing, to say the least.
2117.33Better map to tonites demo, weather permittingVICE::JANZENTom MLO21-4/E10 223-5140Wed Jan 09 1991 12:4831
Here is a new map to the Worcester Countery Amiga Users Group.
Note that the convention is that North is up on maps, not down.
Note that Plantation St. is not at a right angle to Route 9.
Note that the U Mass Medical, here shown in French, is West of Lake Ave,
not East. 
Tom

  North
  ^                                  Centre        
  |                                  Medical
                                     U Mass
                         /              |        
                        /plantation     v   |
   |                   /                    |       Quinsiggy
   |                  /                     |         bridge        
---+------------------+---------------------+---------=====--------
   |            lights/               lights|     rt 9 shrewsbury
   |                 /                      | 
 I290               /                       |Lake Avenue
                   /plantation street
                  /
    fire station / 
            ----/ lights
               /
              /
             /
    Holmes  /--------- Montgomery
    Field  /     |* 1 Ebenezer St. 752 5050.
          /      |
                          Ebenezer
    
2117.34General improvemetnsVICE::JANZENTom MLO21-4/E10 223-5140Mon Jan 21 1991 13:2131
	I have been making small improvements in AlgoRhythms for the past
	year but the user interface is about the same.
	The source code now conforms to the standard set forth in the
	Digital Guide to Software Engineering (Digital Press) except
	the function-level comments are not there, just module-level
	comments.  The source is much cleaner, better commented, with
	more procedurization and some hand-optimizing (which made no
	difference :-( ).
	The user interface just looks slightly nicer, but is not different
	functionally, then 1.0.
	Most of the improvements are invisible and subtle.

	However, the last change I made was for speed optimization.
	I used Fast-Floating Point format (compile and link options).
	This cut the drawing time of the graph from 17 seconds to 3 seconds.
	The program can now play so many hundreds of notes per second
	(when pulse = 0)
	that the TX81Z keeps giving "MIDI OVERFLOW" or something messages
	on the front panel.  These high note rates interest me.  However, the
	pulse still lags about the same old way.  it runs so fast that I had
	to put a delay in the "all notes off" procedure because the 
	instruments weren't responding to some note-offs.  By the same token,
	they must not see some of the note-ons, but that's inaudible.
	Of course, at slower pulse rates and smaller numbers of voices
	none of this occurs.  I guess the program doesn't need to get any
	faster. ;^)

	I can no longer xfer binaries over the phone (& the system mgr won't
	answer my mail on this), so if you are interested in trading
	Amiga disks let me know.
Tom
2117.35Demo againVICE::JANZENTom MLO21-4/E10 223-5140Fri Feb 15 1991 15:4830
	The AlgoRhythms software, which appears on the last Commusic
	tape, will be demonstrated at the March Worcester County Amiga Users
	Group at 7:30 PM on Wednesday, March 13.  I will leave it in the
	library there for people to get copies.  I may also demo other 
	short MIDI utility programs.

  North
  ^                                  Centre        
  |                                  Medical
                                     U Mass
                         /              |        
                        /plantation     v   |
   |                   /                    |       Quinsiggy
   |                  /                     |         bridge        
---+------------------+---------------------+---------=====--------
   |            lights/               lights|     rt 9 shrewsbury
   |                 /                      | 
 I290               /                       |Lake Avenue
                   /plantation street
                  /
    fire station / 
            ----/ lights
               /
              /
             /
    Holmes  /--------- Montgomery
    Field  /     |* 1 Ebenezer St. 752 5050.
          /      |
                         
    
2117.36Techiqnues and mesaurementsVICE::JANZENTom MLO21-4/E10 223-5140Thu Feb 21 1991 13:5015
	I sent an article to a journal about this (it was rejected and
	re-invited for a book but no guarantees) and a referee said that
	James Lee Tenney published in the late 60's with a plan for
	sinusoids modulating means and variances of musical quantities.
	I havn't seen it yet, so I don't know how similar it is really.
	
	I measured AlgoRhythms.  It now uses Motorola Fast Floating Point
	and is compiled more efficiently (no stack-checking etc.).
	With 16 voices going (no pulse, as fast as possible, no rhythm spread),
	it plays 205+ notes per second (that's a note-on,note-off pair).
	One voice playing that way plays 45 to 47 notes/second.
	I also fixed the bug that caused notes to be turned off and silence
	to ensue during slow sections; sure silence is nice but that wasn't
	the design. ;-)
Tom
2117.37KOBAL::DICKSONI watched it all on my radioThu Feb 21 1991 17:194
    How good is it with very short forms?  I am thinking of the music
    "punctuation marks" used in TV and radio news programs (radio
    especially).   Say something that sounds "complete" in about 10
    seconds.
2117.38nahVICE::JANZENTom MLO21-4/E10 223-5140Thu Feb 21 1991 17:336
	I have been thinking of that too.  I thought I'd send some examples
	to NRP all things inconsiderate.  But it doens't have stings.
	It turns off all the notes at the end.  It just turns on and turns off.
	Hm.  maybe I could wait a few seconds before stopping all notes at
	the end to let envelopes settle.  I dunno.
	Tom
2117.39KOBAL::DICKSONI watched it all on my radioThu Feb 21 1991 18:5015
    You could save the stuff to a Midi file and add stings (or anything
    else) by hand.  A little tedious if you have to do a lot of them.
    But how much more fun to have this mysterious black box in the studio
    with just a dial for duration and a button.  You want a 10-second
    interlude, set the dial to "10" and hit the button.  Out comes the
    music, but DIFFERENT EVERY TIME!  (Station program manager sets the
    internal controls to set the parameters of the form; DJ's not allowed
    to fiddle.)
    
    Maybe a whole other kind of algorithm could be applied for
    generating transitions between sections, the ending of the final
    section being just one case.
    
    Algorithmically generated fades, stings, and whatnot, still in the
    spirit of the main forms?
2117.40uhm,VICE::JANZENTom MLO21-4/E10 223-5140Thu Feb 21 1991 20:1113
	Well there are about 6 different automatic composition programs for
	the Amiga alone, some in Public domain, so some of them  must be
	better at traditional forms.

	See, we're getting into thiz zone of popular and commercial
	requirements, and forms with traditional harmonies and harmonic
	structure, but AlgoRhythms is deliberately designed to avoid
	traditional harmonies and structures, and is influenced by
	Cage, Hiller, Xenakis, and a host of others.  So the influences
	of AlgoRhythms are in direct opposition to the requirements
	of broadcast fillers and bumpers.  Or whatever.
	So the application is straining the system.
	Tom
2117.41LNGBCH::STEWARTSounds dangerous: count me in!Thu Feb 21 1991 20:5014

re: .36					.
					.
					.
	it plays 205+ notes per second (that's a note-on,note-off pair).
					.
					.
					.

	That's almost as fast as Yngwie or Eddie!  Not bad for software...



2117.42SALSA::MOELLERKarl has... left the building.Thu Feb 21 1991 21:338
>    <<< Note 2117.41 by LNGBCH::STEWART "Sounds dangerous: count me in!" >>>
>re: .36					.
> .....	That's almost as fast as Yngwie or Eddie!  Not bad for software...
    
    I agree !  Did you hear his Corea cover on COMMUSIC VIII ? - a
    favorite!
    
    karl
2117.43Real 50's university musicKOBAL::DICKSONI watched it all on my radioFri Feb 22 1991 12:233
    I don't see anything wrong with Hiller-esque "buttons" on radio.
    There are several little parts of the Illiac Suite, for example,
    that I think are quite nice.
2117.44it's a batchVICE::JANZENTom MLO21-4/E10 223-5140Fri Feb 22 1991 14:279
	Last night I started a batch form of AlgoRhythms with no windows.
	if you typed
	CLI>AlgoRhythmsCLI concerto.form
	It would play the concerto form and exit.  This way I can play
	whole album sides with no intervention, and make master tapes for
	each person I send tapes to.
	The MIDI stuff can be set up automatically as well, before each
	run.
Tom
2117.45AlgoRhythms demoVICE::JANZENThis is your brain on ChocolateMon Mar 11 1991 14:4710
	Because we have had a lively discussion about automatic composition,
	I am taking the liberty of inviting all those interested in seeing a
	demo of the AlgoRhythms software in eastern Worcester, Mass,
	this wednesday at 7:30 (or more like 8 or even a little later after
	some graphics demos).

	cf. reply .35 to this topic for a map.

	Before AlgoRhythms I will run some graphics/TV poop I've done.
	Tom
2117.46ROBOT::RYENRick Ryen 247-2552 TWOMon Mar 11 1991 14:535
Wish I could make it, but unfortunately I can't.
Take notes, and tell us how it goes.

Rick

2117.47AlgoRhythms demo aftermathVICE::JANZENThis is your brain on ChocolateThu Mar 14 1991 15:3132
	The great folks at the Worcester County Amiga Users Group last night
	helped me demonstrate AlgoRhythms 1.04 last night.  I played a tape
	of its output while people were settling in, but played it live thru
	a TX81Z during the demo.  I also played the molto vivace from 
	Beethoven's 9th and
	a piece from my Five Pieces After Jazz thru it using Deluxe Music.
	I left the molto vivace there for people to down-load and a few
	copied it right there.  They also copied AlgoRhythms along with
	TXLOAD, NOTEON and PRESET which are simple CLI programs for setting
	up or testing your MIDI equipment.  I also showed some graphics 
	stuff I've done in a multi-media show that ran automatically,
	and provided some of the s/w that does that stuff.  I might have an
	opportunity to get some stuff of mine played on Worcester cable, as
	a result of the demo. 

	I showed that AlgoRhythms runs much faster now; the screen udpates
	in 3 seconds for a ReDraw of the graphical music notation rather than
	17 seconds, and the program
	can play a total of 210 notes per second (the TX can't respond to that,
	it reads "MIDI BUFFER FULL" on the front) over 16 MIDI channels.
	I showed that there are now more scales (about 20), a sliding phase
	widget instead of entering radians, better system usage (no busy waits
	unless you run flat out).  I tried to demonstrate that it was
	possible to get an almost human sound by balancing the capabilities
	of the synth against the capabilities of AlgoRhythms.  People
	who have used it said that they now understand it better.  Perhaps
	the manual could be improved.

	We had a good discussion.  It went well and took about 90 minutes.

	Shoulda been there! ;-)
	Tom
2117.48"In behalf of the audience...", etc.ULTRA::BURGESSBoss* :== Sho org_chart/continuousThu Mar 14 1991 21:2019
re      <<< Note 2117.47 by VICE::JANZEN "This is your brain on Chocolate" >>>
>                        -< AlgoRhythms demo aftermath >-

	...and from the other side of the foot lights.

	I enjoyed it too.  I even got up early this morning to fire up 
Algorhythms for breakfast music instead of Morning pro musica.  Once 
the Amiga was on I started fiddling around with this and that; NO 
problem running Disk-Speed, Lemmings Demo and Algorhythms together.
I sort of expected notes to get delayed and bunched up, then come 
pouring out all at once.   I guess I had heard Tom say something about 
adding or improving the multi-tasking capability, without realizing 
that he meant its internal multi-tasking, i.e. parameter changes while 
running.  It runs well with/against other programs.

	Tnx,

	Reg

2117.49multi tasking or sending music into a VAXVICE::JANZENThis is your brain on ChocolateFri Mar 15 1991 12:0812
	Yeah right sure AlgoRhythms is well-behaved relative other programs,
	but inside it is still alternating playing/calculating.  Also Requesters
	Wait() (do nothing on the CPU at all) until input is done, also
	using pulse means there is a delay()(do nothing on the CPU at all)
	 between checking the note list
	(a cheap quanitization), and if it's not playing at all (stopped)
	it's in a Wait().
	later I may multi-task it so that playing does not stop while you 
	are in a requester.

	Just don't try to play music while using a terminal emulator ;-)
Tom
2117.50Jammin with Tom's AlgorhythmsSTAR::ROBINSONFri Mar 15 1991 19:4117
I too was inspired to play with Algorhythms yesterday (the old version
I guess).  I was surprised to find that I could play Algorhythms
and improvise along using Bars & Pipes. Great music for improv... ;-)

Then I tried to get B&P to record the Algorhythms data but it didn't. I 
haven't yet tried all of the combinations though. Why were both programs 
able to pass MIDI data through one interface?  Electronic Musician says 
the Amiga needs a standard midi lib or some such to do this.  I was able to
send patches to the VFX with a BASIC program while editing in B&P too. 

Oh Tom, B&P has an Arexx in port with the basic midi commands
note on, off, velocity, poly and mono atouch etc. It is just waiting
for input from an algorithmic composition program. `Happen to know
a program that could send such data?

Dave
2117.51serial portsVICE::JANZENThis is your brain on ChocolateFri Mar 15 1991 20:2210
	I do not know why Bars and Pipes and AlgoRhythms can both play
	the serial port.  There is a shareable  mode for the port but I
	don't remember if I use it.
	I don't use or know anything about Arexx.  You mean that if a program
	used Arexxe's interprocess communications it could send MIDI
	commandss into Bars and Pipes so that then certainly Bars and Pipes
	could record it?
	To record, try turning MIDI out into MIDI in at the hardware 
	cable level.
	Tom
2117.52thank you for your supportDFN8LY::JANZENThis is your brain on ChocolateFri Mar 15 1991 22:587
	Well I recompiled AlgoRhythms with the share flag on for the
	serial device.  Dr Ts accidentally recorded some AlgoRhythms,
	but then got flakey and stuck and unreliable.
	Maybe I should call them.
	So as far as I am concerned, self-recording is unsupported.
	However, I could try to produce a MIDI file from AlgoRhythms.
tom	
2117.53new AlgoRhythms time indicatorDFN8LY::JANZENA Refugee From Performance ArtMon May 13 1991 20:2412
For those who care, AlgoRhythms has been updated with a time indicator
	that is a vertical line from top to bottom that moves across
	the window as the peice plays, very much (totally coincidentally)
	like Bars and Pipes, which I happened coincidentally to see
	demo'd last Wednesday at Worcester county amiga users group.
	This time indicator is much better than a skinny horizontal line,
	I think.  It appears to be moving, but is not a sprite or bob,
	just a line in complement mode.  Interested parties contact me,
	I can't upload binaries.
	
	coincidentally,
	Tom
2117.54SMUS to MIDIDFN8LY::JANZENArthur a grammarSun Aug 25 1991 15:126
	This seemed liek a suitable place to say to persons with Amigas
	and sequencers that I have written a program to convert SMUS files
	from DMCS to standrad MIDI files.
	Let me know if you are interested in it.  It is on the BCS Amiga
	bulletin board in Boston
Tom
2117.55window examples PIANST::JANZENLove looks not with the eyesFri Sep 27 1991 13:1216
	Persons interested in seeing what AlgoRhythms looks like (the program
	with which I made the music for submission to the last commusic tape)
	the following postscript files are available:
	(please save corporate resources and
	don't print these out, my name is all over them; use 
	CDA viewer for .ps files.)
	PIANST::DISK$USER:[JANZEN.PUBLIC]FIGURE1.PS
					 FIGURE2.PS
					 FIGURE3.PS
					 FIGURE4.PS
					 FIGURE5.PS
					 FIGURE6.PS
	
	These show four shades of gray, although AlgoRhythms now runs on an
	8-color screen screen with user-selectable colors.
	Tom
2117.56location of almost current AlgoRhythmsDFN8LY::JANZENLove looks not with the eyesSat Sep 28 1991 15:399
	The current version of AlgoRhythms , or anyway the previous one,
	with an 8-color screen, is at the Boston Computer Society 
	Amiga BBS at (617) 729-7340.  I forget how to get on there.
	Anyway, the file is ALGORHYT.LZH (obviously the Amiga group would
	have an MS DOS type bbs host, with 8-character names.  phht ack).
	THe current version also has user-settable colors, but I havne't
	uploaded that yet.
	And probably won't until it can save midi files.
Tom
2117.573DPIANST::JANZENLove looks not with the eyesMon Sep 30 1991 18:034
	AlgoRhythms appearance has improved: the channel dialogue box's
	Walk/Don't Walk button now has a 3D push-in push-out appearance.
	Several people were clammering for this feature.  Well, I was.
Tom
2117.58Real Computer Users Need AlgoRhythmsRGB::ROSTI Had A Torrid Affair With GeraldoWed Oct 23 1991 17:2312
    How much was written in a high-level language (C?) and how much is in
    assembler?  How tightly coupled is it to the Amiga architecture? Would
    it be possible for someone as a long-term project (like me, frinstance)
    to port this over to run on another PC (like an Atari ST, frinstance)?

    Have you released the sources as well as the executables?

    Am I asking too many insufferable questions?   8^)  8^)


    						Brian

2117.59oh boy! market broadening!PIANST::JANZENLove looks not with the eyesWed Oct 23 1991 17:3543
>    How much was written in a high-level language (C?) and how much is in
>    assembler?  

C: 100%
68000 Assembler: 0%
Bliss: 0%
FORTRAN 77: 0%
Ada: 0%
MACRO 32 : 0%
MACRO 11: 0%
Z80: 0%
Pascal: 0%
BASIC: 0%
COBOL: 0%
Lisp: 0%
Snobol: 0%
C++: 0%
Trellis/Owl: 0%
CLOS: 0%

>How tightly coupled is it to the Amiga architecture?
Musical Functions: 5% (serial interface, representing well-localized
complexity, hidden information, and clean decomposition)
Windowed user interface: 100%
> Would
>    it be possible for someone as a long-term project (like me, frinstance)
>    to port this over to run on another PC (like an Atari ST, frinstance)?
Yes.  There are already #if compile switches for a command-line only
version.  You would then need to write a program to develop the data file
to input to AlgoRhythms.
>
>    Have you released the sources as well as the executables?
Yeah, against my better judgement.
>
>    Am I asking too many insufferable questions?   8^)  8^)
Yes, but that's better than asking impertinent questions. ;-)
>
/*
** A Question!  Since before your sun burned hot in space, and before your 
** race was born, I have awaited a question!
*/

-Tom
2117.60:*MIZZOU::SHERMANECADSR::Sherman DTN 223-3326Wed Oct 23 1991 18:463
    What!?!  No DCL?
    
    Steve
2117.61PAMSRC::ZACHWIEJACycles for nothing, and mips for freeFri Oct 25 1991 21:382
    
    and you forgot KOALA !
2117.62minor improvementsPIANST::JANZENLove looks not with the eyesMon Oct 28 1991 11:054
	AlgoRhythms 1.06 is on the BCS Amiga and Workbench bulletin boards.
	MIDI Channels are referred to from 1 to 16 instead of 0 to 15 as
	before.  The voice requester is smaller and conveniently under the
	voices menu.  The menus are decorated for clarity. -Tom
2117.63AlgoRhythms 2.0 is comingPIANST::JANZENThomas MLO21-4/E10 223-5140Thu Dec 26 1991 11:0718
	I have implemented MIDI file saving in AlgoRhythms.  This enables
	the computer-generated music, which is played in real time, also to
	be saved as a MIDI file.  This file could be used with commercial
	software to make a score of the piece, or play it again.
	The score is not absolutely identical in rhythm to the real-time
	performance, but close.

	I am debugging the record module, but it has already made a file
	that Dr. T's KCS could play.  It makes Type 1 files.  I experimented
	with Type 0 files, but changed my mind.

	This enables me to respond to commissions for new works by just
	running AlgoRhythms for a while, saving the file, and using a 
	scoring program to print out parts.  If only I had commissions. ;-)

	I will release this program to free distribution or a magazine soon.
	I can't upload it due to technical difficulties with modems here.
Tom
2117.64MIDITOOLSPIANST::JANZENThomas MLO21-4/E10 223-5140Fri Dec 27 1991 10:5610
	Jack Deckard, the author of MIDITools, has sent me his version of
	AlgoRhythms, which uses MIDITools (for a shareable MIDI port)
	and another developer's requester library for a file requester.
	I believe that I will try to incorporate these changes into
	AlgoRhythms 2.0 before sending it out.  I sent Jack the current
	pre-MIDI file save version.
	AlgoRhythms 2.0 will be about as done as it's gonna get, if only
	I has beta test sites....
;-)
Tom
2117.65AlgoRhythms 2.0TDFN8LY::JANZENThomas MLO21-4/E10 223-5140Wed Jan 01 1992 19:4618
	AlgoRhythms 2.0 for the Amiga is ready to test, to see if it erases
	your hard disk partitions!
	AlgoRhythms 2.0 is a MIDI music improvisor with new features.
	1. saves MIDI standard files of its own output, so that you can
		process the output with commercial MIDI s/w, such as
		score printers and editing sequencers.
	2.  Uses the req.library if present, so that a nicer file requester
		appears for the three file commands.
	3. Has 20 monophonic voices.
	4. Plays ca. 175 notes/second over 20 voices, if desired.
	5. On its own 8-color screen.
	6. Improved appearance
	7. More scales over 1.0
	
Please let me know if you are interested in testing this software.
I can't upload it due to technical problems with uploads.
Thanks
Tom
2117.66reqlibPIANST::JANZENThomas MLO21-4/E10 223-5140Fri Jan 03 1992 11:135
	Note that AlgoRhythms 2.0 uses req.library from reqlib on Fish disk
	400 if available, or a cheap file requester if it isn't.  Just put
	req.library from reqlib into libs: directory, to get a nice file
	requester.
tom
2117.67AlgoRhythms 2.0 test kit on net PIANST::JANZENThomas MLO21-4/E10 223-5140Mon Jan 06 1992 10:5921
	Hi.  Bob A. has done me a big favor and uploaded AlgoRhythms.lzh
	kit to EOT::AMIGA:[UPLOAD]ALGORHYTHMS.LZH.  Thanks Bob!
	This is a TEST kit.  It may destroy your hard disk, but I doubt it,
	it hasn't destroyed any of my floppies.  I'm not responsible for
	any damage.

	This kit is already a tad old.  It doesn't have a hard-coded TOPAZ80
	font for AmigaDOS 2.0, so your soft font will rule.  This has
	already been fixed on my disks and will appear soon.
	It will use the complete file requester from 
	req.library (fish 400: REQLIB) if available, or a cheap file 
	requester if not.  Also I have fixed the manual and readmes, so those
	will appear soon too.

	Lastly, I have discovered notes of 1-clock tick duration in the MIDI
	file that were longer in live performance by AlgoRhythms.  I can
	kludge that up this week.

	Thanks for testing AlgoRhythms before I send it to Fred!
	Please let me know if it breaks!
Tom
2117.68AlgoRhythms 2.0 donePIANST::JANZENValuing Differences for Coding StandardsMon Jan 13 1992 11:038
	AlgoRhythms 2.0 is complete and was sent to Fred this morning.
	It will be uploaded by a friend of ours later this week.
	(Thanks Bob!).  I fixed the note duration thing and a window title
	thing and updated all the docs.
	I like my program. ;-) I havn't had time to play with it for months.
	But I may upload MIDI files made by it in the coming weeks, such as
	the pieces on Commusic9.
Tom
2117.69I like it even more.TERSE::ROBINSONMon Jan 13 1992 12:5213
 Thanks for your work on this Tom.  I downloaded V1.6 the other day and
 had a very entertaining evening using it. I'm not sure what changed
 most since the last time I played with it, A: AlgoRhythms, B: my knowledge
 of my synth, C: I just choose different forms, but I found some very pretty
 music "in there".  And, if anyone needs some eerie music for a suspense
 video you can't beat this program. 

 The randomness created by this program also exercises patches in a way that 
 normal playing might not. I found extra expression hidden in the extreme
 levels of velocity or note length that surprised me on patches I hadn't fully 
 explored or examined.

 Dave
2117.70AlgoRhythms 2.0 PIANST::JANZENTom MLO21-4/E10 223-5140Mon Jan 20 1992 17:296
	AlgoRhythms 2.0 MIDI music improvisor for the Amiga is at 
	eot::amiga:[upload]algorhythms2.lzh.
	
	Have fun improvising music!  Now those with Amiga have no excuse for
	not submitting hours of stuff to commusic(TM) tapes! ;-)
Tom
2117.71thanks, TomEZ2GET::STEWARTthe leper with the most fingersMon Jan 20 1992 17:3412
    
    As much as I appreciate Tom's efforts, I hope the Amigans don't take
    his suggestion to enter lengthy compositions.  Maybe they could just
    post whatever parameters they started with so that their fellow Amiga
    owners can approximate the original composition?  Those of us without
    Amigas would just have to use our imaginations...
    
    
    
    
    I saw Tom's smiley face and here's mine:  *8')  No flamefests, OK?
    
2117.72Hmmm - Encode the parameters into a single number, and ... DRUMS::FEHSKENSlen, EMA, LKG1-2/W10Mon Jan 20 1992 18:286
    Even setting AlgoRhythms' parameters to "composer" supplied values will
    not guarantee the same "composition"; the random number generator has
    to be initialized the same way too...
    
    len.
    
2117.73File uploadsPIANST::JANZENTom MLO21-4/E10 223-5140Mon Jan 20 1992 18:355
	yes, but it is now possible to upload a MIDI file from AlgoRhythms'
	output.  For example, I could upload MIDI files of
	close recreations of the 
	commusic 8 AlgoRhythms submissions.  If I could upload binaries.
tom
2117.74...RANGER::EIRIKURMon Jan 20 1992 20:215
I have it on good authority that being unable to upload binaries is not a
hereditary condition.  

Eirikur