Hello
I see that trackers like DMC,CheeseCutter, JCH, SID-Wizard etc uses just a Speednumber you set.
How do I know the bpm?
chipmusic.org is an online community in respect and relation to chip music, art and its parallels.
You are not logged in. Please login or register.
Hello
I see that trackers like DMC,CheeseCutter, JCH, SID-Wizard etc uses just a Speednumber you set.
How do I know the bpm?
Chip trackers are in sync with a refresh rate, usually 60hz. A "tick" is simply 1/60 seconds.
All speeds that you can achieve are simply a factor of that 1/60 main tick speed.
Said that, it is easy to understand why you can't simply say "I want 125 BPM", the time resolution in this systems is very limited (is just like saying that you want a 15mpx image in a NES Tetris game)
However, some trackers out there have the possibility to change that refresh rate (I can assure DefleMask can). So you can actually set the main engine clock speed to something different than 60hz, to obtain a tick that can be multiplied to reach your desired tempo. But, yes, lot of technical stuff will be involved in that.
Last edited by Delek (Sep 15, 2015 1:24 pm)
This is always an interesting topic to me, BPM being tied to an unrelated hardware behavior.
Delek, are there benefits to using bpms that are divisible by the refresh rate vs those that require "extra code" to achieve?
Follow up question: what are the refresh rates of the DMG and GBC?
Okay, this was deeper than i thought
But if I open a tracker and I see that the speed is set to like "3" how fast is that approximately? Is it over 100bpm or under?
Delek, are there benefits to using bpms that are divisible by the refresh rate vs those that require "extra code" to achieve?
From the point of view of the user, there's no difference.
Technically is a little bit geeky stuff going on there, I will try to explain it in a simple way:
In a normal game environment, it is simply "enough" to use the screen refresh rate or another slow IRQ (interrupt request) to build your logic and music inside it. There are no needs for a "specific" tempo, no one cares that much about this (with exception of Music only apps or Chipmusicians).
Now, the implications of building your music update at a custom refresh rate are:
ALL your logic must run at that speed (multi-threading is something obviously outside of imagination)
You will need very precise and complex playback routine (timing, optimizations, strange hacks, etc)
Obviously more CPU use (particularly annoying in battery powered devices)
And even with all of this stuff, you are at the end of the day limited by the MASTER CLOCK of the device, behind the interrupts there is a master timing limit that is the actual clock of the core CPU (all becomes a multiple of 1/master_device_clock).
(Now it is easy to see why back in the day, the SEGA Genesis for example, used only the Z80 to play samples (a fast process) and leave the Motorola 68000 for the logic and simple music events)
what are the refresh rates of the DMG and GBC?
Its CPU runs at 4194304 Hz, to display a full frame it takes 70224 cpu cycles. So 4194304 / 70224 = 59,727500569605832763727500569606 Hz
But if I open a tracker and I see that the speed is set to like "3" how fast is that approximately? Is it over 100bpm or under?
Insufficient data for meaningful answer.
"3" means that it will take "3 ticks". It is up to the tracker if a tick means 1/60 seconds, 1/50 seconds or 1/300 seconds (normally you can find this in the manual or in the source code of the program)
Last edited by Delek (Sep 15, 2015 3:14 pm)
im sure that ages ago i found somewhere online the bpms of the c64 speeds at standard x1 speed.
really random stuff, 4 was something like 143.658 bpm. its gets even more incomprehensible if you use groove tempos and multispeed.
x16 speed with 70 30 groove tempo on.
I see that this thread is more about figuring out the BPM than setting it, but in case you want to do the latter, defMON is one of the few (only?) c64 tracker that can do this:
http://toolsforscholars.com/defmon/doku.php
You will need to use this link to calculate the numbers you have to enter though:
http://toolsforscholars.com/defmon/bpm.html
In most cases C64 Players execute once each screen update, so some standard C64 speeds are:
2 = 187.96703296703296 BPM
3 = 125.31135531135531 BPM
4 = 93.98351648351648 BPM
5 = 75.18681318681318 BPM
As Ilkke says, defMON allows you to set speed in a much more finegrained way that this. Nevertheless, you might still not hit exact "integer" BPMs like "125" etc. For example, by setting the timer interrupt value of the C64 in defMON to $4cf8 and using speed 3, you'll get 124.9997462572951 BPM, which is quite close to 125 BPM, but not exactly 125 BPM.
On the other hand, you can use Scannerboy's sync interface to make all your synths and gameboys and whatever obey the speed of the C64 running defMON.
Last edited by frantic (May 9, 2016 6:35 pm)