Music tempo restrictions

By Metalion

Paragon (1149)

Metalion's picture

02-08-2020, 11:19

The subject has already been partially discussed here :
https://www.msx.org/forum/msx-talk/general-discussion/50hz-v...

But I find myself facing the same questions as I want to develop a very light replayer. The smallest division of note I want to use is the third of a triplet of sixteenth notes. If you associate a number of frames on that given length, you are stuck with a limited number of quarter tempos available.

    @50Hz
  • 2 frames => quarter tempo of 375 (!!)
  • 4 frames => quarter tempo of 187
  • 6 frames => quarter tempo of 125
  • 8 frames => quarter tempo of 94
  • 10 frames => quarter tempo of 75
  • 12 frames => quarter tempo of 62
  • 14 frames => quarter tempo of 54

Is there a way to use intermediate quarter tempos ?

Login or register to post comments

By Grauw

Ascended (9156)

Grauw's picture

02-08-2020, 14:43

Yes, let go of the concept that every note event must be perfectly quantised. Humans don’t play music with perfect precision either Smile. You could even argue that it will make the music sound a bit more natural. Adds a bit of swing to it.

In practice this means alternating to reach in-between tempo values. E.g. 6 frames then 7 frames, repeat. Or 3x 6 frames 1x 7 frames, etc. This is the most common approach, afaik all trackers do this.

Or use a timer available in some sound chips like the MSX-AUDIO and OPL4, which can generate interrupts at a wide range of frequencies.

Or use the MSX2 V9938’s horizontal line interrupt to create a 300 Hz timer. At 50 Hz set interrupts on lines 0, 51, 102, 153, 204 and 255. At 60 Hz set interrupts on lines 0, 52, 104, 156, 208. Or differently put, increment the line number by 51 at 50 Hz or by 52 at 60 Hz, and reset to 0 on carry.

By Metalion

Paragon (1149)

Metalion's picture

03-08-2020, 09:14

Thanks, Grauw.