Flamtastic Drumputer - More Info & Explanations

"Drum-Speak" Textbox Explanation

DRUM-SPEAK Textbox Notes
  • List rudiment names found here, each separated by a space
  • The rudiment list must be the final line
  • Line wrapping cannot be interpreted properly so eliminate unnecessary linewraps
  • Complex
  • Use something like the following:
    	LET p1=chucka duzz
    	LET p2=bigidabigida
    	p1 roll p2 p2
    In this case the first two lines are defining variables and the last line is the actual pattern definition which substitutes the variables (Yes, I'm a computer programmer).

  • If you're wondering if it would have been easier to write:
    	chucka duzz roll bigidabigida bigidabigida
    you'd be right but I just wanted to show you the concept and then you can do something more elaborate later.
  • More Complex
    (& more powerful)
  • Use something like the following:
    	LET p1=chucka duzz
    	LET p2=bigidabigida
    	RAW p3=48,45,55X,55,55
    	p1 roll p3 p2
    The third line defines a RAW variable. In this case, you can totally ignore my previously defined rudiments and create your own. The structure of a RAW line is:
    	RAW varname=Note1,Note2,Note3,...,NoteX
    	and each note definition (NoteX) has the form:
    	NoteX=TVF   where T, V, and F are:
    T   (Note Type)
    Note TypeTicksDescription
    1120Quarter Note
    260Eighth Note
    340Eighth Note Triplet
    430Sixteenth Note
    520Sixteenth Note Triplet
    615Thirty-Second Note
    710Thirty-Second Note Triplet
    824Eighth Note Quintuplet (why not?)
    9185 of these are equal to 3 16ths in duration
    A   -   V???User-definable: Insert a line like SET ATICKS=### before you use an "A" note type. These can also be used for defining a large rest
    Anything else will cause an error
    Got a really weird subdivision/Note Type?
    Try the following:
    	SET TIMEBASE=###   Where ### is a multiple of 24
  • This will change the timebase of your pattern from the default of 120 to whatever you choose.
  • The "TimeBase" is also known as "Parts Per Quarter Note" and indicates to the MIDI player how fine a resolution to use.
  • The "SET ATICKS= ###" values will then have to be set with respect to the new TimeBase
  • Grace note Duration will also change accordingly (unless/until you change it with SET GRACETICKS=#)
  • Keep in mind that the bigger this number the more likely it is that your files will be bigger as a result.
  • This is a global setting for the entire file so make sure you pick a TimeBase that can handle all the note types you need for your piece (but be reasonable - I don't think you can go above 480)
    V   (Volume)
    Volume from 0 (rest) to 9
    Or, if greater than 9, it will actually use that MIDI volume (from 10-127)
    F   (Flammed?)
    Optional. If included, it must be an alphabetic character to indicate "ON"

    So, if you want to create a flamacue (4 16ths - 1st flammed, 2nd accented), you'd write:
    	RAW flamacue=45X,48,45,45
    And two swiss triplets (using 24th notes) would be (flams at volume 8, taps at volume 6):
    	RAW swisses=58X,56,56,58X,56,56
    And a nice crescendo bar of 16ths could be:
    	RAW cresc=445,450,455,460,465,470,475,480,485,490,495,4100,4105X,4110,4115X,4120
    	(last 2 8th notes are flammed)

  • You can also do RAW Intro and Transition patterns like this:
    	RAW INTRO=4/4,16,16,26,26,26,26
    	RAW TRANSITION=4/4,16,16,26,26,46,46,46,46
    Note the differences:
  • The first item must be the time signature
  • These will over-ride the selected Intro/Transition pattern
  • Note Strings
    These are like a cross between LET and RAW statements. Note String declarations have the following form:
    RAW X=48X   '16th flammed
    RAW .=40    '16th rest
    RAW x=45    '16th tap
    RAW z=65,65 '2 32nd taps
    NOTESTRING varname=X...xxxxX.x.zzzz
    Here, every character in the string is a separate rudiment, on its own. And, it helps (though you don't need to follow this suggestion) if every rudiment used in the note string takes up the same amount of time so you can see the placement of the note in it's proper place, time-wise.

    In this way, the Drumputer can morph to be more like those other "Drum Machine" programs that give you 32 32nd notes and allow you to turn them on or off. But, in this case, each subdivision can be whatever value you want. Also, to aid in reading the note string, you can put spaces in the string (say, after every 4th subdivision) so the above could be:

    NOTESTRING varname=X... xxxx X.x. zzzz
    As well, you can define intro and transition patterns via NOTESTRING statements, too:
    NOTESTRING intro=4/4,X.X. .... X.X. .... Zzzzzzz. X.X. ....
    NOTESTRING transition=4/4,XX.. .... XX.. .... Zz.. Zz.. XX.. ....
    And just as in RAW definitions of Intro and Transition patterns the first part should be the Time Signature of the Intro/Transition
    Time Signatures
    If your pattern uses a single time signature, simply use
    SET TIMESIG=4/4        Any valid */4, */8 or */16 time signature can be put here
  • If you don't set the time signature it defaults to 4/4.
    If your pattern switches time signatures, you should use something like this:
    SET TIMESIG=7/8x6,5/8x6,4/4
  • In this case, you separate the time signatures by commas and indicate how many bars the time signature applies for. You can use the 'x', 'X', or '*' character to "multiply" the number of bars it applies for.
  • The last time signature in the list does not need the # of bars defined since it always lasts until the pattern ends or repeats.
  • Try the "Time" exercise on the Examples page to see this in use.
  • The Metronome tracks will respect these time signatures, too (that is, if they're turned on, the Bar metronome track will "sound" at the beginning of each bar and the Beat metronome will sound on each beat whether it's a 16th note, 8th note or quarter note -- you should therefore probably turn the beat metronome off unless the time signature is */4.)
  • Other
    The following can also be inserted:
    Generally, the SET statements allow you to lock settings within your pattern
    You can use a semi-colon (;) to separate statements (or use a normal linebreak)
    You can also use an underscore (_), anywhere, as a line-continuation character
    Where the setting value is YES or NO, you can use any of YES,TRUE,ON,OUI,1 for "True", with all else meaning "FALSE" (and case-insensitive)
    COMMENT the rest of this line is ignored
    '       You can also use REM or the ' character to indicate a comment follows
    SET INTRO=IntroName                For now you must use one of my pre-defined patterns
    SET TRANSITION=TransitionName      Like SET INTRO=...
    SET TEMPO=positive integer         any tempo from 30-350
    SET TEMPOCHANGE=integer value      (positive/negative value or 0)
    SET GRACETICKS=value from 2-5      use this to "thicken" or "thin out" your flams
    SET GRACEVOLUME=volume value       "should" be quieter than following beat
    SET PLAYTIMES=positive integer     How many time to play?
    SET REPEATS=positive integer or 0  equals PLAYTIMES-1
    SET PLAYBEAT=YES or NO             Turns on/off Beat Metronome
    SET BEATVOLUME=volume value        Beat Metronome Volume
    SET VOICEBEAT=voice number         See the "Multiple Voices" page for more on voices
    SET PLAYBAR=YES or NO              Turns on/off Bar Metronome
    SET BARVOLUME=volume value         Bar Metronome Volume
    SET VOICEBAR=voice number          See the "Multiple Voices" page for more on voices
    SET PLAYRELEASE=YES or NO          Turns on/off Release.
    SET FLAMRELEASE=YES or NO          Flam the release?
    SET RELEASEVOL=volume value        How loud is the release
    SET TITLE=Title of the piece       Will insert this into the MID file
    SET AUTHOR=Authors name            Will insert this into the MID file
    SET TRANSCRIBER=Your name          Will insert this into the MID file
    SET CASESENSITIVE=YES or NO        Dictates whether variable names must be referenced using propercase
                                       (Default is NO - if YES, you can have two different variables named "X" and "x")
    SET DEFAULTS=various               See the "Multiple Voices" page for more on this
    SET TRACKVOICES(#)=voices list     ditto
    SET TRACKVOLUMES(#)=volumes list   ditto
    SET TRACKINSTRUMENT(#)=Instr't #   ditto
    SET TRACKBANK(#)=Bank #            ditto - the following BANK/PATCH settings are really only valid
                                       with "Soundfonts"
    SET TRACKPATCH(#)=Patch #          ditto - this is slightly different than SET TRACKINSTRUMENT(#)
    SET BARBANK(#)=Bank #              ditto
    SET BARPATCH(#)=Patch #            ditto
    SET BEATBANK(#)=Bank #             ditto
    SET BEATPATCH(#)=Patch #           ditto
    Multiple Voices
    This is covered in detail on this page

    General MIDI Drum Voice Assignments
    35   Acoustic Bass Drum
    36   Bass Drum 1
    37   Side Stick
    38   Acoustic Snare
    39   Hand Clap
    40   Electric Snare
    41   Low Floor Tom
    42   Closed Hi-hat
    43   High Floor Tom
    44   Pedal Hi-hat
    45   Low Tom
    46   Open Hi-hat
    47   Low-mid Tom
    48   High-mid Tom
    49   Crash Cymbal 1
    50   High Tom
    51   Ride Cymbal 1
    52   Chinese Cymbal
    53   Ride Bell
    54   Tambourine
    55   Splash Cymbal
    56   Cowbell
    57   Crash Cymbal 2
    58   Vibraslap
    59   Ride Cymbal 2  
    60   High Bongo
    61   Low Bongo
    62   Mute High Conga
    63   Open High Conga
    64   Low Conga
    65   High Timbale
    66   Low Timbale
    67   High Agogo
    68   Low Agogo
    69   Casaba
    70   Maracas
    71   Short Whistle
    72   Long Whistle
    73   Short Guiro
    74   Long Guiro
    75   Claves
    76   High Wood Block
    77   Low Wood Block
    78   Mute Cuica
    79   Open Cuica
    80   Mute Triangle
    81   Open Triangle

    Future Enhancements?
    Accelerando /
    I think this is beyond the scope of this program/site. If you need this ability, I'd take the output that you get from this site and import it into other MIDI sequencing (editing) software.
    Tempo changes per repeat are handled, though.
    Visual NotationThis is in development!
    ActiveX DLLThis is in development! It will allow you to compose Drumputer Opuses from within, say, Excel, Word or VB script!
    Visual Basic App
    This is now available! Go here to download it!

    The History of the FlamTastic Drumputer
    1991?Created a little dBase III+ database app to take rudiment names and print pre-defined characters on a dot-matrix printer
    1992Used the above application to write a snare solo for a young man who shall remain nameless but who went on to better rudimental adventures.
    1997Resurrected as a Visual Basic 3 application. But now the focus was on creating MIDI output. Visual notation limited to crude bitmaps
    1998Attempts to create a font to apply to the VB application prove frustrating
    September 1999I learned Perl and how to use it for CGI scripts
    November 1, 1999Masochistically, I decided to transfer my old VB3 application to a web-based form (front-end) and Perl-based server (back-end)
    November 28, 1999Released for Beta-Testing
    February 20, 2000Multiple Voices implemented (see this page)
    February 2, 2001Removed need for [ ] characters around user-defined rudiments / subpatterns
    February 2, 2001You can now override my predefined rudiments
    (i.e. RAW roll=68,67,66,65,84 will override my "roll" rudiment)
    February 11, 2001Track volume settings can be changed
    September 30, 2001Incorporated "Marching Percussion" SoundFont and the STANDALONE options and bugs fixed (mainly, other tracks start after intro finishes on track 1)
    November 16, 2003MultiTrack variables are now available allowing Vertical composing. Also, soundfont usage fixed for SB Live and SB Audigy cards
    April, 2004Finally bought the domain drumputer.com
    September, 2004Started working on Windows Stand-alone version in VB 6
    October, 2004Decided it would be a good idea to package main functionality in an ActiveX DLL and then use that DLL as the basis for future Drumputer-related apps
    November, 2004Started playing with browser-based Javascript and found out I could manipulate page contents dynamically - cool - then I decided I'd revisit my Font/Bitmap idea and, long-story-short, came up with the QuickLicks webpages
    November, 2004Adding the same image editing capabilities to the DLL would really help with future development
    December, 2004Parallel development of the DLL and the "Exercise Generator" (from where the online "Randomizer" idea came) leads to the idea of "QuickLicks Plus"
    May, 2005Beta release of the "Randomizer" and the full set of "QuickLicks" online apps (Randomizer, 3 QuickLicks Editing screens, QuickLicks Plus)
    October, 2008Added Syntax Highlighting on various pages to make Drumputer code stand out
    December, 2013Implemented BootStrap Framework for better UI
    May, 2020Implemented changes to use new Web MIDI API web browser extension options, including SoundFont usage with no special, extra hardware needed.

    Who Am I?
  • I am a past member and instructor with the Kiwanis Kavaliers Drum And Bugle Corps from Waterloo, Ontario    (Snare 1982-1984, Pit 1987, Snare 1988, Instructor 1989-1995)
  • I am a past member of the Cardinal Cadets Drum And Bugle Corps from Scarborough, Ontario (1977-1981)
  • I have been drumming in the Drum Corps activity since I was 9 years old (Fall of 1976)
  • I am a computer programmer by trade
  • I am the webmaster for the Kiwanis Kavaliers.
  • I live in Ottawa, Ontario, Canada
  • I've known most of the best drummers from southern Ontario for the past 2 decades (And live vicariously through their accomplishments, thank you very much)

  • If you have any problems email me