Did some overclocking experiments for fun.. #4
Replies: 1 comment 2 replies
-
Brilliant! Fascinating :) You must be getting closer to having spent more time on this now than me! There are still some things I want to try still - I was discussing with the owner of Synth_Dexed if we can better make the library more suitable for cross-microcontroller work and that might allow some more optimisations in the calculations. There is also now a neat fixed point library as part of the Mozzi Arduino library that might allow some fixed-point operations to replace any remaining floating point. And I still wonder if there is a more optimal way of doing I2S or PWM rather than the many layers that the RPi library seems to introduce. And of course, now there is a RP2350 Pico 2 which includes a faster MCU core with DSP and FPU instructions as well as being clocked slightly faster too! Kevin |
Beta Was this translation helpful? Give feedback.
-
NOTE: These values are SPECIFIC for my Pi Pico, your milage may vary. Probably the big problem is the FlashClock which gives up around 280Mhz from what I've read online. Though it is possible to clock down Flash (using another flash divider) but I guess then most of the gain will be removed.
Current UF2 is around 304KB for me so it does not fit into RAM either.
It may be possible to pin specific functions into RAM..
Also keeping USB traffic working with higher clocks may be hard..
The setup I use to try this out is playing MID-song with one of the patches that ring for a very long time to get maximum overlap. I also entered a section with 32-poly notes (bringing in note by note) to really push the engine. If the current settings cannot handle the work, tones will start sound weird after a while. These are the maxes I've found.
From my experiments I've found out roughly the following formula to max out everything out:
DEXED_POLYPHONY x DEXED_SAMPLE_RATE x 538 = XXX hz needed to sound correct while playing.
Thus approx. 538 clockcycles is used in average for each sample and each channel.
Example:
16-note@48kHz => 16 x 48000 x 538 => Approx 414Mhz not possible for me.
Or lets say we wanted CD-quality 44.1kHz how many voices would that be with 285Mhz?
285Mhz/44.1kHz/538 = 12-voices
// 24000, 16, 1 16-note polyphony at 24kHz if overclocked to 250MHz
// 24000, 8, 0 8-note polyphony at 24kHz
// 48000, 8, 1 8-note polyphony at 48kHz if overclocked to 250MHz
// 48000, 4, 0 4-note polyphony at 48kHz
// New settings possible if you get 285Mhz overclock working
// 48000, 11, 1 11-note polyphony at 48kHz if overclocked to 285Mhz and overvolt set to 1.3V
// 24000, 22, 1 22-note polyphony at 24khz if overclocked to 285Mhz and overvolt set to 1.3V
// 16000, 32, 1 32-note polyphony at 16khz if overclocked to 285Mhz and overvolt set to 1.3V
// 22000, 24, 1 24-note polyphony at 22khz if overclocked to 285Mhz and overvolt set to 1.3V
// 20000, 26, 1 26-note polyphony at 20khz if overclocked to 285Mhz and overvolt set to 1.3V
// 32000, 16, 1 16-note polyphony at 32khz if overclocked to 285Mhz and overvolt set to 1.3V
// 96000, 5, 1 5-note polyphony at 96kHz if overclocked to 285Mhz and overvolt set to 1.3V
// 44100, 12, 1 12-note polyphony at 44.1kHz if overclocked to 285Mhz and overvolt set to 1.3V
Beta Was this translation helpful? Give feedback.
All reactions