Bounce Metronome Wiki- Bounce helps you keep time

Bounce Metronome Pro Wish List

From Bounce Metronome

Jump to: navigation, search
This is the wish list for Bounce Metronome Pro. To add your own wishes, post about it to the Bounce Metronome Forum. You can also e-mail me about it.

See also: Selected wishes, also Bounce Metronome Jottings for my own notes about things I'm about to do or would like to do some time if possible. See also the Tune Smithy Wish List

I have recently started to add names and dates to the new wishes. If you contributed one of the earlier wishes and wish your name and the date to be added do let me know.

One of the motivations is in case of patents. I found out recently that there are a couple of patents for conducting metronome type software - luckily Bounce seems to be okay - but it's good to have an on-line record of when things were invented or suggested in case of future patents - assuming you don't want to patent them yourselves of course. Here in the UK the country doesn't recognise software patents so I can't patent my software even if I wanted to.

Also its nice to see who suggested what when, and a way to acknowledge your contributions and thank you for them.

Contents

Intro

There are so many wishes, that to do them all would take many months probably. Nevertheless, I expect most will get implemented eventually if all goes well, at least of the ones that are feasible and not too hard to do.

If any of these are important wishes for you, do let me know. You can add a list using the Make a Wish for Bounce Metronome page.

For more about this see What is the wish list for

You can discuss it in the Bounce Metronome Forum

Many of these features will also get incorporated into Tune Smithy 3.2 when it is released - either to the polyrhythms metronome task or the program as a whole as appropriate. See also the Tune Smithy Wish List

Stick windows together

The idea is you can join windows together so that you can move them around on the screen as a single unit. For instance, you might want to attach the tempo dial to one of the other windows, to left, to right or below.

The easiest way to do this is to monitor whenever the user moves one of the windows, and move the other one. Also monitor when one of the windows is shown and auto show the other one next to it. Technically, it seems easy to do.

The main issue here is how to give the user a way to join windows together in the user interface. Once we have a simple user interface, the programming would be routine, though it may take a few days to work it out in detail and debug it.

So one idea - to have a check box "JOIN WINDOWS TOGETHER". Then have a text field where users can enter lists of numbers of windows they want to join together.

e.g.

1 2
2 3 4
5 6 3

- user joins together 1 and 2, 2 3 and 4, and 5, 6 and 3, as single units you can move around the screen

The way it would work is that if the user shows the first window in the list, all the others get added to it. Once added, if you move any of the windows, the others move in synchrony with it.

It would get tricky though if user adds the same window to several other ones - in that example 2 was added to 1, but you also have 3 and 4 added to 2, and 3 added to 5.

In bounce, then e.g. you might well want to add the tempo dial to several different windows. All would be useful with the tempo dial - but you can only have one copy of the tempo dial - unless I allow duplicates of a window which brings its own separate problems (and can be buggy to code).

Another issue with this - some windows are tall and narrow, some are short and wide, some can be resized to almost any size without loss of legibility. So how do you join them together? Horizontally, vertically? Even overlapping? Make it depend on the screen size? Make this a user set parameter?

It's easy if you have a particular pair of windows you want to combine, on a particular screen of known size, but gets harder if you want to add it as a feature anyone can use on any size of display, combining whichever windows they want to combine.

It's an interesting idea, but maybe it needs more thought and might become a component feature of something more extensive, e.g. preset window layouts.

UPDATE - done it now. The windows get stuck together using an option in the Win drop menu. Not done preset window layouts yet though.

STATUS - DONE

Display the rhythm as a pie chart, highlight each pie slice as it is played

Proposed by Dr Ozan Yarman

Idea is that instead of displaying it as blocks across the bottom of the window, you display the rhythm as a pie chart, maybe concentric pie charts. And then highlight each beat as it is played.

I.e. basically take the existing blocks display and "wrap it around a circle".

It doesn't seem that hard to do, still, it needs a fair amount of thought. Quite a few details to figure out, and - for instance - what happens to the bouncing balls? Probably have to hide them so it is only the blocks without the bouncing balls. And - need to work out in detail how to draw the pie chart blocks and highlight them.

And - for instance - how do you deal with a sequence of rhythms one after another?

Also though it looks nice visually, a circular display might not be the easiest to edit e.g. click and drag volume changes. Also is a lot more work to get the mouse clicks to work, because of the way I coded it, than have it display only. Can you click to skip beats, right click to change instruments etc on the pie slices? How does the text get displayed if you display musical notes, instruments etc on the blocks?

Perhaps you display the existing rectangles display across the bottom - and then the pie chart on top so have both of them at once if you want and then hide the bottom blocks when you want the pie chart only.

Or, for sequence of rhythms - a sequence of pie charts across the bottom. Highlight changes.

Some of the questions I'd need to think over.

So for now just adding it to the wish list.

Status - feasible surely - may not be hard to do - but need thought about how best to do it as well as integrate with the existing features

Make online polyrhythmic bounce metronome

Just that it would be nice to have a free online version like the many free online metronomes there are. I'd do it as a bounce metronome with polyrhythms, and the idea is to introduce the idea of a bouncing ball metronome, simple version, which you could also perhaps use on mobile devices.

The applet here could be a starting point Interval based animation with sound

I'm not that familiar with development of this type. But have done a bit of javascript programming in the past. The soundmanager project looks like it might be a good way to add sound in javascript synchronized with the bounces using an invisible hidden Flash window (and other fallbacks if Flash not supported).

Status - probably easy to do if you know how - but would need to learn how to do it first

Add "Tempo for quarter notes" to the drop down for the Gradually Changing Tempo Etc window

This is for Automatic Tempo and Rhythm Changes with Accelerating Tempo, Accents, etc. (Ctrl + 264) and the version of Gradually Changing Tempo etc (Ctrl + 42) you get in the Pro version of Bounce Metronome if you keep clicking More until you can go no further.

It's for the drop down "Show tempo column as" - to add "Tempo for quarter notes" + another drop down for "set notation for tempo" (to change to e.g. eighth notes, dotted quarter notes etc) as with Automatic Tempo and Rhythm Changes (Ctrl + 245).

Probably not that hard but must be something that made it less straightforward then you'd expect, or I'd have done it already, need to look into it.

Status - probably not that hard to do

Spiral version of the bouncing balls display following John Whitney's visual approach

Idea to do something like this:

whitney music box idea from [John Whitney]

Main reason to do it is just because it is visually fascinating.

You can do soemthing a bit like it already. The only thing is - the spiral of dots you see in that animation stays still in Bounce Metronome, and you have an extra set of bouncing balls that go around in a circle hitting each one of the balls in the spiral in turn.

To set it up like that then choose Bounce Inside Oval. For the 3D bounce then you probably want to unselect "Show blocks in front of all the bounces" in the More version of 3D Bounce - Visuals (Ctrl + 257) as otherwise the ovals will be a long way away in the distance so look small.

Then go to Bounce Patterns (Ctrl + 227) and in the More version of that window, you have an option "Skip bounces - just go around the oval.

So, you need to make it so the ovals turn around and the row of bouncing balls stays still, and replace the row of bouncing balls with a single straight line. This would require an option to rotate the ovals and keep the bouncing balls still.

This can be done with an extra reverse rotation of the entire scene in the opposite direction. I've added this experimentally to the debug build and will explore it some more.

I thought this would give the same effect, but now after programming it and then looking at the Whitney version more closely I see it is different.

Nevertheless the Bounce version is also quite nice to look at :).


Status - can something bit like this already with the spiral fixed and balls rotating - rotating spiral - NOT QUITE THE SAME

Add option to delay the midi notes to synchronize with the wave shape player - also to synchronize different midi devices

At present the wave shape player has quite a large latency. You can reduce this if you use direct sound, and even more so if you can use Asio.

But it might well have more latency than your midi device.

Also different midi devices may have different amounts of delay, which makes a difference if you use multiple midi out devices so different parts may be played on a different device.

For one example, the microsoft GS wavetable synth on Windows has a fair bit of latency, often well over 100 ms, though sometimes it has almost zero latency with no clear pattern about why on some computers it has a lot of latency and on others none at all. On a modern computer there is no real reason to have latency more than a few tens of milliseconds at the very most, and only a few milliseconds at most with Asio. So this is probably a result of legacy code dating back to Windows 98 which is when this synth was added to Windows first.

For another example, coreaudio on my Mac seems to have a fair bit of latency as well, far more than is necessary on a modern computer. it's surely not Core Audio itself but rather, whatever it is using as a midi synth on my computer, probably QuickTime.

To deal with this I would need to add per device midi delays for Midi Out - where you can delay all the notes for any of the midi devices - could also do it on a per part basis as well if needed.

This is reasonably feasible, I think, but I've not given it any thought yet, as in inspected the code to see how it could be done. Could be anything from a day or two of coding to something more intricate.

Needs thought - probably feasible

Add option to unsychronize the times between the parts

Tune Smithy is designed to keep the beats in the different parts aligned,

Example:

To see how this works, set up, for instance, two beats in part 1 and in part 2.

Set the times to 0.1 0.9 in the first part, and 0.9 0.1 in part 2. Because the beats in the two parts need to be aligned, then they auto adjust so that both parts are played with the timing 0.5 0.5

The idea would be to add a check box to unsychronize the beats between the parts. You could then enter any times you like for any of the parts.

However this programming is technically tricky because of its origins as a fractal tune generator.

I have ideas of how to do this, but not in detail yet.

May be possible - but involves tricky programming due to origins as a fractal tune generator - needs investigation

Add an option to import midi percussion loops

Import midi groove templates in the form of midi files, and convert them into a bunch of timings - could also set the volumes and the instruments for individual beats as well. This is also something you can make from a recording with many DAWs.

The idea is that it is a way you could get more of a human feel to the rhythms. It is a lot easier than attempting to analyse the audio recordings in Bounce - it is easy to get the timings from a midi file because the events are recorded to the file with time stamps anyway, each midi event is a "note on" at a particular moment of time.

Status - reasonably straightforward, not sure how long it would take

Add Non Melodic Percussion Sample Pack Player to Bounce

The reason for doing this is for precision, as it would create all the sound as a continuous audio stream (including silences) so you would be able to play each sound at the precise moment of time desired to the sample, so not depending on the Windows timers for sub millisecond timing, and not needing to send the notes to another synth via midi for playing.

There's an option in Bounce already to play samples, with a couple of example waveforms - water drops - but it is programmed using a "quick and dirty" method that doesn't do very accurate timing. It uses a Windows routine that is normally used just to start and stop playback of an audio recording. It is just a "proof of concept" kind of thing.

If all that is required is to play the sample "as is" - with a quick fade away when the note is released if still sounding - then that is reasonably straightforward to do.

DONE

Add option to add melodic samples - retune the samples

The sample player only plays fixed pitch non melodic percussion samples.

The idea is to let them be retuned like a melodic sample player.

However this is technically difficult.

  1. With a single sample, then pitch shifted samples sound different and unnatural in timbre - not likely to do anything about that as it would involve writing a sample pack player or such like - a big task and such already exist.
  2. Anti aliasing issues.

I could just pitch shift the samples without any attempt to merge together samples like a sound font or player. But the issue there is that you then get aliasing artefacts, and the programming for that is quite tricky as I've found out.

Same issues with the wave shape player. I wasn't able to find good free source anti-aliasing source code and tried writing my own code but it didn't work very well - so there are aliasing issues with some of those instruments also.

If you don't know about sound aliasing issues - it's a bit like the pixelated edge effects you get when you draw straight lines on a visual display - but in the case of sound waveforms then at high pitches the waveform consists of just a few samples, and a "pixelated" waveform can look and sound completely different as you adjust the frequency of the waveform, depending for instance on whether the frequency of the waveform makes each wave an exact number of samples or not, and whether there is an odd or an even number, or double an odd number of samples in the waveform etc etc.

Not likely to make a "sound font player" - may be able to do straightforward pitch shifting but is technically tricky because of aliasing issues - needs more research

Add option to count out loud in selected counting system

This could either use synthesized voices, or use pre-recorded samples. Perhaps the simplest way is to do it just like the non melodic percussion sample player idea. So you provide a recording of all the numbers 1 to say 20 and of commonly needed syllables like "and", "la", "li", "te", "ta", "ti", "and", "a" etc. and the sample player then just plays those at the right times for the beats.

Status - would be easy to do once the non melodic sample player is done

Add the Turkish Düm Tek rhythm system

Wish made: 9th August 2014
Suggested by: Dr Ozan Yarman (though I also had earlier wishes for same thing)

This is quite a complex system, see Fascinating Odd Meters: Turkish Rhythms

However in discussion with Ozan, does seem possible that it can be automated - enough to be useful.

Would be a bit like OCR (optical character recognition) in the way it works - it would do its best shot at your rhythm - but you might have to correct it.

I'd add it to Beats Counting System (Ctrl + 246) as a button "Make Dum Tek" for the CUSTOM COUNTING SYSTEM - and a check box "Auto make Dum Tek".

Mark it clearly as a beta feature and encourage users to give feedback - with tsProj files for rhythms it got wrong accompanied with explanations of what it should be and why.

That way I could continue to improve the algorithm.

Status - likely to be a day or two of work to make first beta

Add the Takadimi counting system

See Takadimi: A Beat-Oriented System of Rhythm Pedagogy

I can add Edwin Gordon’s system as well and other systems in that article, and let the user set their own system.

The simplest way to do this is to do it like the custom counting system. The main thing is to make sure that I understand the systems clearly to program them.

You can try out the Ta ka di mi system right away yourself.

To do that go to Beats Counting System (Ctrl + 246). Then choose Label as: Beats and subdivsions, and then for the Counting system for beat subdivsions, choose "Custom"

