Revision history for MIDI-Drummer 0.6012 2025-08-28 17:04:54 - Make the file attribute read-write. 0.6011 2025-04-24 12:33:49 - Bump Types::Music prereq version. 0.6010 2025-04-21 16:07:12 - Fix undef score. 0.6009 2025-04-21 14:29:18 - Fix BPM type. 0.6008 2025-04-02 11:32:50 - Add and use MIDI and soundfont file types. 0.6007 2025-04-02 10:59:40 - Use Types::Music. 0.6006 2025-03-31 00:35:50 - Make Types::MIDI an explicit prereq. - Use the AWOL numeric types too. 0.6005 2025-03-29 23:33:24 - Use Types::MIDI now. 0.6004 2025-03-28 11:27:39 - Move Types::MIDI under the main module. 0.6003 2025-03-28 09:40:27 - Tweeze documentation. - Add MIDI types. 0.6002 2025-03-25 17:05:23 - Improve documentation. - Require Perl v5.24. - Move experimental import after Moo. 0.6001 2025-03-25 10:17:01 - Tweak allowed syntax. 0.6000 2025-03-23 14:24:23 - MJGardner refactored many many things. This is a modern module now. Woo! :D 0.5013 2025-02-13 20:04:06 - Add the setup attribute. 0.5012 2025-02-11 16:11:52 - Improve documentation. 0.5011 2025-02-09 12:55:04 - Use the M::U::ticks() function instead of a hardcoded constant. 0.5010 2025-02-03 08:54:31 - Simplify play_with_timidity(). - Add play_with_fluidsynth(). 0.5009 2025-01-30 07:26:40 - Repaired and improved the tutorial POD more. 0.5008 2025-01-30 07:08:49 - Added the eg/frank.pl program. - Repaired and improved the tutorial POD. 0.5007 2025-01-25 09:59:54 - Update timidity system command. 0.5006 2025-01-23 14:35:56 - Fix synopsis ...again. 0.5005 2025-01-22 20:06:15 - Fix synopsis again. 0.5004 2025-01-21 12:04:23 - Fix incorrect documentation! Argh 0.5003 2025-01-21 11:50:53 - Fix metronome in the eg/metric-modulation program. - Fix synopsis and pattern() description. 0.5002 2025-01-21 09:23:36 - Fix synopsis and prereq version. 0.5001 2025-01-21 08:59:30 - Uhh... 0.5000 2025-01-21 08:48:36 - Breaking change: Now metronome methods are named differently and use percentage swing. 0.4308 2025-01-20 18:43:56 - Replace triplet swing with percentage swing. 0.4307 2025-01-16 22:23:50 - Lose local author lib line in eg/. - Allow a cymbal to be specified to use by the metronome routines. - 0.4306 ... Whoops! 0.4305 2023-11-22 11:30:36 - Remove the accidental leftover dependency on CreatingRhythms. 0.4304 2023-11-22 11:27:51 - Remove misleading channel setting from the Quickstart. 0.4303 2023-05-17 22:06:08 - Yank Music::CreatingRhythms! 0.4302 2023-05-17 19:32:12 - Pin M::U prereq version. 0.4301 2023-05-17 19:26:01 - Update the Quickstart tutorial. 0.4300 2023-05-17 19:10:26 - Add the timidity_cfg() and play_with_timidity() methods. - Improve documentation. 0.4208 2023-05-08 14:43:40 - Odd. A cpan smoker failed because the DeBruijn module was not installed via Music::CreatingRhythms. ...Ok. 0.4207 2023-05-05 21:05:34 - Accent the 1st note of a bar for count_in(). 0.4206 2023-04-07 11:42:24 - Fix a dumb typo - ugh! 0.4205 2023-04-07 00:29:20 - Flesh-out the Advanced tutorial. 0.4204 2023-04-06 22:32:51 - Flesh-out the Basics tutorial. 0.4203 2023-04-06 21:23:50 - Flesh-out the Quickstart tutorial. 0.4202 2023-04-06 19:04:25 - Begin to add a WIP tutorial. 0.4201 2023-03-27 15:35:48 - Improve documentation. 0.4200 2023-03-27 15:26:17 - Add the set_channel() and set_volume() methods. - Improve documentation. 0.4103 2023-03-09 06:23:20 - Negate a pattern before deciding to skip it. - Do NOT set the chan_patch() in the pattern() method! 0.4102 2023-03-08 16:34:23 - Improve the eg/patterns program. - Improve examples in documentation. 0.4101 2023-03-08 13:33:18 - Improve examples in documentation. 0.4100 2023-03-08 12:26:32 - Add the euclidean() method. - Improve documentation. - Improve the eg/patterns program. 0.4012 2022-11-25 14:00:33 - Allow the patch to be set for the count_in() method. - Improve documentation. 0.4011 2022-11-20 15:26:04 - Improve the eg/black-page program. 0.4010 2022-11-20 12:42:12 - Remove the double-counting from the ->pattern method. 0.4009 2022-11-20 12:37:47 - Fix duration size computation for beat counting. - Improve test. 0.4008 2022-11-20 10:34:59 - Made beat counting automatic. - Improve documentation. 0.4007 2022-11-13 07:54:23 - Allow flam() to rest for the grace-note. 0.4006 2022-11-13 06:47:25 - Finish the eg/black-page program transcription. 0.4005 2022-11-08 11:31:21 - Add the eg/black-page program. - Add an optional patch and accent value to the flam() method. - Improve documentation. 0.4004 2022-11-07 13:56:25 - Improve tests! 0.4003 2022-11-04 12:39:07 - Add the set_bpm() method. - Add the eg/metric-modulation program. 0.4002 2022-10-23 08:17:44 - Add actual tests for add_fill(). - Add * note to the not-yet-ready-for-primetime add_fill() method. - Avoid implicit imports. 0.4001 2022-05-30 12:11:34 - Improve documentation. - Actually add the fill-replaced phrase to the score. Whoops :) 0.4000 2022-05-30 10:57:58 - Add verbose mode finally. - Add the add_fill() method! 0.3003 2022-05-29 15:02:26 - Compute the size and duration in the pattern() method. 0.3002 2022-05-28 22:02:12 - Add the sync_patterns() method to execute the patterns() method for multiple voices. - Improve documentation. 0.3001 2022-05-28 17:07:43 - Include the missing Math::Bezier in the prerequisites. 0.3000 2022-05-28 16:59:11 - Pass the object itself to the callback in combinatorial(). - Port the patterns() method from Syncopate::combinatorial(). - Reduce the reverb!! 0.2101 2022-05-15 17:15:16 - Refactor *::Syncopate to use attributes. - Remove syncopation SYNOPSIS leftover examples. 0.2100 2022-05-01 16:38:40 - Move the syncopation logic to its own module. 0.2012 2022-05-01 11:04:22 - Make patches plain numbers and not 'n42' type strings. 0.2011 2022-04-23 21:01:39 - Remove post-derefs. 0.2010 2022-04-23 14:16:50 - Fix time signature setting logic. - Add tests! - Improve documentation. 0.2009 2022-04-23 12:21:09 - Use the M::U::set_time_signature() function instead of reinventing it. 0.2008 2022-04-23 11:38:53 - Improve documentation. 0.2007 2022-04-23 09:12:21 - Improve documentation. 0.2006 2022-04-23 08:15:53 - Add a count option to combinatorial(). - Skip the "zeroth" pattern. 0.2005 2022-04-22 12:10:28 - Add missing imports! - Clean up syncopation lesson code again. 0.2004 2022-04-22 08:24:34 - Improve documentation again. - Optimize code slightly. 0.2003 2022-04-22 08:04:33 - Fix SEE ALSO links. - Improve documentation. 0.2002 2022-04-22 01:05:35 - Clean up syncopation lesson code. - Remove use lib statements. 0.2001 2022-04-22 00:55:47 - Fix a small but dumb typo. 0.2000 2022-04-22 00:51:08 - Add a beat counter. - Add the ->steady & ->combinatorial methods. - Add eg/syncopation lessons from the SEE ALSO linked book. 0.1902 2022-01-19 12:13:04 - Add missing closed_hh! Whoops 0.1901 2022-01-19 11:59:42 - Add the ->metronome38 method. 0.1900 2022-01-04 19:00:57 - Improve documentation. 0.1805 2021-05-03 22:04:18 - Fix-up the eg/tomorrow-never-knows program. 0.1804 2021-05-03 21:42:38 - Add the ->sync passthrough method. - Improve documentation. 0.1803 2021-04-09 23:00:00 - Add the eg/tomorrow-never-knows program. - Use new Music::Duration values. 0.1802 2020-11-26 11:31:12 - Don't import anything from MIDI::Simple. 0.1801 2020-11-10 16:33:21 - Fix a tiny POD syntax issue! 0.1800 2020-11-10 16:23:22 - Improve documentation. - Add a reverb attribute and control-change assignment. 0.1700 2020-10-24 09:56:50 - Re-add the ability to change kits if using GM Level 2. 0.1605 2020-09-15 17:33:07 - Improve documentation. - Simplify the ->metronome78 beat. 0.1604 2020-09-15 09:47:54 - Fix the defaults for triplet 32nd, 64th, 128th durations. 0.1603 2020-09-15 09:01:25 - Fix hi-hat patches in the eg/ programs. - Simplify the 5/8 metronome beat. 0.1602 2020-09-02 10:11:27 - Improve documentation slightly again. 0.1601 2020-09-01 09:28:48 - Fix Bézier variable names. - Add accessors for the acoustic and electric snare and bass. - Improve documentation slightly. 0.1600 2020-08-31 15:06:44 - Add a Bézier curve option to the ->crescendo_roll. 0.1502 2020-08-31 07:59:16 - Fix the ->crescendo_roll logic replacing start-span with min-max (or max-min). 0.1501 2020-08-30 13:26:09 - Fix ->crescendo_roll documentation. 0.1500 2020-08-30 13:17:38 - Add the ->crescendo_roll method. 0.1400 2020-08-23 12:21:18 - Fix eg/reggae. - Add the ->flam method. 0.1300 2020-08-23 09:58:26 - Improve documentation. - Improve ->roll and ->set_time_sig code. - Add 32nd, 64th and 128th Music::Duration specs. - Add the ->roll method. - Add the eg/crescendo program. - Improve eg/reggae. 0.1201 2020-08-22 15:26:43 - Fix the eg/waltz beat figure. - Add a fill to the beginning of eg/reggae. - Simplify the ->accented_note method. 0.1200 2020-08-22 10:21:34 - Add the eg/fool-in-the-rain example program. - Consolidate the metronomes into a single program. - Remove the unneeded effects: reverb, chorus and pan. - Add a 6/8 metronome beat. - Add all remaining named percussion patches. 0.1101 2020-08-17 09:34:01 - Improve the halftime shuffle example program. - Add 7/4 and 7/8 metronomes. 0.1100 2020-08-14 17:19:40 - Add the ->accent_note method. - Add an example program illustrating the James Brown, "Cold Sweat" groove. 0.1001 2020-08-11 07:02:59 - Add eg/waltz. Why not? - Remove a mistaken hihat from ->metronome54. 0.1000 2020-08-10 12:34:49 - Add dotted duration aliases. - Add the ->set_time_sig method. 0.0904 2020-08-08 08:42:46 - Use the closed hi-hat for the 4/4 metronome. 0.0903 2020-08-08 08:26:24 - Add 5/4 and 5/8 metronomes and an example program. - Add a halftime "Purdie" shuffle example program. 0.0902 2020-06-09 10:19:42 - Improve documentation. - Add an eighth-note flag to ->metronome44. 0.0901 2020-06-08 16:47:53 - Clean up code slightly. - Improve documentation slightly. 0.0900 2020-06-08 16:37:01 - Improve and add to the eg/ programs. - Add the ->metronome44 alias to the ->metronome method. - Add the ->metronome34 method. - Improve documentation. 0.0803 2020-03-21 19:05:07 - Do not document the ->BUILD method. 0.0802 2019-12-05 07:50:28 - Improve documentation. 0.0801 2019-01-29 18:11:06 - Fix weird syntax in the test that was making cpantesters unhappy. - Improve synopsis documentation. 0.0800 2019-01-27 02:36:16 - Remove the unused "patch" attribute. 0.0700 2019-01-27 02:22:57 - Fix time_signature according to the MIDI spec. 0.0601 2019-01-27 01:37:17 - Improve documentation. - Fix the default bars in the count_in() method. 0.0600 2019-01-27 01:14:54 - Use the BUILD() method and defaults instead of BUILDARGS(). - Add tests. - Improve documentation. 0.05 2014-10-14 - Rollback naive "swing" 0.0401 2014-10-14 - Added missing POD for triplet durations 0.04 2014-10-14 - Added rudimentary swing time (a la triplets) 0.03 2014-10-14 - Added patch change command - Improved documentation 0.0201 2014-10-13 - Made metronome() more accurately honor the time signature - Improved documentation 0.02 2014-10-12 - Improved documentation - Fixed time signature handling 0.01 2014-10-08 - Ported essential functionality from M::S::D - Minted by Dist::Zilla