back to menue

RHYTHMIC interactive MIDI loop generator and composer

The intention of "RHYTHMIC" is to provide a simple but flexible tool for generation and handling of rhythm patterns combined with a polyphonic chromatic instrument track.

Preferably it is intended for musical instrument training. A chromatic base line, a chord sequence or a simple melody may be added to the percussion pattern as a simple "rhythm section".

This rough and open concept may be used for for interactive composition too, because every drum beat and note can immediately be changed during playback. Furthermore, the loop length and position may be changed during playback, so it is possible to optimize small phrases interactivley.

Navigation on the sound pattern screen is made with the mouse and is additionally possible with cursor keys. Setting/deleting of events is made with the mouse buttons or with the keys 'V', 'D' and 'X' (details see below). This way the complete event handling is possible with the keyboard too. In some situations this works faster and more precise than clicking by mouse.
Drum beats and chromatic notes may be entered interactively via MIDI IN - by a keyboard or MIDI drumset for example.

Any number of loops may be joined together in an ASCII text file. An interpreter is implemented to playback the list as a complete song or store it as MIDI File.

There is a significant difference between conventional musical notation using five lines and the concept introduced here. Regardless of the tune key, all notes are entered here in "intervals". Every horizontal row represents a specific semitone. Every light brown row stands for an octave, every light green row stands for the 4th interval of the octave.
It is structured a little bit like an electric piano player roll or a punchcard.

When the tune gets transposed, simply the symbolic keyboard display at the right (and left) side of the pattern area is shifted up or down. The display of the musical pattern is kept constant. For special pitch modification, all notes in a bar can be shifted by semitones while the tune remains unchanged.

The software is available be downloaded for free, see bottom of this page

program window as screenshot

This software was derived over a period of time from the "DRUMS" example presented in "Programming Windows -5th ed." by Charles Petzold. The internal structure of the program was modified almost completely and many features were added.

For best fitness to different kinds of PC display, versions with a different number of max. number of beats per loop are provided:

To get started, first you should decide, which measure and time structure you want to start with. Select with menue "Beats/Bar ".
Every column in the main screen represents one beat within this structure, a kind of timeline. The first beat of every bar is marked with a light brown vertical column. To get more resolution and/or special accents, a musical bar may be extended over several software defined bars. For this reason, bars with 12,16 and 24 beats are provided, to handle 1/16 notes for example. For improved orientation, certain colums are coloured light grey. But only the light brown coloured first beats per bar put an accent to the sound.

After the mouse is positioned over a raster point or it is addressed by cursor keys with the left mouse button beats of percussion instruments are inserted into the pattern. Alternatively you can set a percussion instrument by pressing key 'D' (case independent). Attention: to use keys D,V and X, first you have to mark a raster point by mouse click or by cursor key. They do not react immediately on mouse position.
The kind of percussion instrument is selected by the vertical position according to the instrument list at the left side of the display. The transmitted Note On message corresponds with the "General MIDI" standard. Any number of percussion instruments can be selected to be triggered per beat. A selected percussion instrument is marked with a magenta raster dot. If a selected instrument is hit again by the left mouse button or key'D', it gets removed. As percussion patterns most times are repeated per bar, most times it is only necessary to enter the percussion section for one bar. This can be copied to other bars and later be modified individually. For details see below.

Alternatively or additionally, with the right mouse button (or key 'V' - case independent) touches for the chromatic instrument are set (piano by default).
At both sides of the window (RHYTHMIC72 only at the right border), a symbolic piano keyboard is displayed - the left part of a real piano keyboard is positioned towards the bottom of the window. Chromatic instrument touches are marked greenish cyan.. Any number of notes (chords) may be set per beat, possibly limited by polyphony of your MIDI synthesizer.

If percussion and chromatic instruments are overlayed at a raster point, the corresponding color changes to black. All events from a raster point are cleared with the middle mouse button or key 'X' (case independent). At the actual "cursor" position, the respective colors - as describe above - are highlighted. If no event is activated under the "cursor" position, this raster point is marked solid blue.

It is possible to enter drum beats and chromatic notes interactively via MIDI IN - by a keyboard or MIDI drumset for example. The MIDI IN port is selected by menue, details see below. MIDI IN and MIDI OUT always use the same MIDI channel, one for chromatic notes, another one for the drumset. When a MIDI Note On message is received at the selected MIDI IN port, the sound is immediately (asynchronously) retransmitted at MIDI OUT for acoustic feedback, but the stored value gets quantized according to the rastered timing.
Exclusively Note On messages at the selected MIDI channel with nonzero velocity are evaluated. Note Off messages, Control Change, SysEx etc. are ignored. The end of a note is determined by the actual note pattern of the loop. The note velocity is not registered, during playback it is defined by the parameters selected by menue and slide bar. Every note value gets registered at its orginal MIDI pitch. Note values out of the pitch range given by the raster are discarded. Special pitch shifts as described below are not handled during recording via MIDI IN, but when the registered notes are played back later.