Then enter this as the list of syllables:

Ta, Ta di, Ta ki da,Ta ka di mi, Ta ka di mi ti, Ta va ki di da ma, Ta va ki di da mi ti, Ta ka di mi te ka di mi

where you need to have the commas exactly as shown there (see the tip for the control for explanation).

I could add this as a preset to that drop list very easily.

Status -Takadimi subdivisions preset - DONE - could add more presets

Add the Takadimi counting system for entire measure for polyrhythms.

This is just Takadimi - applied to the entire measure - so for a 5 beat measure you use the syllables for 5 subdivisions, for 3 beat measure - do for 3 subdivisions and so on.

Status - DONE - will be in next upload

Add in Konokol

This is likely to be quite hard to do because it is complex and multi-measure. The Takadimi system I gather is a much simplified version.

I'd need to study it more, but seems likely to involve need for user to edit the rhythm syllables by hand.

If you are expert in this, and think it can be automated - do let me know!

Also just if you want this as a feature, let me know so I know that it is needed, especially if you have any thoughts about things the program could do to make it easier to use it with Konokol - or just to let me know there is a demand for the feature.

Status - UNKNOWN

Add in the Indian Talas counting system

See: Indian Rhythmic Cycles. There the main difference is that you need the system

The main difference here is that the counting system is for the entire measure, and you have different choices for the same number of beats in the measure, so this is probably best handled as a custom drop list of talas. When you select the tala it changes the choice of syllables for each beat, silences some of them, and sets the total number of beats per measure.

It would work more like the rhythm editor, where you enter the syllables for the tala into the editor, or select from pre-selected talas from the drop list. This then gets converted into a rhythm, but with a simple method, that all beats are played apart from ones marked as * which are silenced.

Straightforward to program, reasonably easy to do

Add in an option to count across multiple measures as far as you want, including counting beats upwards for ever

This is needed for the Tala system - but just highlighting it as a useful thing outside of that context also. And a good first step before programming Talas.

I'd add a new check box to the Beats Counting System (Ctrl + 246)

COUNT INCREASES FOR EVER (OR UNTIL COUNTING SYSTEM REPEATS)

This should be easy to program for rhythms played using sound - Bounce already keeps count of the number of notes calculated in each part (both played and skipped).

If the rhythm is played as a bounce, without any sound - then I need to add in some extra code there to count the number of new beats displayed, endlessly, in each part.

Status - seems straightforward, probably a few hours work

Use Michael Stewart's Grid Notation to show if you are ahead, behind or on the beat for tap timing

Wish made: 15th March 2013

This is a visual version of Michael Stewart's "Grid notation" - he puts vertical lines through the musical notes as a way to indicate if they are ahead, behind or on the beat.

For his notation see J.A. Progler Searching for Swing: Participatory Discrepancies in the Jazz Rhythm Section Ethnomuiscology Vol 39 No 1, Winter, 1995 - also available as download from the author's academic page here: Searching for Swing

The same could be done in Bounce - with the bouncing balls, every time you play a beat, could draw a line through the ball as it rebounds from that bounce, with the vertical line dead centre if you were exactly on the beat, or to left or to right if you were ahead or behind. Would do it so that the user can set the sensitivity so if you want it very sensitive you could make it so that the line is moved by the width of the bouncing ball if you are ahead or behind by as little as say 1 or 2 ms or by as much as say 100 ms or more depending how you want to use it.

Could also add special markers for his "Feel spectrum" in the tap timing strip at the positions for "nervous", "drive", "snap", "groove", "in the pocket" (which he puts at -10 behind the beat interestingly), and "dragging" - user customizable so you can choose where you want to put these marks.

Audio representation of the position in the beat

At the same time, could also add pitch and audio cues. These are of especial interest to blind users but could help all users of the feature.

It could play a different instrument depending on whether you hit your note ahead or behind the click - even a different instrument depending on whether you hit close to one of the special points in time in Michael Stewart's "Feel Spectrum".

Bounce could also play a different pitch or also vary the stereo pan position as well. So there are many ways you could provide audio feedback.

Other visual ways of showing position in the beat

Also visually change colour of the ball depending on your position, change its shape (diamond shaped if ahead say, and round if behind) etc, or flatten it vertically if ahead, and horizontally if behind, all ways to reinforce with immediate feedback your perception of whether you are behind or ahead of the beat.

All of this is easy to program. I just need a few days free some time to work on it to do it properly.

Status - feasible, and most of these options wouldn't take much work

Count In Option

Wish made: 19th February 2013
Suggested by: Jared Hinton

The idea is to switch off all the special features such as gradual tempo changes, skipped beats, accents etc, and just count in for a couple of measures (say). Either you use the current rhythm whatever it is, or set a rhythm to use (e.g. 2/4 or 4/4) just for the count in.

This is probably easy to program. It's a bit like the rhythm progressions except that you have to switch off the gradual tempo changes, Go silent briefly etc. as well.

The main thing that needs thought for the coding is how to do that and how to make sure that when features like the gradual tempo changes switch on, that they time themselves from the end of the count in rather than backdate to the beginning of the count in - which is what they would do naturally at present.

Meanwhile there are a few workarounds you can use depending on what you want to do.

For Gradually Changing Tempo etc (Ctrl + 42) if you go to More enough times, you eventually get to a window that lets you program in as many tempo changes as you like one after another so can program in a short count in steady tempo at the beginning.

The only problem is that if your gradual tempo change is a short one which you want to repeat, something like e.g. increase and decrease over several minutes and repeat the whole thing, it will also repeat the count in as well. There is no true work around for that, but for practical purposes, you can handle that too by just adding the same gradual tempo change over and over to that list until you have enough there for your session.

For Automatic Tempo and Rhythm Changes (Ctrl + 245), you can just set a different rhythm for the first couple of measures or so.

With the PLAY then SILENT for Measures (Ctrl + 260) there isn't really a true work around again, but you could set a count in like this e.g. 8 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 (repeat the 2s as many times as you need for the practise session, it's quite easy to do that if you keep highlighting all the numbers you have typed in so far and use copy and paste to get twice as many of them and do that until you have enough for the entire session, will just take a few seconds to do).

That doesn't deal with the skipped beats, accents etc. For those you would need to use scripting at the moment. You can explore Tune Script (Ctrl + 171) for that.

Anyway that's for now, and certainly, it should be made much easier than this!

I'll take a look at this in the near future, may be easy to program. As it does require some thought, probably will be a couple of weeks or so before I start on it, especially as I also have other things to work on as well.

Status - feasible, probably fairly easy

Rewire Support

This is something I might look into in a future beta / release cycle for Bounce Metronome and Tune Smithy.

As a sole trader I'm legally permitted to add rewire support according to Propellerhead. But I haven't yet looked into the details of how it would need to be coded, or how easy it is to do. So can't really comment at this stage on how feasible it is.

Meanwhile if you want to route midi notes from Bounce to your DAW, e.g. to play the instruments on your DAW, then you can use a virtual cable such as Loopbe1 or Midi Yoke NT. Midi works fine for program to program relaying in Windows through a virtual cable - typically at rates of thousands of messages per millisecond. It's not limited by the slower standard rate of the midi cable protocol.

For more about this see Virtual midi cable

Possibly feasible, needs research. Meanwhile you can use virtual midi cables such as Loopbe1

Bounce as a VST

I had a go some years ago at doing Tune Smithy as an MFX plugin. The way the MFX plugin worked was that it called the stand alone program which ran as a hidden process and the plugin interacted with it directly via shared memory. It worked, sort of, but there were a few issues and I was never very satisfied with it though a few users did make use of it.

So, maybe the same idea could work for Bounce as a VST. All the code is still there in Bounce for the interaction. Everything worked fine from the FTS side of things. The problem was on the UI side in the plugin itself - I just wasn't sufficiently familiar with the architecture of MFX or the coding methods to do a good job there - there were latency issues, and the UI was rudimentary and not so easy to use.

I probably won't explore this in the near future, sorry, just feel it is probably not the best use of my time. It would take longer than most for me to code it, and the result likely to be not particularly satisfactory unless I put a fair bit of time into it, learning how to do it.

It's possible long term especially if some time I earn enough to employ someone else to do it, or I find an enthusiast who wants to write a VST to communicate with Bounce - and then if it worked they could sell the VST as a separate app so you buy the VST interface and Bounce as separate programs - but it would be a risk for them as it might not work.

Again you may find you can do much of what you want to do using Virtual midi cables to connect the stand alone program Bounce Metronome with your DAW.

You can also export midi tracks from Bounce, and the latest version lets you export a separate midi file for each part in the rhythm.

Probably feasible long term, especially if someone else does it - not likely to do it in the near future

Bounce as a VST host

Again it might be feasible. I've found two examples of "how to make a VST host".

VST Host is LGPL. I could use it, I think, if built as a separate library or program which my program calls or communicates with - and release any modifications to the code for the VST publicly under the same conditions.

Mrs Watson is free for any use including commercial. So no problems using it. But it's source code for a command line utility so not sure how much it would have by way of capabilities?

For a modern VST it would need to have a UI so that user can make changes - and also save those changes for future etc.

I just have no idea what is involved for this. But it's a lot of work probably especially as I've never done it before.

If you want to do this in order to use the instruments available in another VSTi or your DAW, you can send notes to them via midi from Bounce using Virtual midi cables. there are many good free VST hosts available, as well as many DAWs, and

If I find some easy way to add VST host capabilities to Bounce with not a lot of work - maybe some programmer releases source code easily integrated with Bounce under a suitable license - it would be neat :).

Or, if there was some enthusiast who is experienced in writing VSTi who is able and keen to write a VSTi able to interact with Bounce while it is running - basically to start up Bounce Metronome invisibly, send commands to it, and get the data back from it.

I have code already in Bounce to do that, works using memory mapping so that you don't need to use a cable, can just access its memory directly to send and receive information. I found an MfX plugin can communicate with Tune Smithy in that way so it just might be possible for a VSTi.

Anyway - no way I can pay the going rate for someone to develop bounce or a subset of what it does as a VSTi. No chance I can rewrite it as a VSTi. So only possibility is if someone writes a VSTi to interact with it in real time invisibly like that. But that would still be probably several weeks, most likely more, of someone's time. Which at going rate for software programmers would be a lot of money too, and no guarantee it works at the end (would probably start with very simple version to check that it works at all).

So anyway just a few thoughts there. May be possible in this rather more limited form - but not too likely in the near future.

Probably feasible long term in a limited way - not likely to do it in the near future

Export animations directly to mp4 format instead of avi

At the moment you have to export animations to the .avi file format, and then use another program to convert those to mp4s.

The reason for this is because I use old legacy Windows routines such as AVIMakeCompressedStream which only work with the .avi format. It can use various types of compression within that, depending on your system, what encoders you have installed, but the result is always an avi file.

I've had a quick google and look at the code, I don't think there is an easy quick fix. I probably have to rewrite it. Will look into this some day.

Feasible - for investigation, don't yet know how easy or hard it is

Export Midi in Format 1 - multi-track - for import into a DAW

If you look at the midi files created by Bounce Metronome then all the notes are put into a single "track" - though possibly into many channels in the case of melodic instruments.

Sometimes musicians want to work with the midi exported from Bounce in a multi-track way - so want a format 1 midi file with a separate track in it for each of the parts in Bounce.

At the moment the only thing you can do is to mute all the parts and then set it to play just the parts you want - and export each part as a separate midi file. You can mute the parts in Show All Parts (Ctrl + 9) or use the keyboard shortcuts (A to mute all the parts, and press the numbers 1 to 9, 0 q w e r t y to play each part).

I can easily add an option to export one separate format 0 midi file for each part in the current rhythm all in one go, if anyone wants that.

For techy reasons, it's not so easy to export the whole thing as a format 1 multi-track part.

One idea is to export a bunch of format 0 files and then see if there is any software available that can merge a bunch of format 0 files which are intended to be played simultaneously into a single multitrack format 1 file.

Export as a bunch of format 0 files is now done

It's in Midi File Options (Ctrl + 12) choose "Seperate File for Each Part" (see the Save Single Midi File droplist). See Change Log#Monday 18th February 2013

So - if there is any way to automatically merge all these files into a single midi format 1 file, that would sort it out.

I haven't found anything yet but maybe there is. Anyone know of anything that can do that? Especially, are there any command line utilities to do it which I can bundle with Bounce Metronome (if so the whole thing could be automated)?

Feasible but technically hard to do directly, however can now export as a bunch of format 0 files

Off-line Version of this Wiki - Ideally Searchable with an Index

First, there are a couple of things you can do right away, so will describe those first. Then there are some other ideas for the future, which I can investigate later on.

Website copy (non searchable)

You can make an off-line version already with a website copier such as the free httrack Website Copier. Just set it to download from http://robertinventor.com/bmwiki.

On the second page under Set Options then Scan Rules, set it to:

