My Robot Drummer...
DIY Beats or "How to build your own drummer."
Gene Boggs
Epistemologist at-large
MIDI::Simple::Drummer
Static, not dynamic. Sorry.
This package renders a .mid file. It does not magically interact with you.
MIDI::Simple::Drummer::API
The essential methods are briefly documented in MIDI::Simple::Drummer.
But we want to extend the capabilities of our drummer!
But first, let's check out those "essential methods" a bit...
Kit
Set instrumentation.
Style
Define patterns and grooves, fills and frilly bits.
Dynamics
Intelligently modulate dynamics.
Add nuance methods like accent and crescendo, legato, etc.
Setup
Any sufficiently advanced drummer...
...will probably still sound like a robot.
But there is hope! There is AI. And anyway, thare are other "humanized" machines out there already.
And frankly, some people just want to get away from Humans and their feeble "capabilities" and experiment with The Future.
The Future[TM]
Drummers that do crazy, combinatorial things. (Stunt Drumming, if you will.)
Drummers that systematically run through experimental beat patterns.
Evolutionary drummers. Duh.
Real-time interaction? That is, live jamming?
To do
Multi-track!
Comprehend time signature and keep a running clock to know where we are in time, at all times.
It don't mean a thing if it ain't got that swing. That is, make a MIDI::Simple::Drummer::Jazz package.
Add 32nd and 64th durations to the %MIDI::Simple::Length hash.
Import patterns via the read_score() method in MIDI::Simple?
Leverage the from_drum_tab() method in MIDI::Tab?
See also
The eg/* and t/* files, that come with the distribution.
Style package(s) like MIDI::Simple::Drummer::Rock.