Help for Tune Smithy
Bounce Metronome Pro Wish List
From Tune Smithy
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: Bounce Metronome Jottings for my own notes about things I'm about to do or would like to do some time if possible.
AS you can see though many of the individual features are pretty easy to do like a day or two of work some of them - there are so many that to do them all would take many months probably. Nevertheless, I expect most will get implemented eventually if all goes well. But if anything is particularly high priority for you do let me know as then I'll be more likely to do it sooner.
For more about this see What is the wish list for
See also the Tune Smithy Wish List
You can discuss it in the Bounce Metronome Forum
These features will also get incorporated into the rhythms and polyrhythms task for Tune Smithy 3.2 when it is released. Features that apply to the whole program will get incorporated into Tune Smithy as a whole.
NB This is the wiki for Tune Smithy - only this page is for Bounce Metronome Pro. Some of the help applies to both - but when I mention particular windows in this wiki, the links take you to the screen shots for Tune Smithy 3.0 so may look a bit different from the windows in Bounce Metronome Pro. I can update those links later when I update Tune Smithy as a whole, or if I make a separate Bounce Metronome Pro wiki.
Do the gradually changing tempo by measures rather than time
The idea is you may want to gradually change tempo over a fixed number of measures rather than a fixed time. E.g. increase in speed for 10 measures. Either in the gradually changing tempo window or in the script.
Just found an easy way to do it so should be able to upload soon.
Status - nearly done
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
Separate Bounce Metronome Pro wiki with the tool tip extra help for all the windows, searchable
Like this section of the FTS wik: All Tune Smithy Windows
In fact many of those windows are in BM Pro - but many have changed and there are many new ones. So the FTS help won't be of much use to a Bounce Metronome Pro user - and vice versa to update that to the BM Pro help would confuse users of FTS 3 release.
So it needs a separate BM Pro wiki and that's where it gets a bit techy, ideally want to run both wikis from the same code so you don't need to reinstall all the plugins etc for both wikis - and I think it can be done but haven't had time to chase it up yet.
It's one of those things that might involve only a few days of work. I already have it set out to export all the tool tips for any of the windows - indeed already set up to export them for all the windows in suitable form for upload to a wiki, and to automatically do the screen shots too, did all that for FTS. So really it is mainly a matter of sorting out the multiple wikis issue. UPDATE: I have sorted out those issues now and am in process of testing it and uploading content.
Status - FEASIBLE AND READY SOON
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 so in the near term more likely to focus on improving efficiency of the 2D window. May add some 2D options to the 3D window and so do it little by little
Enable Anti-Aliasing for the 2D and 3D graphics in the program
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
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
Let the Morph = Tempo and similar script instructions work for measures as well as for time
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.
This can be used for the gradually changing tempo window as well
After I figure out how to do the morph for bars, would be able to do same thing for the gradually changing tempo window - 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).
Status - FEASIBLE, NEEDS SOME 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:
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
This should be easy to do and is on my wish list for the reasonably near future.
Maybe something like this:
[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.
The way I'd probably 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.
Status - FEASIBLE AND PROBABLY REASONABLY STRAIGHTFORWARD
FEASIBLE AND FAIRLY EASY
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?
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)
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 each frame that marks the start of a beat.
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) - and then 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.
Then it would be easy 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.
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.
Status - FEASIBLE - straightforward as far as I can see and may be quite easy, hard to tell until I give it a go.
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.
FEASIBLE AND EASY
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
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:
Quite hard but may be FEASIBLE
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.
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
- 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
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
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
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
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
Here are some links showing a variety of chaotic pendulum motions:
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.
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 Seed as bar charts (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.
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.
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).
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
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.
Status - possible, don't know how easy
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.
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:
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.
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.
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.
Status - FEASIBLE
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.
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
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:
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 - 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.
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.
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.
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.
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.
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)
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.