-* +*/bmwiki/* +*.png +*.gif +*.jpg +*.css +*.js -*/archive/* 

What that does is to make sure it only downloads pages with the folders /bmwiki/ in it (otherwise it will attempt to download the entire robertinventor.com site). It also leaves out the folder /archive/ which includes old versions of the images.

The main problem is that it isn't searchable offline - if you use the search box it takes you to the online version of the site instead. Also it is rather a large download.

Make web-page of all tool tips for a window

You can show all the tool tips for any of the Bounce Metronome windows as an offline web page on your computer.

To do that, right click on the ? Icon then select Special Options in the drop menu and then "Show ALL TOOL TIPS for this window".

That then gives a page of the tool tips for just that one window, which you can then search in the usual way since it's a single web page.

For the future - small off-line wiki with just the tool tips, searchable

It's possible to make an off-line wiki, searchable, e.g. using Wiki ion a stick (tip - if you try it out, you need to use the file woas-fix.html in the zip and it helps with permissions to rename it to woas.hta with the "hta" extension).

So one idea to explore is to see if I could add some code to Bounce Metronome to auto generate a "wiki on a stick" from the tool tips.

Or - could use one of the Wiki on a stick alternatives

Actually Bounce Metronome already generates the wiki code for the tool tips help on the website, which I then imports to make the All Windows - Help and All Metronome Types - Help sections of this website.

Sadly though, it's in a different format at least from the "wiki on a stick" so would probably need a fair bit of work to make it work as an off-line browseable wiki.

TECHY NOTE - you can also search the tool tips which are in the same folder as Bounce Metronome, in rich text format, and called "tune_smithy_tool_tips.rtf".

Much of that file is exactly as shown in the user interface - but Bounce Metronome does do some automatic editing of the help contents before displaying it, e.g. replaces "Tune Smithy" by "Bounce Metronome" and replaces {{wnnn}} by the name of the window with keyboard shortcut nnn.

For the future - options to add search to off-line archive

There are various ways to add a search to an off-line archive like this commercially. For instance AFSearch, or Likse or Zoom or Help and Manual. Comparision of some of them

So - might well be possible to do this at some point in the future. But at present it's not clear that many users will need the feature, enough for it to be worth the work involved (and the expense if it is a paid for solution). It might be that most users will just use it on-line. After all even if you have a music computer that you never connect to the internet, you may well be able to view the on-line website on something else - an iPad or Android tablet or netbook or whatever.

Also one issue for any of these approaches is to try to find a way to trim the size of the archive as it is rather large.

For the future - option to export sections of this website

One of the issues with the website copy is its size. It would be possible to reduce the size if I could find a way to export only part of the website in a self contained way. Sadly, this is not easy to do at present.

The idea is to add an option to the wiki to export individual pages or groups of pages as documents or pdf etc. This is a feature that got added to wikipedia recently. See Wikipedia Book creator. If you visit a category page you get an option to add everything in the category to your book in one go (with wikipedia you can also save your book to your public profile).

So I could make a "help pages" category say or a "how to use a metronome" category and you could download just that help as an e-book.

The problem is - that this option, the Collection extension, requires a more recent version of MediaWiki.

Upgrading a wiki requires great care, especially if you have many plugins or custom skins as with this one. The upgrade can break these - requiring you to go in and edit the raw code to fix any issues that arise. Also sometimes you have to fix the databases as well because occasionally mediawiki changes the format of the databases in some important way - which may get dealt with automatically but might cause issues.

It might be straightforward but this is quite an old version of mediawiki now, so it might cause issues, so am reluctant to upgrade right now.

So - some time I'll probably need to update this wiki but not right now.

Status - Can download entire site with website copier. Adding search and export of individual pages feasible but lots of work

Option to set the notes to play staccato

This is especially relevant for the harmonic metronomes and other options that use pitched instruments, which often have a continuous sound. The idea is to add an option to play the notes staccato.

Not sure how you would do it in the UI. Could be an option set individually for each note - the amount of "staccato" similarly to the volumes in Beats volumes and times (Ctrl + 76). Or it could be an overall option to make all the notes in a part or in all the parts staccato.

There is an option in Tune Smithy actually to make all the notes in all the parts staccato but it is only available for some of the fractal tunes. For techy reasons it is not available for the rhythms used in Bounce Metronome Pro.

So - this would need some thought. Especially if set on a note per note basis it might need a lot of thought. I'm not sure how best to do it right now, and may leave it for the next beta / release cycle.

Meanwhile there is a workaround you can do - for some rhythms anyway. With the Drum & Dance rhythms notate the staccato notes using shorter notes and rests. E.g. for quarter notes staccato alternate eighth notes with eighth note rests.

With the other rhythms, you can use a similar approach - set it to play twice the desired number of notes. Then silence every second note (by setting its volume to 0). That gives you notes that play for exactly half of each beat.

You can similarly do a staccato quarter of a beat (very staccato notes) by using four times the desired number of beats, and silencing all except the first in four notes.

With most rhytms, you can then fine adjust the duration of the notes to make the notes more or less staccato.

Status - feasible certainly - not sure how much work is involved - as a work around can alternate played and silenced notes instead

Option to play a single measure only for one of the Drum & Dance rhythms

This is for rhythms that run over several measures.

The idea is while practising you might want to practise just one of the measures at a time. So you might want to play that measure around in a loop .

Status - feasible, probably reasonably easy to do

For drum & dance rhythms, count individual measures of multi-measure rhythms for go silent briefly

Wen the width of the window consists of several measures, say 2 measures - the go silent briefly option counts the entire rhythm as a single extended "measure". It would be good to have an option to instead work with the individual measures in the rhythm.

You can do that already now with the #Let the Go Silent Briefly option work over fractions of a measure. But that requires you to work out what fraction of the total measure to use for the "Go silent briefly" okay if it is say 1/2 (you can use fractions BTW in the go silent briefly window)- but requires some calculation if the component measures of the rhythm have different numbers of notes in them. Basically if you count the total number of (say) eighth notes you could use that, so if it is say 17 eighth notes, of two measures of 9 and 8 eighth notes respectively you want to use the fractions 9/16 and 8/17 so 9/17 1 8/17 1 for instance would play the first measure, skip two measures, play the second measure, skip two measures, and repeat.

So - could be nice to have a way to do that in the ui without needing to work out and type in the fractions there.

Programming reasonably easy probably, not sure how to do it in the UI yet.

Status - feasible

Add option for a "natural variation" following the TaKeTiNa method

Books:

https://books.google.co.uk/books?id=KwJSHKR5o2sC&pg=PA185&dq=taketina+reinhard+flatischler&hl=en&sa=X&ei=7_SqVLLMHeWW7AaG5YGACw&ved=0CCAQ6AEwAA#v=onepage&q=taketina%20reinhard%20flatischler&f=false

http://www.amazon.co.uk/gp/product/0940795078/ref=olp_product_details?ie=UTF8&me=

Program with a programmed in "natural variation": "TaKeTiNa-Explorer". Written by an Austrian man "Klaus Kobald"

http://www.taketina.com/taketina-explorer/

The problem here is, that it is mainly in German and I don't know the techy details of what is meant by a "natural variation" here, in the sense of something to program.

Bounce does have a Lilt Measures preset in Automatic Tempo and Rhythm Changes (Ctrl + 245) which works by increasing and decreasing tempo for alternate measures, also for alternate groups of 2, 4, 8, 16 measures etc. And you can set a tempo for each measure individually. Also has option to add a swing or a gentle lilt.

But I don't know if this matches the idea of a "natural variation" in the Taketina method.

Not sure what it means

Option to vary tempo gradually in different directions in each of the parts

This would be an option to independently vary the tempo so e.g. the first part speeds up from 60 to 72 while at the same time the second part slows down from say 30 to 20 or whatever

Technically hard to do in Bounce Metronome right now

There are technical reasons why that is hard to do with the existing code unfortunately, and it will need to wait for a major update or a new program.

If I do the muti-platform version then I'll see if I can design it from scratch so that all the parts can be controlled in a completely independent way if desired - option to "unlink" the parts from each other completely.

Highlight individual beats

Date wished for: Sept 2013

Done: Highlight each block as its played - Other Minor updates & Bug Fixes - Latest update 12th March 2014 - BounceMetronome Pro

Idea is just to have some way to highlight each beat as it is played

I'm not sure how best to do it, e.g. could outline each beat as it is played - highlight the currently active beat in all the parts - maybe just with an outline similar to the way the part you click on to edit is highlighted. Or some kind of fill effect or texture,...

That would be the main thing that would need some work. Would also mean that you need to redraw the blocks display every time it's appearance changes - for some rhythms with many blocks, especially if they also have text on them - then it takes a noticeable enough time to reduce the frame rate if you do it on every frame - so that would take some thought how to make sure it doesn't refresh the blocks display on every frame.

Status - DONE

Make a simple LED type display suitable for viewing from a great distance

Date wished for: June 2012

Suggested by: J-Man

Suggested by J-Man (June 2012) - a Salsa drummer who plays in big bands with sometimes as many as 1000 members

The idea is that if seen from a great distance the bounce type visuals may be hard to follow. So it might be preferable to show simpler LED style visuals where you just get a light flashing for each beat, a different position for each one. Rather than LEDs as such you could flash up part of the screen in colour against a black background.

Here - it's a nice idea but before going ahead and implementing it, need to think about the motivation some more.

First, the bounce visuals do work up to a fair distance, as the eye is very sensitive to this sort of movement, I find you can easily follow it e.g. out of the corner of your eye while reading music. Also conductors do regularly conduct large orchestras and typical orchestras of 100 or more players, so if you put the bounce visuals on a large screen you should be able to follow them from a fair distance.

But if you are a really long distance from the screen the LED type display may help. Also it would help if it is displayed on a small device seen closer up and may also help musicians who are more familiar with this type of display.

So - can see that, the next thing is, can it achieve the same micro-second type precision visual cue as Bounce. I don't mean the actual timing of the lights, but whether a human eye can actually follow the timing of them with that level of precision. Is there something like the Bounce effect you can use to make it easier for a human eye to follow a flashing light with really high precision.

J-man assures me that that level of visual tracking precision isn't really needed for the application he has in mind - but all the same I would like to program it like that if possible.

So - the idea is to use visual shading cues. Maybe have like a vertical bar of duller colour that descends just like the bounce does, getting darker, and then at the bottom it flashes to full brightness again (like the splash) so showing the moment really clearly, then in some way "bounces back again". I'm not sure how this will work exactly but does seem possible that through light and colour transitions, and through some element of motion too that is visible even at a really great distance you could get it to work. It's a matter of experimenting until you find something that looks good, is easy on the eye, doesn't complicate things, and is easy to follow with great visual precision like the bounce.

A natural place to put it in Bounce Metronome is in the drop list at top right of the bouncing balls display. Where it says bounce back and forth, conducting patterns, inside oval, etc. add a new option "LED style"

Then what that would do is to put the LED visuals behind the bouncing ball. Optionally you hide the bouncing balls and have just the LED visuals on their own, but optionally you also have a bouncing ball bouncing from one beat to the next as it lights up. That then would also work in 3D as well as 2D - in 3D put the LED lights in the "Sky" or else positioned just behind the 3D bouncing ball where they land on the beats.

Later if / when I do mobile / mac versions of Bounce, then it would be a natural to do this as a separate app. But in Bounce it is more natural to do it as a new feature, easily to find for anyone who wants it.

Status - feasible, lots of ideas to explore, needs to be tested to see which work best

Add more Latin American Rhythms

I've included a few in the Drum and Dance section (select Drum & Dance in the main window drop list) and you can make other rhythms with varying beat sizes like that yourself. They need tweaking though to sound good.

More programming needed before it is easy to make them sound really good - though with care you can probably make them already by hand.

Two main things, need to do the accents and instrumentation right, and then there's the subtle timing.

The instrumentation is easiest to address, as you can already set a different instrument for each beat in the rhythm and set a level of accent for each beat too. That is a bit of a cumbersome process, so some way of indicating the instruments for each note in the rhythm editor would be nice, perhaps some kind of drum tab notation.

It already has an option to accent a beat by prefixing it with >.

For the subtle timing then I plan an option to let the user get the rhythm from a groove by clicking on the start of each beat in a large visual display of the rhythm.

You can already tap out a rhythm by hand for each part but that doesn't work so well as you need to use the mouse to do it, and I plan also to make that work a bit better with midi keyboard input.

Status - feasible, several updates needed to make it easier to enter the rhythms

Add more Flamenco Rhythms

Something I plan to do at some point. There are several good Flamenco programs available already (see my List of Windows Flamenco Metronomes here) but it seems there might still be some interest in a bounce version as well:

See this discussion at floro flamenco What is your weapon of choice: Metronome, Drum Machine, Compás CDs, or Software? - Foro Flamenco

So - plan to add some of those rhythms when I get a bit of time. Meanwhile you can do custom rhythms yourself by hand using the drum & dance rhythms editor.

The thing is I'm not a Flamenco player myself. If you want to help with adding Flamenco rhythms to Bounce metronome or are keen on this feature to be implemented, do let me know.

E.g. if you have suggestions of which are the best rhythms to add, how best to present them visually and how best to count them visually, and so on.

Status - feasible

More drum rudiments

Add many more drum rudiments. Maybe do as a separate drum rudiment bounce metronome in the drop list in the main window - or as a separate program altogether.

hybrid rudiments Percussion Arts Society standard list of 40 Drum Rudiments 40 essential snare rudiments

Some of the rudiments will need new coding e.g. grace notes - you can do them individually by adjusting the beat times by hand but at present there is no grace notes notation in the rhythm editor

Status: feasible, some easy, some need extra coding

Add option to automatically read Drum Tabs

The idea is you just copy / paste a drum tab into a text area in Bounce Metronome and it automatically plays it on the correct instruments.

Similar idea to the Beat Boxing preset.

Background: Wikipedia article on drum tablature, Links to Drum tabs sites Middle Eastern Rhythms drum tabs

Status for: Ascii version of drum tabs - feasible, depending on features required

The simplest approach is to implement the ascii notation for tabs. That should be feasible, There are some things might be hard to do in midi, but can probably do a version flexible enough to be useful fairly easily.

Status for: Music notation version of drum tabs - probably harder to do

For techy reasons it is hard to do adding music notation to the software on a staff. It was okay to do the rhythm editor because that is basically just linear, can use the Bach typographical font and the notes in the different parts don't need to line up or be shown on a score.

What is hard to do is to make a score that lets you line up the notes well, and with the right spacing between the notes (so e.g. if you have a quarter note on one line and two eighth notes on the next line then the quarter notes are shown further apart from each other) - and also to have it so that when note are simultaneous they share the same stem as a chord - or at least some of them do - and at the same time editable.

All that - plus the need to place the notes on a music staff - that all adds to the complexity of the programming, and I don't know of any "ready to use" components I can use to add this facility to Bounce.

So - this is one of the things that seems easy but programatically is likely to be hard to do.

It could become much easier if someone creates a music notation "control". It would be something like the richedit control used in Bounce Metronome (and many other programs) to display text with varying fonts, bold, sizes etc all in the same document.

There is Vexflow for web pages. The only thing is, I don't know if it is possible to embed it in a program like Bounce Metronome, if it was that would be a good starting point.

Make a rhythm exercise randomizer similar to the Flamtastic Drumputer

You can find the program here:

http://www.drumputer.com/

The idea is to do something like that in Bounce, a way of randomising the rhythm for rhythm exercises. Also if the drum tabs were implemented as well, could have a drum tab randomiser where you have a series of drum tabs you combine at random in a similar way to drumputer's randomiser.

This would need thought, but could be done. If it combines simple rhythms e.g. 4/4 type rhythms or whatever doesn't seem too hard to do - combining complex polyrhythms in a similar way might be much harder.

The actual combining of the rhythms probably isn't that hard. The main challenge might be working out a good user interface so it is easy to use. Anyway hard to say for sure as it is the sort of thing that needs a fair bit of thought to do a good job of it.

Feasible depending on the features - but needs thought, can't say at present how easy or hard it is to do

Use of controller pedal to start / stop the tune, vary tempo etc, start and stop bounce etc

J-Man, June 2012

The idea is to provide a way to control important things in the user interface via a midi controller controlled for instance by a pedal board - so you don't need to use your hands.

Suitable things to control in this way could include the main keyboard shortcuts such as the return key to stop / start, the arrow key to adjust the tempo, and so on, all controlled via midi.

The easiest way to do this is to just hard code in some particular midi events to do this, I could do that very quickly.

The better way to do it is to provide some way for the user to make their own mapping from the midi to the user interface - e.g. they press a pedal and then choose which parameter they want to control with that pedal.

What I could do is take the easy option first, and hard code it all, just as an option you can switch on with a check box. This needs some suitable default to be worked out.

Then I can add the option to configure it in the user interface later on.

This is comparatively easy to program. Maybe a few days of work getting it polished, testing etc.

Use controller to step through lists of tempi or rhythms (similar to up and down arrows)

Date wished for: September 2013

This could let you step through them with e.g. a foot controller. Again comparatively easy to program, though not sure how you would do it.

Status - FEASIBLE

Status - Feasible and likely to be easy to do

Midi Sync so that the Bounce Metronome Animations can be synchronised with midi notes in other applications

First of all, it is a feasible feature for the future as there is a Midi Sync protocol designed for this. It works by sending intermediate messages between the actual notes played which programs use to help them synchronise with each other.

I have done some work on it in BM Pro - there is a Midi Sync feature but it is WORK IN PROGRESS and at present doesn't track very well and may well have bugs in it.

Some time I need to do more work on this. If you want to take a look, you can find it as the Midi Sync. Receive option in the program (Ctrl + 177).

The other option is to do it the other way around and drive Sonar from Bounce Metronome Pro.

This is the Midi Sync Send & Misc. (Ctrl + 175). The programming isn't quite so complex that way around, less likely to be buggy so may possibly work already in some cases.

Status - FEASIBLE AND PARTLY CODED BUT TESTING AND FINE TUNING WILL TAKE SOME TIME

Add separate chord progression player as a main window "Metronome Type"

The idea here is that Bounce Metronome now has most of the capabilities of Tune Smithy's chord progression player - so would be fairly easy to add the entire player in as a new "metronome type"

Status - feasible

Add strumming patterns to the chord progressions

The chord progressions already have broken chords as an option. The idea is to add strumming patterns as well so that instead of e.g. playing all the chords strummed upwards you can e.g. alternately strum up / down etc.

The main thing that needs thought here is the notation - how to notate it. Perhaps using / and \ but that conflicts with the existing chord progressions notation so needs thought

Status - feasible, needs some extra thought though about how to do it =

Add separate "tuner" to play reference pitches

This is a feature of some hardware metronomes so seems like a natural thing to add to Bounce.

I mean just the type where the program plays reference tones you can use for tuning your instrument. Bounce Metronome can do this easily, so just a matter of a nice UI for it.

Getting Bounce Metronome to auto detect the pitch you play to help you to tune would be a lot more work. It can do that already actually, but not in real time, and it doesn't always get it right depending on the instrument timbre, so I need another solution there, coding has moved on in this area, with highly accurate pitch detection available for microtonal use - and I rather expect that using other third party code to do it might be the best way ahead nowadays.

Status - easy to do to play reference pitches - detecting pitches requires more work and research=

Add separate main window for Pitch sensitivity, harmonic interval training and ear training and testing

Following on from that, this is something I've explored in Tune Smithy a bit, and have some features in Bounce Metronome mainly to do with hearing beating partials, and pitch sensitivity see Harmonic Interval Trainer (Ctrl + 253) and Pitch Senstivity Tester (Ctrl + 255). So the idea is to put all of those into a new "metronome type" in the main window, "Ear training and testing" (say).

That's for pitch recognition, could also have a rhythm recognition feature as well maybe too.

So - some of this is already included in those two windows mentioned. Other things would require a lot of work to do well. Could get it started with just the things that are in Bounce Metronome already, and add to it later on.

Status - Feasible

Add option to show 2D graphics in the 3D window for more efficient drawing

Background to this idea: the 3D graphics though more complex in appearance puts less stress on your computer since all the work is done in the GPU. Also the GPU is designed for graphics operations and so is often faster at doing them than the CPU, so may be able to achieve a higher frame rate (so smoother appearance to the graphics).

So if you like the appearance of the 2D window - but want to reduce the load on your CPU and possibly increase the frame rate as well - then the idea is to see if you can show the 3D window in 2D. The Direct2D option in Windows 7 addresses this but is probably still not as efficient as a similar option could be in the OpenGL window because of the way it is done at present integrated with other 2D non accelerated graphics.

This is feasible and a nice idea to explore. But it is more work than just a check box. The 3D window is done in a different way from the 2D window. So instead would probably do it step by step. E.g. add an option for circles rather than spheres for the bouncing balls etc.

Status - FEASIBLE in the future - but more work involved than you would expect. To get started on the idea have added an option to show 2D shapes bouncing in the 3D window

Enable Anti-Aliasing for the 2D and 3D graphics in the program

This is now done - using Direct2D for the 2D graphics - and Open GL antialiasing in 3D - but the 2D anti-aliasing is slow on most computers for some reason (I use Direct2D within a normal non accelerated environment, and I suspect the slow down is to do with switching between the two systems) so defaults to switched off.

The 2D and 3D graphics currently have anti-aliasing (i.e. edge smoothing) disabled. So if you look in detail e.g. at the tempo dial here: Bounce Metronome Pro Tempo Features then you see the "jaggedy" pixelated effects if you look closely at the lines. Same happens with the edges of the 3D shapes in 3D.

Actually technically these are two different issues. In 3D then I need to enable anti-aliasing for OpenGL. This is more tricky than you would expect. Probably would use the method described here: NeHe tutorial Different ways of achieveing antialiasing in OpenGL - idea is to use the multisampling extension approach

TECHY NOTES (for any OpenGL Windows programmers reading this). For techy reasons this involves making a hidden OpenGL window with anti-aliasing disabled, which you then destroy in order to remake it again with the anti-aliasing enabled to show to the user. It sounds like a roundabout way to do things, but you have to do that because in Windows the OpenGL graphics context is associated with a window and once the window is made the pixel format can't be changed - but you can only find out pixel format capabilities within a graphic context and you can only do that by making a window with OpenGL.

In 2D then there are two solutions, to use GDIplus or to use Direct2D. The Direct2D approach will only work in Windows 7, but is much faster, and also technically may be easier for me to program. So anyway that's what I'll probably do, and to make it backward compatible for XP and Vista will do it in a dll, with routines to draw lines, polygons and ellipses in Direct2D, using an option that lets you draw to Direct2D within the "Device Context" of the normal GDI operations. So if Direct2D is present can just draw to the same device context as before, and if Direct2D is unavailable will then just do it as it does now - at least that's the idea, if it works. Will use the Microsoft GdiInteropSample as a basis.

Status - DONE - though needs optimising to make the Direct2D drawing faster

Cope with a fermata, accelerando or ritartando

See Question about Advanced Metronomes - in ABRSM General Music Forum

The accelerando and ritartando - already possible using the script - if you do it according to the elapsed time.

But it is more natural to e.g. do it for a particular number of measures. For that see the next wish: #Let the Morph = Tempo and similar script instructions work for measures as well as for time

For a fermata - should be possible again, but need to think about how best to do it, again maybe best way to do it is in the script.

Status - Should be FEASIBLE, needs a little thought

For option to set the instrument separately for each beat of the rhythm - let you set the midi note number to play individually as well

This may be needed for some soundfonts which treat melodic instruments like a non melodic percussion drum kit.

Here is an example:

http://soundfonts.homemusician.net/drum_kits_and_percussive_kits_soundfonts/rcubero_percusion_flamenca.html

The three instruments, palmas, Tinaja and Cajón in this soundfont are mapped to notes above and below middle C on midi instruments 0 to 2.

They are not pitched to match the pitch of the note they are mapped to - instead gives many different ways of playing the notes - style of playing as well as variations in the overall pitch of the percussion (to the extent the percussion has pitch).

Essentially it's a non melodic percussion type font but played from midi instruments 0 to 2 instead of using the more usual drum kit. Not unusual to do this, also seen a tabla font like this if I remember rightly.

So would be a good feature to be able to do this.

You could do a work around already using the Custom Voice Instruments window (Ctrl + 37) and the option to transpose by ET semitones using the Customize Instrument (Ctrl + 44) window, but it would be fiddly to do especially if you want to change the instruments for individual beats frequently as you'd have to highlight the correct "instrument" in window 37 then go to window 44 and change it's transposition in semitones, meanwhile bearing in mind what the current 1/1 pitch is so that you know how far to transpose it (e.g. -1 semitone from 60 to play midi note 59).

With a bit of thought I should be able to add an option to just right click on the beat and select from a list of midi note numbers instead of, or as well as the more usual instruments list - or perhaps click and enter the number as text - or maybe let user label individual midi notes with instrument names if they need that. Anyway will give it some thought and see what happens.

Status - certainly feasible and reaonably straightforward, needs some thought about how best to do it

With the mixed meters like 4/4 + 7/8 have an option to set how many times to play each of the time signatures

You can already do this by just entering the same time signature several times over (with up to 34 time signatures total). There's also an option to eg. play every time signature twice, or as many times as you like - but same number of times for each one. Or if you edit the script you can set how many times to play each of them.

But the idea here is to add a text field after each time signature with a number, preset to 1. When you adjust the number for the first time signature, then all the others update to the same number as it. But then if you adjust the other numbers then they can be set independently (same way the subdivisions work for the mixed meters if you want different numbers of subdivisions for each one).

So you could do e.g. 4/4 5 times 3/4 7 times 7/8 3 times or whatever - those are just made up numbers but whatever is useful in that way you could do very simply and would save a lot of time entering rhythms for complex rhytms like talas if they have the same beats with many repeats of the same time signature.

This is a dead easy option to add. Though might be worth while thinking over it a bit first, about how it might relate to possible future developments.

Status EASY - may be an idea to think it over a little first though.

Status EASY TO DO

Make it easy to enter triplets and other n-tuplets and nested ntuplets in the rhythm editor

NOW DONE: Version 4.5 of Bounce Metronome Pro - new features include Tuplets, Euclidean Rhythm, Rhythm Sequences, Polyrhythmic drum machine, and Velocity Tuning Keyswitches - and many bug fixes

This should be easy to do for a single part and is on my wish list for the reasonably near future.

But it's a bit trickier than I expected.

Triplets work around

Note - you can already do triplets using a work around. That is, to dot all the non triplet notes. It will look a bit strange, but will work since triplet eighth notes (say) are two thirds of the time of a normal eighth note and a normal eighth note is two thirds of the time of a dotted eighth note.

Notation

Notation isn't that hard to sort out.

Could use abc notation for tuplets abc notation tuplets examples and Triplets, quadruplets, and the various other tuplets

Or alternatively,

[3 [5 O O O O] [5 O O O O] [6 O O O O O O] ] Where the Os there are the notes to make into n-tuplets and where optionally you can do e.g. 5/16 if you want 5 16th notes when you'd normaly expect it to be an n-tuplet of e.g. eighth notes.

Programming issues

The problem is the programming.

The easy way do it is to adjust the timing of the individual notes. Has the advantage you can easily mix n-tuplets of different sizes.

E.g. if you want to make three notes into a triplet right now, you could do it by entering the times as 2/3 2/3 2/3 instead of 1 1 1. Timing would be okay.

But wouldn't behave as expected if you swing it. To deal with that I'd add a new "swing weights" field which lets you say how to adjust notes when they are swing so a note that needs to be shorter than usual would be weighted to a smaller amount e.g. 2/3 for a triplet note.

Then the [3 [5 ...] ] type rhythm notation would work by automatically setting the desired file times and then automatically making appropriate swing weights to get them to work. So - this doesn't seem that hard to do when I think about it, maybe two or three days work and could go more quickly depending.

triplet then quintuplet eample

It is trickier to do polyrhythmically however. The problem is, how to align the tuplets in the different polyrhythmic parts with each other, especially if you also have swing and lilt applied as well.

You also get issues even without polyrhythmic tuplets, just aligning say triplet + quintuplet in one part with 2 beats to the measure in another part.

That's partly why I haven't done it yet. You can see the problem if you try e.g. a triplet followed by a quintuplet.

You can set it up easily enough as e.g 4/3 4/3 4/3 4/5 4/5 4/5 4/5 4/5 (enter these as the times in Beats As Text (Ctrl + 77)

The problem is, how to do the alignments

The problem is if the next part has two beats, the second beat will align itself with the second note of the quintuplet rather than the first note as we would wish, because it aligns itself with the middle of the eight beats counted numerically rather than by time, i.e. always aligns with the fifth beat.

Doesn't seem much you can do about that, as that is what you generally want if e.g. you add a gentle lilt to a rhythm. When you adjust the lilt or swing or adjust individual beats in each of the parts, you want the notes in the other parts to remain aligned together, so doesn't seem a good idea to completely uncouple the parts from each other as far as timing is concerned.

So you want alignment - but you align the notes differently depending on whether they are tuplets, or the are just plain notes swung or lilted or timing adjusted. So if you interpret the tuplet notation by adjusting the timing of individual notes, then that is likely to cause alignment problems of this sort unless you can somehow also change how they align with the other parts.

Attempted solutions

You can fix that in this case by putting eight beats into the second part - so it has the same number of beats as the first part. Then to play two beats in the second part, skip all except first and fourth beats (instead of all except first and fifth beats).

It would be possible to program Bounce Metronome to do that automatically for simple cases like this one.

But it's hard to see how to generalise that work around to all cases. E.g. in this case, what if the second part has 4 beats e.g. for eighth note divisions of 2/4 - what do you do about the alignment there when some of the beats don't align with anything in the first part.

If you then have polyrhythmic ntuplets in the various parts, it gets even harder.

What you can do is to divide into smaller visible subdivisions which you treat as separate beats skipped in the user interface - so you have e.g. 60 subdivisions if you want to permit 3, 4 and 5 note ntuplets.

That's not too hard programmatically probably (and also something you can do by hand as a work around) but the problem now is you'll get loads of subdivisions on the screen so hard to work with and also it's harder to do things like e.g. skip beats and accent beats by hand. So it is visually more complex than it needs to be, and a bit unintuitive for the user as well.

So - not sure what to do. But probably will just do a version of the timing approach as that's the easiest to program and will be useful for many examples - and warn user that it is not really perfect and leads to some situations that are unintuitive.

But will continue to think about it maybe there is some other approach that somehow combines the best of both these ideas ??

Maybe there is some natural way to change the way the alignment works when you have n-tuplets?

I think this should be possible, with some careful work - the program itself would do basically that division into 60 subdivisions or whatever is needed, same as the previous idea, but the difference is, it wouldn't show it to the user, only use it internally as a way to figure out where the beats align. And would figure that out somehow using the swing weights idea, maybe. Kind of handwaving, I can't really see it yet but maybe with some thought will get a solution.

Status - DONE

Add rhythm notation for grace notes + option to configure size of the grace note

Not sure how I'd do it exactly so main thing that would involve work would be think about how to present it in the GUI and integrate it with other options. Don't know how I'd do it yet. Could cobble together something that would work but probably better to wait until I have a clearer idea of how to do it - maybe combined with other related options.

Status probably not hard to do

Option to show Tempo as ms per beat instead of beats per minute

Dead easy to implement. I noticed this as a feature in another metronome I tried out, and wondered if it is useful for something. Does anyone need this option?

I do already have a "seconds per beat" option which is hidden in Bounce Metronome Pro - just not exposed in the user interface but there in the code. It is available in Tune Smithy. So if anyone needs it you could have options to display Seconds per beat, milliseconds per beat and the current and more usual BPM.

I'd just have a text area somewhere in one of the windows which shows the tempo in seconds per beat and ms per beat, doubt if anyone would need the tempo dial to show those units as well though if anyone does that also would be dead easy to implement.

TRIVIAL TO DO - anyone want this?

Pitch Bounces

Done, see Pitch Bounces

Here the idea is that along with the rhythm you have a continuous background note which rises in pitch and gets quieter between the notes and falls and gets louder on the note. So it's an aural version of the visual bounces and should help you to hear where the next beat will be before it happens.

This could be useful for blind users particularly. But may also be of general use too so you can hear the beat before it happens without looking at the visuals e.g. when reading music.

If it is quiet most of the time and gets louder only on the beat, and depending on the instrument sound I think it could be reasonably unobtrusive. Hard to tell how well it will work as I don't know of any other hardware or software that does this.

As an alternative, you could also use it as a feature for the pitched instruments - to let the pitch bounce - have an option to let any pitched instrument bounce in pitch to follow the bouncing balls - which it would do using pitch bends.

I could take the custom pitch variation and custom amplitude variation windows as a starting point - and either add this as a feature to those windows to let the pitch and amplitude follow the bouncing balls instead of using a formula - or else could add it as a new window with that feature which would be used in addition to any other custom pitch or amplitude variation you already have.

Probably the easiest way to get started on programming this feature would be to add it as an option to the custom pitch and amplitude variation windows - then would be able to listen to it and hear what it sounds like.

So a possible roadmap for this feature is to do that first - and then if it is promising, then could go on and add it as a separate window or as a background instrument etc. at a later stage.

Ideally could do it as a pitched white noise or some such, some instrument with a discernible pitch but not too obtrusive. Lilke the multiply resonated white noise CSound instrument perhaps or similar.

Easy to program and will do it in near future when I get a bit of time to work on it.

DONE

Export the 3D animations IN 3D for use in other programs

Not sure if anyone needs it - but the idea is you could export a BM Pro movie which could then be imported into a scene in another 3D Program. It would be true 3D, not just a movie - so you can e.g. move around, see it from all angles etc.

One thing I can do fairly easily is to add an option to export individual frames as .OBJ files - a 3D file format recognised by many 3D programs. I could also add an option to export all the frames of a movie as separate .obj files for each frame.

What I'm not sure about is if I can export it as a 3D animation as such. Need to research into file formats used for animation saves.

PART OF THIS IS FEASIBLE AND EASY, NOT SURE ABOUT REST

Import 3D animations from another program into BM Pro

This might be nice if e.g. you have an animated character or creature from another 3D animation program which you would like to use in the scene in BM Pro in some way. Either as the bouncing balls themselves as animated 3D characters - or as other characters that interact with the animation in some way.

I have no idea how easy or hard this is to do. Since I work at a low level, I would probably have to write some kind of importer to import the animation into the scene - unless there is some library available that can do the same thing.

NO IDEA HOW EASY OR HARD IT IS, NEEDS RESEARCH TO FIND OUT

Version for a Mac

UPDATE - NOW DONE A KICKSTARTER - HOPE TO GET IT WORKING ON OSX UNDER A WINESKIN SOON

Bounce Metronome, Tune Smithy, Lissajous 3D... on Intel Mac!

Sadly won't work on iOS though - but that might be possible using separate apps designed from scratch multi-platform e.g. using Unity.

This is tricky to do because of the way the software is written. Probably best bet is to write a new version from scratch which is smaller and focuses on the rhythm capabilities, for phones and portable devices - and incidentally also do it so it can run on a Mac as well.

Meanwhile you can try running it on your Windows partition on a Mac, it might also be able to run in a Virtual Machine (not sure about this) - and a new Windows PC costs remarkably little these days, anything which can run Windows XP, Vista or Windows 7 will do fine.

For details see:

No support for native Mac or Linux

Got this now as a kickstarter for OSX - not for iOS though

Make it possible to run Bounce Metronome Pro on a mobile device

I have no plans for an iphone app. for techy reasons. I'd need to recode it from scratch. Same applies to the blackberry, both iphone and blackberrry have their own operating system.

Similarly for smartphone ,although many run Windows, it is based on a stripped down version called Windows CE and I looked into that, to make it compatible with Windows CE I would have to do very extensive recoding, so have no plans to do that either in the near future.

See though: #But may revist this. Had new ideas about how to approach it

It can run on any device with XP or later

However it can run on any device that can run Windows XP or later. So smallest device it can run on is probably a netbook PC or net tablet PC. There is also talk recently of an XP or even Windows 7 based touch phone but don't think it is available yet.

If the screen is very small, then it has an option to split the main window, which you access via "SPLIT MAIN WINDOW" in the options drop menu. You can then run it on 800 by 600 displays or even smaller. If it needs to run on a very small display for some reason I could look into ways of making the user interface more compact. That's not tricky to do. The tricky thing with the iphone etc is just that I would need to recode it for the new operating system.

Can export animations to run on a mobile device

You can export the metronome animations as movies, and should be able to play those on a mobile device such as the IPhone - especially since the IPhone supports seamless looping then if it is for a steady tempo just need to do an animation for one bar. To try the same section at many tempi just do animations for each tempo of interest.

I can also add an option to make a list of tempi and then automatically export the same rhythm at all those tempi and make a web page for them all so you can just click on the tempo in the web page to play the animation at the desired tempo, e.g. for every tempo in BPM in some particular range or whatever.

Status - CAN DO ALREADY IF DEVICE SUPPORTS XP - OTHERWISE NO PLANS FOR NEAR FUTURE - Sorry. But can play the web animations on a web enabled mobile device

But may revist this. Had new ideas about how to approach it

See More about why it is so difficult to port Bounce Metronome Pro to a Mac

- the idea there of developing a lightweight version of BM Pro - with as much as possible of same rhythm capabilities but simpler interface and less of the other features for mobile devices and the Mac.

I don't know how easy or hard it will be but plan to investigate it and try to do it some time when I have a bit of time to work on it.

It may be Flash - or WebGL - or might be something else, so far just investigating possibilities.

STATUS - CAN DO ALREADY IF DEVICE SUPPORTS XP - have some new ideas to investigate in the future for other devices

Play notes from midi in

The idea is just to let you play midi notes from a midi keyboard. You could use this for instance to compare the times of your notes played via midi in with the bouncing balls and the beats played in Bounce Metronome Pro with the Tap Timing strip.

This is easy to do, main thing is, how to select the Midi In device in the user interface. Tune Smithy has an In menu with the In devices in it. Here it would probably be more appropriate to have a separate window with a list of In devices, then you highlight the one you want to do just as for the Out devices.

Everything else is already programmed so it is just a matter of permitting the windows to be displayed in Bounce Metronoem Pro, and to add them to the menus somewhere, possibly as a separate In drop menu.

Main thing to do: Decide where to add the Midi In windows to the menus - and make a new In devices window.

Status - DONE. See In Devices (Ctrl + 249)

However, there is still a lot to be done by way of thought about how to use this new feature. For instance you would like to use it to silence / play parts for the rhythmicon, to tap at tempo, tap at rhythm etc, all of those and more could be done from the midi in keyboard with a bit of thought. Those are like the "natural ideas" to follow up.

Also, things one mightn't think of but could be useful to some users - things like change the tempo of the metronome, change time signature and so on - you could do those directly from the keyboard either using controllers for keyboards that have integrated controller wheels - or by assigning particular seldome used keys on the keyboard to particular functions.

DONE - but lots still to do by way of figuring out how best to use this new feature in the rest of the program

Option to start with Windows with a tray icon

I already have this in other programs and it will be easy to add to Bounce Metronome Pro - will add it soon.

Does already have option to start with Windows in Tune Smithy - so I've added it to the More version of the File menu for upload of BM Pro for Nov 23rd 09. But not yet the option to start minimised to the tray so will add that.

Status - can add this in the near future. FEASIBLE AND EASY.

- Just added to the Options - General (Ctrl + 202)

Status - DONE THE START WITH WINDOWS, but no tray icon yet - FEASIBLE AND EASY

Add option to use space bar to stop / start play instead of return

So - idea is wherever the space bar is used as a tempo tap, instead can use it as a start / stop play button. You still have the back space tempo tap.

Feasible. Needs a little thought.

Status - FEASIBLE

Add option to show the "bounce" as a pendulum motion

This is for the sonified pendulum waves such as


.

The original pendulum wave looks like this:


So to get similar visuals would be good to have an option to show the bouncing balls moving in a pendulum motion. Probably not that hard to do though low priority, because musically it is much easier to synchronze with a bouncing ball - and a pendulum motion has no obvious advantages for the musician.

None of the moments in a pendulum motion is particularly easy to spot visually and synchronise with as a musician. At both ends of the swing the movement slows to a stop making it hard to see it as an exact moment in time - and in the middle of the swing it moves so quickly again it is hard to see it as an exact moment in time at the millisecond level.

Do let me know if you particularly want this - will probably do it eventually but have other things with much higher priority to do first.

Status - feasible

Get Conducting Pattern from a Movie

Here the idea is, you start with a video of a conductor conducting some music. Then you need to go through it frame by frame and mark the tip of the baton in each frame by hand - just have a special colour, e.g. magenta, and change the colour of one pixel in each frame to that colour to mark the tip of the baton.

You also need to mark the down beat, and the start of every beat, which you could do with more special colours, e.g. different shades of magenta again. Colour doesn't matter so long as it is a colour that doesn't appear anywhere else in the frame. So for instance you could use a slightly darker shade of magenta for this pixel for each frame that marks the start of a beat.

Then BM Pro could detect the baton position simply by going through the movie, frame by frame, and searching for the position of that particular coloured pixel in each frame - a trivial thing to program.

As an alternative, if it is a video you make especially for this feature, you could attach a coloured ball to the end of the baton or coloured strip of paper or whatever - coloured in some distinctive way that is very different from any other colour in the video (again say magenta and make sure the conductor isn't wearing any clothes in that colour).

In that case, BM Pro could detect it to within a given level of tolerance - and use the centre of the coloured patch in each frame of the video as the baton tip pixel. Then when you go through the movie by hand, you just need to change the baton tip colour for the first frame for each beat and first beat of each measure for extra cues.

This would just be two dimensional movement, not possible to record the depth position or the angle of the baton itself, just recording the 2D motion of the baton tip because the movie is recorded in 2D, and the method just outlined doesn't give any way to extract 3D information from it.

Either way, it would be reasonably routine to program BM Pro to locate the coloured pixel in each frame and use that to make a conducting pattern, which you can then play back at any speed.

The main challenges here would be - to auto adjust the timing of the beats in Bounce to match the timing of the conducting pattern it plays. And to program bounce metronome to follow a pre-programmed path for the baton instead of just bounce up and down.

Or - you could use the motion capture methods used for recording actor's movements for computer games. I don't know how those work exactly but could research into it - maybe you can use an "off the shelf" method for detecting the movement of the baton tip and converting it into data you can import into BM Pro for this feature, once it is programmed.

With motion capture, then the position of the baton could be captured in 3D.

Status - FEASIBLE - for 2D capture seems staightforward but may be a fair amount of work - won't know for sure until I give it a go

Add a feature to let a conductor conduct a conducting pattern with the mouse or in some other way

Idea is, the program records it so you can then play it back for your practice session.

Status: should be feasible if there is a demand for it, let me know if you want this and what features you would like it to have.

FEASIBLE

Add human model conductor - a 3D figure with conducting as a behaviour

Program up a 3D virtual director conducting in 2, 3, 4, and 6/8 standard patterns - a human model waving the stick - zoomable, gender select, style select (crisp, wavy, fluid,)

Here the main issue is that Bounce Metronome is programmed using rather basic 3D graphics. It just uses Open GL and primitives such as spheres etc, and an extension that allows you to make tubes. It doesn't have any support for characters like this.

This would be easier if done in the environment of a game engine with support for such things built in. And I don't know of any way to add such a game engine to Bounce Metronome as it is now.

For instance if using Unity 3D, I could make a human with ability to move in a fluid way - this is an example from their website Having fun with the new Mecanim features - not at all like a conductor but shows the fluid sine wave based motion, where all the limb joints of the 3D figure are connected together and move in a natural human like fashion.

Dance.gif

You can make figures with MakeHuman (example video). (video) for use in Unity3D, and then add behaviour to it in Unity 3D using Mecanim (video). But I don't have access to anything like that in Bounce Metronome.

As for building such an engine for scratch in order to add this to Bounce, it's an enormous amount of work - these programs you can use to build humans and add behaviour to games are the result probably of programmer centuries, or indeed more likely millennia of total time spent programming, of cummulative research and programming and building on top of previous tools. And would be almost as much work to program just a single figure in this way from scratch without an engine, and a rather pointless reinventing the wheel also to do that. So, need to forget about that idea.

It is far easier to start from scratch and work with an existing game engine.

It may be a possibility for the multi-platform apps later on or other programming done again from scratch. Or if I find a game engine that can be integrated into Bounce itself in some easy way.

Status - NOT FEASIBLE IN BOUNCE AS IT IS AT PRESENT - no game engine - can look into possibility later with multi-platform apps

Add some kind of a visual cue for the Morph = Tempo instruction

The idea here is to show visually that the tempo is about to change (colour change, size of baton, or something), in some way - conductors do this.

Status - FEASIBLE, needs thought

Add motion like a traditional metronome

Probably not that hard to do though low priority, because musically it is much easier to synchronze with a bouncing ball. The traditional pendulum motion has the advantage of familiarity but doesn't have any advantages as far as ease of syncrhonisation - because it is hard to see the moment when the bar crosses the center line as an exact moment with millisecond precision. Our eyes are more attuned with bounce motions, like those of a bouncing ball or a conductor's baton.

Do let me know if you particularly want this - will probably do it eventually but have other things with much higher priority to do first.

Status - feasible

Add motion such as coupled double pendulum visuals

Introduction - chaotic motion, the double pendulum, and rhythm

This is an example of "Chaotic motion" - there Chaos is a mathematical term and doesn't mean totally random. Rather it's predictable in the short term - but over a longer time period totally unpredictable. The reason is that even very small changes in the initial conditions get amplified as time goes on. Classical example is the weather. If a butterfly flaps its wings and you don't include that motion into your model, then the idea is that eventually over a fairly short time-scale, your model may diverge from the actual weather by enough to be a difference between a hurricane warning and calm weather. So we can very successfully predict weather over a few days, and give general ideas over longer timescales e.g. can say things maybe about the number of hurricanes to expect in a year, but can't predict a hurricane e.g. several months in advance because we just don't have enough information in enough detail about all the possible influences on the weather. So - it seems from the maths that it will never be possible to have 100% accurate long range weather forecasts (except by controlling the weather perhaps).

So similarly, a chaotic pendulum motion is predictable in the short term but not long term (where of course here long term means say a minute or two rather than several weeks). The short term predictability should make it possible to play along with it as a rhythm for music. So this should be a way to make rhythms which have that element of longer term unpredictability like the weather.

Status and issues

STATUS: Feasible - but needs thought about how to do it

First, it is feasible to do the animation. There are many animations of double pendulums on the web. So should be feasible to do it - though the maths is tricky so I'd need to spend some time reading up on how to do it before I start on the programming - or use already existing free source code if available.

However the main question is how to link it in to the program. The thing is that to practice with it as a source of rhythm ideas, you would normally need the animation to have a "click moment" - like the bounce moment of the bouncing ball or conductor's baton in Bounce Metronome Pro. The obvious time for this is when the pendulum is at the top of its swing to either side - but the problem is that at that point the pendulum is moving at its slowest.

What is the issue with the click moment for a double pendulum?

This may not be obvious if you try playing along and in time with one of the animations or a real physical double pendulum with no sound track. You may well be able to feel a particular moment in the rhythm to play your notes.

The problem though is that if you had several people playing with it at once they would feel it at different times probably. The reason is because the pendulum is moving at its slowest when it changes direction (unlike the bounce where the ball is moving at its fastest when it changes direction). As a thought experiment, imagine if you are on a train and ask the passengers all to clap at the moment when the train stops moving as it pulls into the station. The moment is so indiscernible, one minute it is moving and a bit later it is definitely stopped - but when did it stop exactly? You would expect the claps to be very ragged.

So, that's like the pendulum issue at a much slower scale. The pendulum motion is faster than that - but you are still using the slowest part of the motion when the pendulum slows to a halt and reverses - and the click moment has to be timed very exactly if it is to be useful musical practice and for metronome work.

So - playing at the moment when a pendulum changes direction has the same kind of an issue as that - if you add clicks to the visuals, then you can expect it to be next to impossible to play so that your beats are exactly in time with the clicks generated by the software - making for a frustrating experience for the user.

How can this issue be solved?

So - what to do about it? One idea is to use it only as a silent metronome. Another idea is to add a separate animation to show the user when exactly to play - e.g. a bouncing ball that bounces away from the pendulum bob and hits it exactly at the moment the swing changes direction. Another idea is to use the double pendulum to change something else in the program such as volume, pan location, other controller etc. Or have it as a separate display so that you have the bouncing balls to show you the moment of the beat - and in a separate display, the double pendulum which controls the timing of the bounces.

Another problem with some versions of the chaotic pendulum is that you get occasional very short beats like less than a tenth of a second, and with no warning to the user that it is about to happen - this is impossible to play along with unless you can learn to anticipate it since our reaction time is to slow to react in time. So one may need to make sure in some way that the beats are long enough. Maybe you just don't play clicks for the very short beats, so that the user isn't expected to synchronise with those.

Status: FEASIBLE, NEEDS MORE THOUGHT

Links for chaotic pendulum motions

LINKS:

Here are some links showing a variety of chaotic pendulum motions:

Double pendulum

Coupled pendula of same length

Double pendulum with maths.

Page of links to many physics animations

Double sprung pendulum This is particularly interesting for rhythms

2D sprung pendulum - would be easier to program probably.

Chaotic pendulum - this is an ordinary single pendulum but with a forcing motion applied which leads to it moving chaotically - a bit like pushing a child on a swing but with your pushes at a different frequency to the swing so that sometimes you stop the pendulum instead of push it.

Double square pendulum

Looks like a useful maths reference: Introduction to Chaos : physics and mathematics of chaotic phenomena

Assign stereo pan location and other controller individually to each beat in the rhythm

The idea is to take the Auto pan by position in measure option in Stereo Pan (Ctrl + 50), and extend it so that you can set the stereo pan individually for each beat in the rhythm.

Then you could do the same also for any controller e.g. reverb, tremelo, modulation (vibrato) etc. This could be done by taking the display for Adjust Swing or Individual Beats for part 1 (Ctrl + 76) (Tune Smithy 3 version is Beats volumes and times (Ctrl + 76)). It would look like that but have a drop list of controllers at the top so you can adjust the controller for each beat, or adjust the volume. Probably also let the user show several copies of the window at once one for each controller.

Status - feasible. May take a while to do. Will investigate further later on.

FEASIBLE

Reorder the parts by the number of beats

Order the parts strips in the Bounce Metronome Pro bouncing balls display so that the one with most beats is at the top. Optionally let the user also move one of the parts up or down e.g. with the up / down arrows.

Status: feasible. Will think it over some more then implement it, not sure when.

- I've added an option to Bounce Preferences (Ctrl + 220) Reverse order time signature parts. You can use this to change the order of the parts you get when you use a time signature with subdivisions.

It doesn't yet let you re-order the parts after you make a new rhythm or if you make it by adjusting the parts yourself - so that's still for the future.

New idea for how to do it

You need to be careful when to do it - to do it while the user is in middle of adjusting things is confusing - also to do it while playing a rhythm, I think likely to be confusing also.

So new idea - does it after a second of inactivity (say) and if mouse is not currently held down, and if not currently playing a rhythm.

Optionally also could do it while playing a rhythm, but that would be an extra check box (and test it out to see if it is best default to selected or unselected)).

UI as a couple of buttons in the Parts window - user can highlight any number of parts then will have up and down buttons. Up button moves all the highlighted parts up to before the immediately preceding unhighlighted part and down button moves them all down to after the next unhighlighted part (buttons of course hidden if there is no next or previous unhighlighted part).

Then also, droplist to auto arrange with most beats first, or last, or no auto arrange.

Main thing needs care is to make sure I copy everything when user moves the parts around - e.g. if they have set a beats per measure override for one of the parts or a go silent briefly for one of them - I mean - just to make sure that I have moved all the information associated with the part.

Also risk of bugs due to inconsistency - if it moves some of the internal information needed and not all of it.

Same is case for the auto arrange option. Because the re-arrangement can be done at any time and not just when user is making a time signature, have to be careful to move all the necessary associated information.

Actually - it would be a bit simpler if you don't need to move the controllers and instruments selected for the parts. That could be an option - to keep the instruments and just move the number of beats - or to move instruments and controllers as well. So would first program moving the instruments and controllers, volumes etc - and then - moving the numbers of beats, custom beats per measure, level of swing for each part etc - and then both.

Then in More version of Parts window have a way user can select which to do or do so e.g. Shift + click on the button moves just the instruments and controllers, and Control + click moves just the beats, amount of swing, and other things that change the rhythm for the part, and ordinary click moves everything.

PARTLY DONE

Add option to time shift the video or audio, preserving pitch

This is clearly useful if you want to play the video or audio more slowly to help with practicing the rhythms. It is probably quite hard to code from scratch but perhaps there are "plug ins" I can use to do it for me. Will investigate later on.

MAY BE FEASIBLE

Print Preview for the Export Animation, Print or Copy window (Ctrl + 234)

I'll add this when I get some time for it. There are a few gotchas - easiest way around them and easiest thing to program is to make the print preview the actual image used for the printed page just rescaled to fit the preview pane.

It may be a bit slower to refresh than an image made to the right size for the preview pane - but faster to refresh than it is to print it, saves paper, and will be exactly what you get when you print it out. On a modern computer the slightly slower refresh you get if you do it that way probably won't be much of an issue.

So I'll probably do that. Done that way then it is a pretty easy thing to add. Let me know if you need it especially for some reason. I will do it anyway some time when I get around to it but if someone particularly needs it then I can move it up my "to do" list and do it sooner.

UPDATE (aug. 2010)

You can already do this if you find out the resolution of the printed page - and then set the image size to the same resolution and copy it to the clipboard and look at it in another program.

Maybe not that important now unless someone is going to do lots of printing of the images. Let me know if you need this feature.

FEASIBLE AND EASY

Add option to get the instrument names from a sound font

Should be possible, depends how easy the Creative Soundfont SDK is to implement, will look into it to find out more.

Creative SDK

Status - possible, don't know how easy

POSSIBLE

Get a rhythm for a single measure from a midi file recording

Idea is the midi file would have just the beats of the rhythm as previously recorded. It could be just the beats for a single measure, then the program repeats it.

Or if it is a pattern for several bars, with one instrument already set to play the measure beat - the whole thing can be just treated similarly to a mixed meter consisting of several rhythms, as a pattern to repeat endlessly.

Status: feasible, not that hard to do.

FEASIBLE

Add option to get the rhythm and lyrics for an entire piece from a midi file

Straightforward but may take a bit of time to do it properly.

I could start by getting it to play midi karaoke files:

http://en.wikipedia.org/wiki/Musical_Instrument_Digital_Interface#MIDI_Karaoke_.28.kar.29

FEASIBLE AND STRAIGHTFORWARD

Play the tune using abc notation at same time as the bouncing balls

This is another way to play the tune, and this would work well as far as synchronisation is concerned. Similar to the midi approach - but using abc notation instead of midi - this makes the tune easy to edit by hand to enter your own tunes.

Again like the midi approach - could certainly do it though it may take a while.

See next wish for details

FEASIBLE AND STRAIGHTFORWARD but may take a while

Add abc notation so that Bounce Metronome Pro can play melodies

The idea here is that it would be nice to be able to play the tunes as well as show the rhythm with the bouncing balls, baton or drumstick. This could be useful for the sound car-tunes bouncing balls for instance, or if you use the swing metronome to practice jigs and reels, or other situations where you want to use the metronome to practice a tune.

Bounce Metronome can play melodies already - but they are fractal tunes, so that means that they never repeat exactly and you can enter a tune for the first few measures - but when it repeats it, it will transform it, shift it up or down in the scale or arpeggio.

The abc notation is a notation that's widely used for music where you most often only need a single melody line such as traditional music (although it can also handle chords) and is easy enough to use so that you can enter it by hand, just type in the notes of the tune. For the programmer, this sort of thing is far easier to program than a fully featured music notation type editor.

This would combine the rhythm and pitch capabilities of the fractal tunes and harmonic metronomes with the abc notation to let you play any tune not just algorithmically generated ones. So for instance you'd also be able to play the tunes in just intonation scales or any temperament etc. You'd also be able to use the abc notation to make seed phrases for the fractal tunes.

It is certainly possible to add this to Bounce Metronome Pro. One could do it as a hack with basic functionality probably quite quickly - follow the same approach as the drum and dance rhythms but with pitch added as well.

However, it is the sort of thing that will probably work better with some thought about how best to do it and integrate it with the other parts of the program.

One idea I just had (feb 2013) was to use chord progressions, and use the notation C1, G1 etc for a chord consisting of just the root note of the chord, i.e. a single note. This makes a non fractal melody line, exactly what we need. Just need to figure out how to automatically convert abc notation into a single notes chord progression + skips and it will have the capability. I.e. that would be what it does "behind the scenes" for techy users, and normally just enter in abc notation if you prefer.

Definitely on my to do list for the not too distant future, though whether that means in a few months time, or more like a year or two or whatever, I don't know, depends on amount of interest and what else I am doing, and how it fits in with other things.

- implemented now - found another way to do it.

Status - DONE

DONE

Unicode for lyrics and special characters

Feasible. Just a matter of whether anyone wants it enough. Could program it in a few days of work possibly sooner.

The program itself isn't unicode, can't show unicode characters in the titles or the dialog text. But you can put unicode into rich edit text, and can draw unicode characters into the bouncing balls display (as already can be done with e.g. the bouncing heart option which was a test of the possibility).

so - it would be easy to do. If you want this just ask and I can do it pretty soon.

STATUS SIMPLE TO DO

Let words and symbols bounce elastically like the bouncing balls (visual effect)

Could do that, just not got around to it yet.

STRAIGHTFORWARD

To play an audio recording through the program and synchronise the bounces

I have had a few ideas but basically it's not yet clear to me how best to do it. Probably can be done in one way or another, but with limitations.

If what you want is a Karaoke machine - then there is karaoke software on the web, such as KaraFun. Maybe one of those will do what you want?

I think this will require preparation of the mp3 to get the rhythm from it probably by hand.

I'm not sure how to do this yet. Even finding the main beat in a tune never mind the measure is quite a hard thing to program in software.

I know it is easy for a human musician listener. The software could do it easily if the main beat is the loudest beat all the way through the tune but you can't rely on that, and it's hard to program in a "sense of rhythm" which is based on what humans find helps them keep time with music - rather different from the things you can easily pick out from an audio recording using software.

So I think the feature would probably require someone to go through the mp3 first and "preprocess it". One way might be to tap out the beats and the measures by hand. BM Pro then records those taps, turns them into bounces and then plays back the mp3 and the recorded bounces simultaneously.

For more about this see the next section Let user record beats and bars for bounces for video or audio file to play whenever the file is played- FEASIBLE

The other idea is to work on the backspace tempo tap and try to find a way to use that to keep the . You can do that already after a fashion, but it is unsatisfactory.

There the idea is you tap along with the mp3 at the same tempo as the mp3 with the backspace key. If the two are at just a slightly different tempo to start with, then they will soon drift far apart, so you have to keep tapping to keep them in sync. E.g. if you tap at 60.5 bpm and the tune is 61 bpm, then you will be out of sync by half a second after a minute if you don't do anything to compensate.

Also unless the tune was recorded to a click track or played over looped audio, it is likely to vary in tempo slightly as well, and the bouncing ball would need to follow any slight changes in tempo in the mp3.

So this idea of using the backspace tap to keep the mp3 and lyrics in time with each other might work after a fashion but I think not very satisfactory.

Maybe the backspace could be combined with some auto detection of the rhythm - don't expect the software to find the main beat by itself - but after user gives it a hint - e.g. say that it is a 4/4 piece at approximately 60 bpm - then maybe the software could then detect the main beat - probably you still need to tell it where the first beat in the measure is to get it started - then it can search for other beats every second (in that case) - would then be fairly easy to find the exact moment of the attack of each note (especially if there is a drum or other instrument with a clear attack playing the notes - harder if it is a more subtle instrument such as wind or voice).

Status - FEASIBLE - BUT RATHER TRICKY TO IMPLEMENT

FEASIBLE

Add option to make "Follow the Bouncing Ball" type videos synchronised with an audio file such as mp3

Idea is to make videos like this:

Follow The Bouncing Ball And Sing Along

So, the ball bounces on the lyrics - but on every word, and sometimes twice on the same word. Also to bounce "as the word is sung" rather than on the beat - sometimes at the start of the syllable, sometimes in the middle of the syllable sung, as seems most natural.

This seems likely to be easy to do. Would use the "Tap out a rhythm" feature and add option to play mp3 at same time as you tap out the rhythm - and do it all as "one measure" because you don't need to know where the measures are for the ball bouncing on lyrics - all you need to do is to scroll to the next line when you need to, which it already does automatically.

Then as the mp3 plays you need to tap out for the bounces for every single syllable in the tune. Since all the work is done by the human user - the programming is likely to be quite easy.

Later could add an option to show images or animations behind the lyrics which is already possible with the bouncing balls windows so probably fairly easy to do again.

So - will give this a go some time soon hopefully, if I have the time.

STOP PRESS - have already done this by hand, to help someone who wanted bouncing balls for an audio recording to sing along to - and will be adding it as a feature in near future. Instead of using tap at tempo, you use the option to open an audio file in Bounce Metronome Pro - and then there's an option to click on the notes in the audio file to say where you want the balls to bounce.

So - you have to do that manually - ahve to find the start of each word which is usually easily visible in the audio file - and click on that, adjust if necessary.

This is a feature in the beta of Bounce Metronome Pro - and at the moment it is a bit too complicated and a bit confusing in the way it is set out to include in the release right away.

I found it pretty easy to do by hand. I anticipate that with a few tweaks to make it more user friendly then should be good enough to release as a useful feature for anyone who wants to add bouncing balls to their audio recordings of lyrics.

Still though - it is a matter of perhaps a week or two of work. Hard to tell, could be longer. I've not yet found the time to work on this but have it planned for the future when I get the time.

The main thing that needs to be done is to make it easier to click to set the start of each beat and to adjust the beats - and to loop around the sound so you can hear the sound as you adjust the beats for each note. It took me many hours of work to do my first synchronized bounce / audio. But hopefully I can make it easier for the future use by end users by tweaking the user interface to make the various steps easier to do.

PLANNED FOR NEAR FUTURE

Bounce on any video including bounce on the notes of a previously made video of scrolling sheet music

Here the idea is - like a video editing program - you present both video and audio tracks to the user. Then in the audio track you click at the start of each note you want the bounce synchronised with.

This then will show the frame for that moment of time in the video track. You then click on the video frame at the exact point where you want the ball to bounce at that moment in time in the movie.

Repeat that for all the notes in the song throughout the video.

Once I have the bounce on lyrics in time with audio (previous wish) worked out then this is something to explore as the next step.

On the face of it then it seems reasonably straightforward. But I have never programmed any video editing software so don't know for sure how easy it will be to do when I get down to it.

STATUS - PROBABLY FEASIBLE - NO IDEA YET HOW EASY OR HARD

First thought about how one might do it is to let the user click on the video for the start of each note so you have video and recording both presented to user and user clicks on the recording for the time - and on the video frame for that moment of the recording for the position of the bounce.

That could be done but the extra video element adds an extra layer of complexity. So - I don't know how to do it yet, and have no idea how easy or hard it is.

Add author's image maybe as jpeg with a few lines of text at end of the video

Easy feature to add once you have done the rest

Easy to do

Let user record beats and bars for bounces for video or audio file to play whenever the file is played

Idea here is, you play a video or audio file through and as it plays, tap out the bar beats with one key, and the individual beats with another. Your taps get recorded by Bounce Metronome (probably to another file with same file name different extension). Then whenever you play that file in the future, the bounces are played synchronised with your pre-recorded taps.

Or you supply a midi file with the timings of the taps obtained using whatever method you like, and those are used for the tap timings.

Once you have recorded the tap timings for a particular video you'd also be able to share it with others who want to play it in Bounce Metronome Pro.

This is completetly straightforward though as there is a fair bit of coding involved, I'll probably break it up into a number of subsidiary goals to achieve one at a time rather than do it all in one go.

FEASIBLE

Play a midi file through bounce metronome pro and synchronise the bounces with the midi file

Ideally - to read in any midi file e.g. for an orchestral work and auto detect the changes of time signature and show bounce or conducting patterns for them accordingly as it plays.

If possible, do any time signature changes as a script which the user can edit once it is auto detected.

Probably you would read the entire midi file in two passes, so first pass, you work out the time signature for every bar, then second pass to play it.

I think definitely feasible if the midi file is recorded with a tempo track so that the program can keep track of where the bar lines are. Not sure how hard or easy it would be to program - auto detecting the time signature by the note patterns in each bar is likely to be tricky, unless it is specified in the midi file.

Would need to think through it in detail, and maybe some simpler but useful objective could be achieved first as a step towards the goal.

If the midi file is recorded in real time without a tempo track to pin down the bar lines, it is then likely to be very hard.

Status: Feasible probably for some limited goals. Full objective may be quite hard to do and may require user interaction to maybe add events to the midi file to help pick out the start of each bar and set the time signature for each one etc.


FEASIBLE

Improve the way the bounces are found from a recording so that the program finds the beats automatically more easily

This part of the program is derived from some code I did for pitch tracing so doesn't work so well with percussion and it would work better if the tracing took more account of the volume at the start of the note and attempted to locate when the volume envelope starts.

FEASIBLE

Add Euclidean Rhythms

They are called "Euclidean rhythms" because the way they are constructed follows the Euclidean algorithm for finding common factors. Generates many traditional musical rhythms. See Godfried Toussaint's original paper: The Euclidean Algorithm Generates Traditional Musical Rhythms, extended version of his paper, and the Wikipedia article: Euclidean Rhythm.

Also very good explanation of Euclidean Rhythms here The Geometry of Musical Rhythm: What Makes a "Good" Rhythm Good? - Chapter 19 Euclidean Rhythms. See also Godfried Toussaint's Comparative Musicology - Musical Rhythm and Mathematics. For more on the maths see The Distance Geometry of Music where it is proved equivalent to a couple of other methods in Theorem 4.1. In particular, it is the same up to rotation as the Clough Douthett algorithm, which calculates the integer parts of i*n/k for i = 0 to k-1, where k = number of hits.

Other links: Flash app to make polymetric Euclidean rhythms, also, Euclidean rhythms primer, has links to some of the software you can use to make them

Here are some of the examples from Godfried Toussaint's paper:

E(2,5)=[x . x . .] = (23) (classical, jazz, and Persian).
E(3,7)=[x . x . x . .] = (223) (Bulgarian folk).
E(4,9) = [x . x . x . x . .] = (2223) (Turkey).
E(5,11)=[x . x . x . x . x . .] = (22223) (classical).
E(5,16) = [x . . x . . x . . x . . x . . . .] = (33334) (Brazilian necklace).

E(2,3) = [x . x] = (21) (West Africa, Latin America).
E(3,4)=[x . x x] = (211) (Trinidad, Persia).
E(3,5)=[x . x . x] = (221) (Rumanian and Persian necklaces).
E(3,8)=[x . . x . . x .] = (332) (West Africa).
E(4,7)=[x . x . x . x] = (2221) (Bulgaria).
E(4,11) = [x . . x . . x . . x .] = (3332) (Frank Zappa).
E(5,6)=[x . x x x x] = (21111) (Arab).
E(5,7)=[x . x x . x x] = (21211) (Arab).
E(5,9)=[x . x . x . x . x] = (22221) (Arab rhythm, South African and Rumanian necklaces).
E(5,12) = [x . . x . x . . x . x .] = (32322) (South Africa).
E(7,8) = [x . x x x x x x] = (2111111) (Tuareg rhythm of Libya).
E(7,16) = [x . . x . x . x . . x . x . x .] = (3223222) (Brazilian necklace).
E(11,24) = [x . . x . x . x . x . x . . x . x . x . x . x .] = (32222322222) (Central Africa).

E(5,8)=[x . x x . x x .] = (21212) (West Africa).
E(7,12) = [x . x x . x . x x . x .] = (2122122) (West Africa).
E(9,16) = [x . x x . x . x . x x . x . x .] = (212221222) (West and Central African, and Brazilian necklaces).
E(13,24) = [x . x x . x . x . x . x . x x . x . x . x . x .] = (2122222122222) (Central African necklace).

The algorithm doesn't look that hard to program, would need a bit of thought.

As for the user interface, just add a drop list of these example traditional rhythms, and you can enter any pair of numbers yourself by hand to make your own rhythms.

Connection with the Fibonacci rhythms

I've found out suggestion of Billy Stiltner that you can use these these Euclidean rhythms to make Fibonacci Rhythms.

Example E(13,8)

Following Godfried Toussaint's description of how to make the Euclidean rhythms in his paper, we get:

Construction of E(13,8) starts with 13 1s followed by 8 0s: 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0.

The next step is to move the 0s next to the 1s → 10 10 10 10 10 10 10 10 1 1 1 1 1.

Then similarly, move the 1s next to the 10s → 101 101 101 101 101 10 10 10, move the 10s next to the 101s → 10110 10110 10110 101 101, move the 101s next to the 10110s → 10110101 10110101 10110, and now we are finished as there is only one of the 10110s

To make this into a Fibonacci rhythm, change 1 to L and 0 to S to get:

LSLLSLSL LSLLSLSL LSLLS

to check that this is a Fibonacci rhythm, using LS → L and remaining Ls → S, it inflates as LSLLS LSLLS LSL, and then LSL LSL LS then LS LS L then L L S then S L. Note we can't inflate any further but S L trivially is a fragment of a Fibonacci rhythm.

Result to prove

The result to prove is that E(Fn+1,Fn) generates Fn+2 consecutive beats of the Fibonacci rhythm for the substitution L → LS, S → L, as 1s for Ls and 0s for Ss

Proof of this result

Proof is by mathematical induction.

First, it is true for E(F3,F2) = E(2,1) = 1 1 0 → L L S, a Fibonacci fragment.

Suppose it is true for E(Fn+1,Fn). We need to show it is true also for E(Fn+2,Fn+1).

The first step of the E process gives us

1, ... Fn+2 times ... 1, 0, ... Fn+1 times ..., 0

Moving the 0s below the 1s gets

10, ... Fn+1 times ... 10, 1, ... Fn times ..., 1
(since Fn+2 - Fn+1 = Fn)

But this is the same as the first step of the E process for E(Fn+1,Fn):

1, ... Fn+1 times ... 1, 0, ... Fn times ..., 0

with 10 substituted for 1 and 1 substituted for 0.

If we then continue through the E process, everything will be the same as for E(Fn+1,Fn) with this substitution.

So the resulting sequence of Ls and Ss will be the same as for E(Fn+1,Fn) but with L replaced by LS and S replaced by L. So it will give us the Fibonacci rhythm of Fn+2 beats as desired.

Result follows for all n by mathematical induction.

QED.

(Note, is easiest to start the induction at E(F3,F2) as in this proof, not E(F2,F1) - it also works, but gives 1 0, so the induction step substitution would give 10 1 as the next step instead of 1 1 0 - this is just due to a minor detail in the way E is originally defined)

Examples and more information

Example, grouping the letters so you see how each relates to previous row
E(2,1) as 1 1 0 = L L S
E(3,2) as 1 1 1 0 0 -> 10 10 1 = LS LS L
E(5,3) as 1 1 1 1 1 0 0 0 -> 10 10 10 1 1 -> 101 101 10 -> 10110 10 = LSL LSL LS
E(8,5) ... -> 10 10 10 10 10 1 1 1 -> 101 101 101 10 10 -> 10110 10110 101 = LSL LS LSL LS LSL
E(13,8)... -> 10 10 10 10 10 10 10 10 1 1 1 1 1 ... ends as LSLLS LSL LSLLS, LSLLS LSL (see above)

For more about the Fibonacci rhythms in Bounce Metronome, see Rhythm - no bar pattern, highly structured but never repeats - played on harmonics

The Eucliden algorithm generates the same sequence of 0s and 1s up to rotation as the Clough Douthett algorithm. For the proof of equivalence of these two algorithms, see The Distance Geometry of Music.

This algorithm sets the mth member of the sequence to 1 if m is the integer part of i*n/k, for i = 0 to k-1, and sets all other members to 0. Here n = number of beats, and k = number of hits, so for E(13,8), k=13 and n = 13+8 = 21.

This is a remarkably simple way to generate the Fibonacci word.

Sequence in the oeis: Fibonacci word (see also the Fibonacci word in Wikipedia)

Status - DONE, INCLUDING POLYMETRIC AND POLYRHYTHMIC EUCLIDEAN RHYTHMS, WILL BE IN NEXT UPLOAD

Previous Wishes Completed

Let the Go Silent Briefly option work over fractions of a measure

This is now done, see Change Log#Tuesday 5th February 2013

The idea is you could set it to e.g. 0.5 0.5

This doesn't look too hard to do, can take a closer look in the next beta / release cycle whenever it is.

Status - DONE

Let the Morph = Tempo and similar script instructions work for measures as well as for time

Currently the

Morph = Tempo

instruction in the script can be used in a situation like this:

time 0
 
Tempo = 60
Morph = Tempo
 
time 60
Tempo = 90

Idea is to do a simlar thing with bars, so you can do:

bar = 1
Tempo = 60
morph = tempo
 
bar = 8
Tempo = 90

What makes this a bit of a challenge is that the property being morphed also changes the time it takes to play a single measure. Might have to treat Tempo as a special case there - as the main property you are likely to want to morph that changes the length of a measure.

Status - DONE

Separate Bounce Metronome Pro wiki with the tool tip extra help for all the windows, searchable

Idea was to make something like the Tune Smithy help. Since that is currently for version 3.x and needs to be kept for users of Tune Smithy, was necessary to make a new wiki to upload the tips to, which was the main issue to be sorted out.

This required work on setting up the wiki so I can run multiple wikis from the same code - a bit techy but it is all done now.

UPDATE: I have sorted out those issues now and am in process of testing it and uploading content.

After sorting out various other techy details: here it is: All Windows

Status - This is it!: All Windows - DONE

Do the gradually changing tempo window over measures (instead of time)

Instead of changing gradually over a fixed period of time like say 30 seconds, could change gradually over a fixed number of measures, say 20 measures or whatever.

(N.B> what makes it tricky in that window is the option to vary tempo continuously - you could do it very easily with that option switched off so as an interim measure I might add an option to show measures instead of times in that window -but only for vary tempo continuously switched off - until this option is programmed for changing tempo).

- I found a way to do it for this window so it is now done

Status - DONE

Add an export option to export the visuals as a loopable animation

- i.e. for exactly one cycle to the next repeat of the animation. This would make them suitable for looping graphics on web sites such as my web page here: Bounce Metronome Visuals

Status: implemented in Export Animation, Print or Copy (Ctrl + 234)

DONE

Play any animation in the background of the bouncing balls

The idea is to play an animation simultaneously while you have the bouncing balls or conducting visuals in front. The challenge here is to do it in real time, and to do it smoothly.

The problem is that the bouncing ball frames are done in real time with a variable frame rate - each frame is done at exactly the moment when the computer is ready to do the next frame. So the timings of the frames can be vary a fair amount at times depending on what's going on on your computer - but it still looks smooth because the program draws the animation frame at the position it should be at the time when it is drawn.

UPDATE - I just tried the simple method of using the nearest animation frame in the movie to the current time - and it is working just fine on my computer bought last year. So on a reasonably new computer it should be just fine.

It works in the beta for avi files. There are free utilities to convert other formats to avi so that's not too much of a restriction.

UPDATE 2 - It is now included in the release.

Status - DONE

Custom conductor patterns

I used the conductor patterns from Brock McElheran because his system is comprehensive, covers all the rhythms and is easy to program. I know it is only one of several ways of conducting. So idea is to add the option to enter your own conductor patterns - perhaps as an editable list.

E.g. you could enter alternative conducting patterns for 2/4 up to 7/4 as a list like this:

2 1 2 3 1 3 1 4 2 4 5 1 2 3 5 4 6 1 2 3 6 5 7 1 2 3 4

Also could e.g. have option to set spacing and height for each one if you want the "bounce" to happen above the baseline or close to another bounce.

Also could let user draw a conducting pattern with numbered points on it for each bounce - then FTS can follow it in such a way that it hits each bounce point in time, and speeds up as it approaches each bounce - or let you just conduct with the mouse on a flat surface in real time once, click with left button for each "bounce" as you hit it - then it follows your conducting pattern by just playing back your mouse movements.

All this is very easy to program, needs a bit of thought for the user interface, nice clean ways of doing it. Will probably start with the list first as the easiest to do, and can do it in the near future. Let me know if you are particularly keen to see this implemented as I can them move it up to the top of my "to do" list and do it sooner.

- THIS IS NOW PART OF BOUNCE METRONOME PRO - see Conducting Patterns (Ctrl + 247)

DONE

Show visually whether you are on the beat, ahead of it or behind it

The idea is to help you play exactly in time with the beat - or to help you play always ahead or always behind the beat if that's what you want to do.

You could tap with the mouse, or press any key e.g. the backspace key (say) on the keyboard - or play a note via midi in (midi keyboard or any other midi device such as a drum pad etc.

It could then display whether your note was ahead or behind the visual beat, and by how much as a number or the position of a pointer on a dial.

You could also set limits, and if it is outside those limits, it plays a sound. You could set a different sound for ahead of the beat or behind the beat so you get immediate feedback of which way to adjust.

An attractive feature, not too hard to program. The basics to get it started, just to display how far ahead or behind the beat you are as a number is very easy programmatically. I have the timing for the visuals and can measure the time of any event such as tap with mouse etc so just have to display the difference between the two.

Main thing to think about is how to do the visuals e.g. pointer on a dial such as the tempo dial perhaps, and details like how to let the user set the tolerance, and sounds if you are ahead or behind the beat etc.

- Did it as a strip that you can add to the bottom of the 2D bouncing balls display which shows how far ahead or behind the beat your tap is. I can add it to the 3D bouncing balls in the same way.

You can switch on this feature in the Tap Timing (Ctrl + 237) window in the Tempo drop menu.

Status - DONE

Click on a beat to accent it as well as skip the beat

- IMPLEMENTED(June 09)AS Right click anywhere on the beat to cycle through the accent levels

Click on the diamond to skip a beat could cycle through:

skipped, normal volume, accented.

This should be easy to program. Main thing is to think through how the accents would interact with the user edited volumes e.g. in Adjust seed or individual beats (Ctrl + 76).

DONE

Keyboard shortcuts to mute individual parts

- IMPLEMENTED (June 09) use 1 2 3 etc to silence or play parts, if editing text use SHIFT + Space to switch on / off the silence shortcuts

DONE

Add in option to make Fibonacci rhythms as for David Canright's Fibonacci Gamelan Patterns

Tune Smithy can play these - so playing them isn't the problem. The thing is - the bounce visuals are based around a fixed measure size for the width of the window which the balls bounce back and forth within. But the Fibonacci rhythms, by their nature, have no natural repeating unit at any time scale that can be used like that.

So there is no immediately obvious way to convert a Fibonacci Rhythm into the type of rhythm that Bounce Metronome uses. Techy - BM uses the polyrhythms feature of Tune Smithy for the bounces - and to do the Fibonacci rhythms need a way to convert the Fibonacci Rhythm into a polyrhythm type notation (you can do that with time signatures, e.g. 6:2:1 for 9/8 time which is how BM does them - but you can't do the same trick for a Fibonacci rhythm).

The only solution I can think of is to make the Fibonacci rhythm as one big measure. So - I'd do it like the triplet rhythmicon - user chooses how many parts they want to do it for, and then have an option "Make Fibonacci Rhythm" similarly to Make Triplet Rhythmicon - but with more customizations available. That then will make one very long measure to play your Fibonacci rhythm.

That will work fine if you just want to play the rhythm for half a minute, or possibly even a minute or two, but not sure how well it will work if you want it to play for longer time periods as the fastest bounces in the rhythm would end up being very small and hard to distinguish on the screen.

But anyway - it would get the feature underway and the other problems can be met with later, will already be an interesting feature to have to explore. If there was the interest, or I had the time to work on it further after that - possibly use a "Scrolling window" view on the 3D bounce and 2D bounce so you only see part of the measure in the window at a time?

As for how to make it similarly to the triplet rhythmicon, it is reasonably straightforward to do that. I would get Bounce Metronome to generate the pattern of L and S beats for all the parts, in much the same way it does already for the fractal tune fibonacci rhythms. Then for the fastest part, would convert the L and S into beat sizes, e.g. for the Penrose ones into g (golden ratio) and 1.

For all the other parts, would set to the same number of beats as the fastest part, and skip beats to make the Ls and Ss e.g. for second fastest part translate L into * - and S into * where - means to skip a beat. Then next part it is L -> * - - (L + S of previous part) and S -> * - (L of previous part) and next part, L -> * - - - - (L + S on previous part) and S -> * - - and so on.

Not that hard to do so far. Maybe two or three days work - possibly faster even less than a day if it goes particularly well, guess

- Have done this now, see the blog: Fibonacci rhythms, sonified pendulum waves, options of interest to instrument tuners, and other new options and bug fixes

Status for limited version for up to say a minute or two of the rhythm - DONE

Views
Personal tools
Check out the Astonishing Bounce Metronome Pro

Beginners find the bounce wonderfully easy to work with.

Professional musicians are amazed by its advanced rhythm capabilities

Buy Now

box shot for Bounce Metronome

Or, get your free download
Free 30-day trial
Free taster bounce metronome, yours to keep

Or, find out more:
bouncemetronome.com

(By Robert Walker)