If a typical base instrument is selected by the "Instrument" menue, all notes are played one octave lower automatically.

Some horizontal rows are colored light brown. These mark the octaves of chromatic instruments in relationship with the selected key tune (default C). Other rows are colored light greenish. These mark the 4ths intervals for chromatic insturments. Will be helpful for insertion of notes.
The MIDI note value of the lowest octave line is inserted as number at the right bottom of the screen.

The lowest two rows have special functions:
The light bluish row is used to mute chromatic instruments and to add velocity "free accents". If a field is marked with the right mouse button, all pending notes are muted (stopped) immediately at the beginning of this beat. Else any note is not muted before another touch is performed with the same note value. If marked with the left mouse button, velocity may be increased or lowered for this beat corresponding to the selection of the "FreeAccent" menue. More details see below at the description of the "FreeAccent" menue.
The light red row is used to punctually increase the note range: If marked by the right mouse button, every note above the thick black line is shifted up by one octave. If marked by the left mouse button, every note below the thick black line is shifted down by one octave (acoustically, not visually).

To get RHYTHMIC playing back, the MIDI interface has to be selected by the "MIDI-OUT" menue.
A basic choice is "Microsoft GS Wavetable Synth", which is the default setting. Depending on your sound system, a better sound generator may be selected. Furthermore the MIDI channels for percussion (usually channel 10) and chromatic instruments have to be selected.
Playback is started with item "Loop File" of the "Play" menue and stopped with item "Stop". Alternatively it stops at the end of the current loop with the menu item "Stop at Loop End". Stopped loops can be restarted from the current beat with "Continue" or restarted from the beginning with "Loop File". During playback, the acutally played beat is monitored by a black dot running at the bottom of the window. Percussion beats and note touches may be modified arbitrarily during playback.

At the top of the window (below the menue bar) there is a sign |: which marks the beginning of the actually played loop. It can be positioned with a left mouse click into this upper display area. Correspondingly the end of the loop is marked with :| which may be repositioned by a right mouse button click into the uppermost display area. The loop is performed within the |: :| marked range. The colums where |: and :| are placed, are not part of the loop.

At the right edge of the display two scrollbars are installed
--- to set the playback speed
("Bpm") between 40 BpM (bottom) and 506 BpM (top). This very high top value may be useful the create short but complex sound patterns
--- and the loudness ("Vel") of the output (= MIDI velocity, not a volume control of the loudspeaker).
At the right bottom corner the MIDI note is displayed, which is the base note of the lowest octave. May be overridden in selected colums by entry to the lowest light red row.


After the features are introduced in general, the menue options are explained step by step:

File menue items:

Sequence menue items: Beats/Bar menue: rel.Beat menue: BarAccent menue: FreeAccent menue: Instrument (respectively "Chromatic Instr.") menue: Instr.Level menue: Mute menue: Transpose menue:
MIDI-OUT menue: MIDI-IN menue: Perc.Ch. menue: Instr.Ch. menue:


Additional features handled by computer keyboard:

Some keyboard related features are performed directly, i.e. no mouse click is necessary for this step:
this text as screenshot

The features described below are managed as follows: first click with the mouse (any button) or navigate with cursor keys into the bar or raster point where you want to perform the desired operation. Next type the command character, which is specified for this operation on the computer keyboard. The raster field dot which was set by the mouse or cursor key is eliminated automatically and will not become part of the sound.
For any cut, paste, copy operation click somewhere into the BAR which shall be handled and type the corresponding command letter (case independent, only for clearity written in capitals here): To insert any chord as described below, click EXACTLY into the raster field of the BASE NOTE of the desired chord and type the corresponding command character. Always a complete octave range is overwritten, previous notes in this range are cleared. Once inserted, the chords can be modified manually note by note.

The subsequently downloadable material is copyrighted (c)2013-17 by Wolfgang Schemmert
Use of the software is permitted for free by everybody for any purpose ("freeware")
Provided 'as is' - without any warranty. Any responsibility is excluded.

Download "rhythmic.zip" File
Contains this page in PDF format and .exe files of RHYTHMIC72, ~96, ~128, ~144.

---rev.53 (10 January 2016):
   Minor bugs concerning MIDI port selection fixed
---rev.54 (23 January 2016):
   Bug concerning playback of files created with old version (without MIDI IN) fixed
---rev.55 (20 March 2016)
   Navigation by cursor keys, commands D,V,X,*,_ added
---rev.56 (02 January 2017):
   Menue items "Stop at Loop End" and "Continue" added. Minor improvement of screen design
   "Microsoft GS Wavetable Synth" is default MIDI OUT device
   For features, which can be operated without mouse, keyboard shortcuts are added

back to menue


* State of information January 2017.
* Right of technical modifications reserved. Provided 'as is' - without any warranty. Any responsibility is excluded.
* This description is for information only, without any warranty. No product specifications are assured in juridical sense.
* Trademarks and product names cited in this text are property of their respective owners.