MidiWriter

Description

MidiWriter is a framework for algorithmic music composition. It includes a lot of generic functions, a midi reader and writer, a huge collection of different generators for small chunks and some variation functions.

It comes already with some examples which are described later.

Full source code can be viewn here: SVN repository
SourceForge project site: SF site

Songs

Song 1 source codemidiogg

created by Albert Zeyer - 06-04-2007
code under GPL

Based on the Walker1 class. I use the InterpolateWalkerMainFct
to define the main function. For the direction function, I just
use the SampleWalkerDirFct. The note function is based on
InterpolateWalkerNoteFct, its data is just copied from the main
function.

The Walker1 class supports multiple tracks whereby it was not
working that well when this song was developed, therefore
I use only one single track here.

The source also includes the viewing of the main function in
a plotter.

Song 2 source codemidiogg

created by Albert Zeyer - 30-07-2007
code under GPL

Yet incomplete.

Song 3 source codemidiogg

created by Albert Zeyer - 22-04-2008
code under GPL

Similar to Song 1 but uses Walker2.

Yet incomplete.

Song 4 source codemidiogg

created by Albert Zeyer - 30-04-2008
code under GPL

This song is developed for Miriam - part of Experimental Sonatas 1.

No walker, just some concrete enjoying with chunks and a concrete song
intended to be a template to be generalised for a walker.

The first part is generated by using different NewtonPolynoms. This
gets partly inverted. Both chunks are added then to the track.

The second part is defined by concrete notes. It was mainly to get
a feeling how to generalise things in a good way later.

The second part also gets inverted and both parts are added to the
track with small variations (only change of base note).

The end is basically based on getLadder().

I introduced an algorithm in this song to generate a second track
as a variation of the first track on-the-fly. This second track
plays in the background and is meant to complete the first track
at certain points.

Song 5 source codemidiogg

(based on Song 4)

created by Albert Zeyer - 19-05-2008
code under GPL

This song is developed for Miriam - part of Experimental Sonatas 1.

No walker, just some concrete enjoying with chunks and a concrete song
intended to be a template to be generalised for a walker.

Basically some NewtonPolynoms, together with some ladders (these are the
functions getPoly3Chunk(), getLadder_Len() and getLadder()) are used at
the beginning to create the first main part.

Then, very similar to Song 4, this chunk gets inverted and repeated.

The second part is a variation of the second part of Song 4. The variation
basically extends it automatically with more notes.

The whole structure is then similar to Song 4.

The end is basically a ladder by getLadder() with an end note.

The second track is almost the same algorithm as in Song 4.

Song 6 source codemidiogg

created by Albert Zeyer - 19-05-2008
code under GPL

This song is developed for Miriam - part of Experimental Sonatas 1.

No walker, just some concrete enjoying with chunks and a concrete song
intended to be a template to be generalised for a walker.

In this case, the main melody is defined by an Interpolate function
(see fct), used by getChunkForAllFullNotesInFct().

This chunk is variated first by using the inverse (getInvertedChunk()).

Secondly, I also introduced a modified Sinus and added both (with fct_add()).
The resulting function newFct is the base for the next part (also by using
getChunkForAllFullNotesInFct()).

To create the end chunk, I used the beginning part of newFct (because it
seemed like a good end for me) together with an end note (endChunk->lastNote()) - 4).

The second track is an extended version of the 2nd track variator of Song 4.

Compilations

Experimental Sonatas 1

This compilation was developed as a birthday present for Miriam.

The development includes Song 4, Song 5 and Song 6.

Compilation content:

Song 6 (rev93)
Song 5 (rev98)
Song 4 (rev95)

bonus track - Song 4 rev87

extra bonus track - Song 1 ( original sample7 rev23 )

Contact

Write a mail to admin [at] az2000 [dot] de or visit my homepage www.az2000.de!