Undo and redo
Merge / Split Tracks
Meterchange
Midi reset
Harmony browser
Random rhythm generator
Mapper
Random Shuffle
Random Melody Generator
Event List Editor
Arpeggio Generator
Set Music Copyright
Undo or redo the last operation. The last 20 operations can be undone/redone.
Split tracks places all events from track 0 to track 1..16 depending on the midi channel (useful for 'decoding' a format 0 midi file).
Merge tracks moves all events to track 0 (not so useful as JAZZ++ only saves file format 1).
Figure 2.22: Meter change dialog
Changes the meter (counts per bar and note-value of each count) starting from specified bar to the end of song or to the next meterchange. Numinator is the 'counts per bar', while Denominator is the 'note-value of a count'.
Meterchange events are placed on track 0 always.
Sends an initialize message (either 'GM ON', 'GS ON' or 'XG ON') to the midi port. If synthesizer type is correctly set, most sound generators will initialize to default values when such a message is sent.
Figure 2.23: Harmony browser
Figure 2.24: Harmony browser toolbar
The harmony browser shows the 4-tuned JAZZ++ harmonies of the four scales types major, harmonic minor, melodic minor and harmonic major.
The first thing you can do is to click on chords and listen how they sound (eg examples from a song book or a book about harmony theory). The selected chord is placed into the pianowin copy buffer and can be pasted into your song (see mouse actions.
The harmony browser is also able to analyze a section of your song and to transpose parts of your song into new scales and chords. Also you may generate chords thru the random rhythm generator into your song.
What you can do with the mouse:
There is a toolbar with the following icons (from left to right):
The following five Icons (with the cyan right arrow and the piano) specify what related chords are marked when you select a chord:
If the piano button is not selected, the harmony browser works the other way round. Whenever you select a chord, the chord is placed into the pianowin buffer so you can paste it into your song. The parameters (midi channel, length etc) can be set in the midi-entry of the harmony browser menu.
The last four buttons do different things:
Haunschild layout shows harmonies and scales in an order proposed in a book about harmony theory by the German author Haunschild. If selected, chords are shown in a way that 'valid moves' are
Transpose lets you change parts of your song to the harmonies and chords of the chord sequence. When you select some bars in the trackwin and click on transpose, then the selection is mapped to the chord sequence. The default is, that on chord lasts one bar, but you may change this in the settings menu in the harmony browser. If the results are not satisfying, you should try to transpose track by track, this often works better. All in all, transposing works better, when the selected material is not too complicated.
I had nice results with the following procedure: I recorded (very slow, as I am not a good piano player) cj7 chords on one track, some monphone bass line on the second track and a solo on the third track. Everything was in c major (white keys only). Then I selected some chords and transposed each track on its own.
Analyze Tries to find the chords and scales from the selection in the trackwin. Again, the default is one harmony per bar which can be changed in the settings menu. The algorithm looks at the length of the notes and chooses the longest notes to be the notes of the chord.
Clear chord sequence removes all chords from the chord sequence.
Menu entries
Generating chords with the random rhythm generator
After defining a chord sequence, you may open the random rhythm generator. When adding an instrument, it will show (beside drums) the instrument 'chords from harmony browser'. You select it and define a more or less randomized rhythm and proceed as described here.
This one is somewhat difficult to explain, but its probably the most interesting feature of the Harmony Browser. Lets assume, you have a sequence of 4 chords. Then you select 4 bars in the track window (all tracks) and you press the transpose button. Now, the Harmony Browser tries to change the harmonies and scales from the trackwindow selection into the selected chords.
The algorithm looks at the first bar from the trackwin selection and sums up the length of all different notes. It assumes, that the 4 notes with the largest sum of length are the chords present in the song and changes them to the 4 notes from the first chord of your chord selection. Afterwards, the remaining notes from the trackwin selection are mapped to the remaining notes of the scale the chord was taken from.
Figure 2.25: Random rhythm generator
Figure 2.26: Random rhythm generator toolbar
This dialog generates rhythms from some kind of statistical specification. You define probabilities for timing, velocity and note-length and from these the rhythm is generated.
With the three sliders you specify the meter and (with # Bars) how many probabilities you want to define. Next, you can add or remove instruments to the listbox. Then you specify the probabilities for rhythm, velocity and length for each instrument.
Probabilities are set with the mouse where
In the rhythm field you specify the probabilities for every time position. A high value means a high probability that the instrument is played definitely at that time. A low value means, that the instrument may be played at that time. By adjusting high values only, you can specify a definite rhythm without any randomization.
The velocity (and length) values are looked up by the generator, whenever it decides to play a beat. It chooses one value from 1..127 (x-axis, 1..8 for length) where positions with high probabilities are chosen more often.
If the chosen length is greater than 1 step, there are no more events generated until the note quits, even if there are high probabilities in the rhythm field. You can abuse this, to make sure that there are not too many events generated (example: you have rhythm probabilities at step 4 and 5, but you want exactly one beat to be played at either of these. Specifying a length of 2 will do this, if step 4 is chosen, there cannot be an event on step 5). The length may also be used for rhythms where you want to have random intervals between the beats but you are not interested in the absolute timing positions of the beats. Look at the cowbell definition in the rrg1.rhy example for this.
We had the best results with the following: define every instrument twice. In the first definition, select high probabilities on a few timing positions together with high velocities, this makes the base groove - it is loud and does not change very much. In the second definition, have little probabilities on many timing positions with a low velocity, this makes randomized background fills, which make the whole thing more interesting and that do not override the base groove because of the low velocity.
Aside from drums there are some special 'Instruments' you can select:
The events selected in pianowin are copied to an internal rhythm buffer, so you may define multiple rhythms with different pianowin selections.
To generate, you select some bars on one track in the trackwin and press the gen button.
If the checkbox 'randomize' is not selected, the velocity and length fields are disabled. The rhythm is generated from the rhythm field only. Every position with a bar height greater 0 gives a beat, the height of the bar is the velocity.
Up to now every instrument has its own probability definition and plays on its own without listening to the other instruments. By defining groups, instruments can play a little more 'together'. Some instruments contribute their rhythm to a group and others listen to the group and play accordingly.
The contributors contribute their actual rhythm to the group, so the group maintains its own rhythm that is something like the sum of the rhythms of all contributing instruments.
The listening instruments modify their probabilities according to the rhythm of the group. If the listen value is greater 0, then the instrument will play at the same timing positions as the group rhythm. If the value is negative, the instrument will play at the timing positions where the contributors do not play.
The algorithm evaluates the instruments in the order they appear in the list. So contributors should be defined before listeners so its actual rhythm will be known to the listener. If a contributor is defined after a listener, the listener will listen to what the contributor played in the previous bar. An instrument may be listener and contributor at once.
Example 1: There are three different conga instruments: muted, high and low and you want them to play exclusively (only one instrument at a time). The first in the instrument list (eg the muted conga) will play its rhythm and contribute it to a group. The next instrument (e.g. high conga) will listen to the group with a value of -100, so it will play on those positions only where the muted conga does not play. It will also contribute its rhythm to the group. The third instrument (e.g. low conga) will also listen with a value of -100 so it will play only on positions, where none of the others play. See rrg2.rhy for an example of this.
Example 2: The open hi-hat shall go on some of the positions where the bass drum plays, it shall not play alone (without bass drum). In this situation the bass drum will contribute its rhythm to a group and the open hi-hat will listen to the group with a value of +100.
This dialog allows to modify velocity, note length, note pitch and note start. We'll explain this dialog by an example: Select length as 'Source' and velocity as 'Destin' and select some tracks in the trackwin. In the lower part of the dialog you can paint some kind of curve now, see section Random Rhythm for details.
When you press the Apply-Button the following happens: for every note on event, JAZZ++ looks at its length and looks up the length on the x axis of the curve. Now it looks at the curve and finds the corresponding value at the y-axis. This value is assigned to the velocity of the note on event. So, if you draw a diagonal line from bottom left to top right, short notes will get a low velocity and long note will get a high velocity.
For rhythm this is analogous: the mapper looks up the start time in the x axis and takes the value from the height of the corresponding bar.
When using random as 'Source' things are a bit different. The y-axis shows probability values now and the x-axis shows possible Destin values. JAZZ++ chooses for every note-on a new destin value - one of all the values shown on the x-axis. But those values, with a high probability are chosen more often, values with probability 0 will never be chosen.
The switch 'Add value' means, that the Destin value is added to the existing value and the value is not replaced. You can subtract values too by adding negative Destin values.
The rhythm and random features are probably the most interesting. The rhythm allows, to adjust velocity to a certain groove and random allows to 'humanize' midi events, add some very small timing inaccuracy or velocity changes.
With this dialog you can rearrange parts of your song based on random. The selected bars are divided into small segments (default length is 1/4 note). When pressing OK, jazz rearranges these segments in random order. Also, some of the segments may be choosen more than once while other segments do not appear at all. Options are:
See the song/shuffle directory for an example. Load shuffle0.mid, then mark from 5 to 24 on tracks 5 to 8 (chords, ..., muted gt). Select Shuffle from the misc menu. Set the segment size to 1/4 note and set the trackmode to 'one track at a time'. Then press ok. This should give you something similar to shuffle1.mid. The song shuffle2.mid was generated from shuffle0.mid by deleting the tracks 5 and 7 (marimba and brass). To delete a track, click on its name and check the field 'Clear track' at the bottom of the track dialog. After clicking OK, you can drag the empty track to a new position with the right mouse button. To get shuffle2.mid set the segments size 1/8 note.
With this dialog you can generate melodies, bass lines or chords. In general it works as follows: first it generates a small piece of melody, the seed. Then this seed is repeated several times and each time some variations are applied to the seed. Finally the melody is mapped to the harmonies using the Harmony Browser. See the description of the Random Rhythm Generator for additional information. Adjustables:
Please take a look at the examples in the song/rmg directory. To generate a new melody for example 1, do the following:
In this window, you can edit events like text. When the window is opened, JAZZ++ translates the selected events into a text form. You can edit this text in the Event List Editor and finally convert it back to midi events.
The Event List Editor allows to filter events. The Editor will show only those events that are currently enabled in the Filter Dialog in the Settings menu. As we already know, changing the filter settings affects most of the other edit functions too, e.g erase will erase only those events, that are enabled in the Filter Dialog.
The Event List Editor recognizes the following events:
This dialog generates arpeggios from chords that are already recorded. The generator scans the selected track(s) in the trackwindow. Whenever 3 or more notes sound simultanously, they are replaced by an arpeggio that consists of the chord notes and their octaves.
You can paint the kind of arpeggio: the x axis represents the time in steps, the y axis the note of the chord. A value of 5 on the y axis means: 'take the 5-th note of the chord'. If the chord does not contain 5 notes, the generator transposes the chord by one octave.
If you check the controller box, you can choose a controller (e.g. panpot). In this mode, the generator does not scan the selection but generates controller events.
Take a look at the examples in the song/arpeggio directory.