0

I am thinking about making a software beat machine, and wondering how I can make the timeline adapt to where you start off with 4/4, then you realize you want to have 8th notes, then 16th notes, then 32nd notes, etc.. How far can you break down the beat?

I'm thinking of having this:

1024
512
256
128
64
32
16
8
4
2
1
2
4
8
16
32
64
128
256
512
1024

Starting from the 1 going vertically up/back, that divides the beat, then going down/forward, that multiplies/prolongs the beat. The beat at 1 gets a certain BPM between some range I guess, and then you can divide it or combine it.

Is there any need to have more fine-grained division? Should it be extended further?

phoog
  • 22,771
  • 3
  • 39
  • 86
Lance
  • 682
  • 1
  • 7
  • 16
  • 2
    You must also be able to divide by three, five or 6. – MaestroGlanz Mar 12 '24 at 07:45
  • Also 128 to 16 is enough. In your division, you can have 1 beat for every millionth beat. You can include that, but it is useless imo. You also need to include accents. For example in 4/4: 1!! 2 3! 4 – MaestroGlanz Mar 12 '24 at 07:48
  • 2
    I’m voting to close this question because it's impossible to give a specific answer. There are no theoretical limits, only practical ones, and those will vary by context and need. – Andy Bonner Mar 12 '24 at 13:49
  • To elaborate my close-vote comment: 1) "beats" are just ideas. Notes are "real" and can be heard, but the beat is just a conceptual way of grouping or understanding them. You could divide infinitely, in theory. In practice, we lose the ability to play notes beyond a certain speed on certain instruments, and even listening to computer-generated ones, we lose the ability to perceive them as separate impulses once they get too fast (and lose aesthetic interest in doing so long before that point, and say "that's too fast"). What subdivision hits that point? Aside from the fact that... – Andy Bonner Mar 12 '24 at 13:53
  • ... Aside from the fact that the practical limit in performance varies by instrument and ability (even the "ability" of various machines, like CPU clock speed or speaker clarity), and from the fact that the limit of "too fast to hear" or "to want to hear" varies from person to person, the biggest point is that it depends how fast the beat is. I know of one piece off the top of my head that contains 128th notes (the 1st movement of Bach's G minor solo violin sonata), but the beat is very slow, like below 40bpm. – Andy Bonner Mar 12 '24 at 13:57
  • Whatever division is practical at 60bpm, only double that note value would be practical at 120, or half the note value at 30. Finally, any question of "What division is needed in my app" is simply a subjective, opinion-based question and off-topic here. Note, if your app only goes to 16th notes and someone needs 32nds, and their bpm is 60, they can simply set the bpm to 120 and ask for 16ths. – Andy Bonner Mar 12 '24 at 14:00
  • @AndyBonner there is a theoretical limit: at some point the beats will stop sounding like beats and start sounding like a buzz. For example, at quarter=92, there will be roughly 98 256th notes per second, which is roughly G2. – phoog Mar 13 '24 at 12:24
  • @phoog Splitting hairs, i’d call that a practical limit, but yes. – Andy Bonner Mar 13 '24 at 13:06
  • @AndyBonner The one I know of is two decorations in the slow movement of Beethoven's Op. 81a piano sonata. – BobRodes Mar 14 '24 at 18:56

5 Answers5

2

It's a modeling and design problem. Every piece of software is based on a model of the usage environment, the people and other actors there, and what they do. It's an abstraction, a simplification, a set of requirements and assumptions. As a software developer you provide a design to fulfill those requirements. Who are you making this app or device for, where do they live, how do they look at music and the world, and what should they be able to do with the app or device you're designing? Is it for yourself, or someone on this forum? For unknown people in an unknown location for unknown purposes? If you don't know who it is for, and for what purpose, then it means that you are essentially asking random people to tell it to you, which is not really feasible.

If you are a musician yourself, and you make this for your own use, things are greatly simplified. You can try something, anything, and very quickly see if it's fit for your purpose. Then you make changes and try again. Or maybe you're inspired by your design, and you figure out something else to do with it than what you initially had in mind.

What kinds of perspectives for designing a beat machine's time division characteristics could there possibly be? Let's see what I can think of. These are not necessarily mutually exclusive.

  • N step sequence with speed control. You give the user exactly 8 or 16 steps, and a way to set the speed. Sequencers like this exist in devices like the Korg Volca series. If you also provide a length setting for the sequence, the user can do, say, a 7/8th or 15/8 rhythm. Or 15 bars if that's how the user wants to see it.
  • Polymeters: with polymeters, you have multiple rhythms with potentially a common pulse, but different measure lengths.
  • Arbitrary precision machine: the user can supply any numerator + denumerator combination they like for each and every note. 135762/173869ths. I've never seen such a thing, but I'm sure there is a math music geek somewhere in the world who would like to experiment with one.
  • PPQ resolution based timing. You divide a "beat" to, say, 480 ticks and let the user figure out what to do with that. This is common in MIDI sequencers.
  • Sync pulse: you externalize your timing decisions. Whenever a sync pulse comes, your sequencer proceeds one step forward, and it is up to the external device to decide how often pulses happen, and up to the user to decide how they want to hear it. What is a "beat"? It's in the ear of the beholder. Maybe they want to have the speed fluctuate up/down like in pulse width modulation?
  • Multiple grids with different divisions for fixed-length "measures". Let's say, 1/3rd grid against 1/5th grid against 1/7th grid against 1/11ths. Polyrhythmic stuff.
  • Swing. 1/8th or 1/16th grid, but with a swing percentage like 62%, which delays every other grid line.
  • Triplet beat. Instead of 2/3 or 66.6% swing, maybe you want real triplet shuffle? 12/8 like in Toto's Rosanna.
  • Tuplets. Let's say you want an 1/8th grid, but you can optionally divide a freely selectable set of beats to form a tuplet of, say, 3 over two eights. This gives the ease of use of a simple grid, but without completely limiting the user to that all the time.
  • Ratchets. Ratchets are hip and hot in some electronic genres. It means a quick tremolo-like repetition of a note. The user can set a note to be played with a "ratchet" of some speed.
  • Flams. Maybe you just want to be able to specify individual hits to be played as "flams". A flam is a rhythmic articulation, which basically means a double-hit where the first hit is slightly quieter and comes slightly before the harder hit. You'll probably want to adjust the flam length in milliseconds.
  • Timing offset. Some sequencers have a simple grid, but with the possibility to shift individual hits or instruments in time by an offset, which can be specified as a percentage, or absolute number of milliseconds. This would let you have, say, a slightly delayed snare. Or a shaker that starts slightly in front of the grid.

Maybe you think some of these options and aspects are silly. But maybe someone else doesn't. Who are you designing the software for? What genre?

Another dimension to think about. Are you trying to make a device or app that's everything for everybody? And do you get the design goals from other people and what kind of music they might want to do? You can turn the whole question completely upside-down by selecting a very narrow and specific model of music that, in your personal opinion, works in a particularly interesting and inspiring way.

When you write a music application, you inevitably impose some kind of a suggested model of music to your users. By thinking about 128th notes and even implementing them, is your intention to communicate to your supposed users that they should know about 128th notes as well? Why? Would it make your hypothetical users create better music, if your beat machine presented a simpler model of music? Maybe not talk in any mathematical terms at all? These are design decisions.

piiperi Reinstate Monica
  • 27,967
  • 1
  • 37
  • 91
1

There's no theoretical limit to how many parts into which a beat can be divided, only practical ones. In theory, one could have one whole note per hour, such that playing four notes per second would be notated with 14,400th notes.

Practically, though, there are at least two problems:

  • At any reasonable beat-rate, "fast" notes eventually become unplayable. Even if realized electronically, distinguishing the notes would exceed the limits of human hearing.
  • Notating them would be difficult. Providing enough beams would both take up too much room both vertically and horizontally on the score as well as being difficult, at best, to distinguish visually.

In practice, 64th notes are the "smallest" one encounters, and whole notes the largest, with double whole-notes also showing up from time to time.

Aaron
  • 87,951
  • 13
  • 114
  • 294
1

You mentioned the timeline, which assume is the visual scroll of the music, at some point early in the beat subdivision visual display will be the problem. You won't have enough pixels, unless you have a zoom feature. I suppose eventually the CPU clock will become the problem. But what will not be the problem is a musical limit, because you can subdivide a beat infinitely.

In standard notation scores, by far, you don't usually see values smaller than 32nd and 64th notes, but I suppose 128ths might be seen occasionally. Part of what mitigates the need for many, many subdivisions into small note values is changing tempo. You don't need 128th notes to notate fast. You can use, for example, 16ths with a fast tempo. But the practical limit here is about what is playable. With EDM you don't have that concern. The limit is going to be whatever the computer can do in terms of visual display and the computer clock.

Just curious, have you tried testing what 1024th notes at various tempos sound like? When I think of EDM I think of "fills" where a bass drum speeds up in stages 1 2 3 4 | 1 + 2 + 3e+a 4e+a | at which point it's only going at 16th notes. Maybe it goes to 32nd notes, but if it does that at a fast tempo, it starts sounding like a machine. 256th, 512th, 1024th notes, etc. seem less danceable and more like avant-garde electronic music rhythms. That's fine, but you might ask whether that's the direction you want to take with your application.

Michael Curtis
  • 56,724
  • 2
  • 49
  • 154
1

It mostly goes down to what you actually want your program to provide. For instance, you're only considering powers of 2, but you're missing the important requirement of using triplets.

How simple/complex would the timing of your program be?

Most "beat machines" only have simple subdivisions: 1/3 and 1/4 of each beat (it doesn't really matter if the actual beat is a "quarter"/crotchet or not).

But if you're going up to 10th (1024) subdivisions/multiplications, then your approach is probably too arbitrary, especially since you're not considering triplets, which are way more common than 1/1024 notes (and even than 1/32).

Practically, you should always just work with float numbers in the range of 0.0-1.0 of each beat/subdivision within the logical pattern of actual rhythm (for playback and UI representation), then eventually provide common fractional values and possibly allow further denominators beyond 2 and 3 for actual input or editing.

musicamante
  • 6,664
  • 1
  • 17
  • 37
0

4/4 is the most common time, so one bar of that is the usual. There are occasions where 8/4 is used, but they're rare. Read on.

6/4 and 12/4 are different beasts (yes, and beats!) and we get compound times, like 6/8, 9/8, 12/8, so triplets will need to be catered for, too.

On the subject of sub-dividing beats, hemi-demi-semi quavers are used, but rarely. That equates to 1/128, which will cover pretty well all written music.

The facility to use tuplets will also be a factor, where two beats, for example, are replaced by three in the same timing.

Tim
  • 192,860
  • 17
  • 187
  • 471