StreamCode Studio Rotation Builder
RadioDJ rotation utility

Rotation Builder

Create custom RadioDJ rotation queries or generate a standalone PHP rotation script using configurable playback and artist-separation rules.

Rotation configuration

Build a custom RadioDJ rotation

Configure the playback rules below and generate either a RadioDJ-compatible SQL query or a standalone PHP playlist engine.

SQL or PHP output
Building rotation...

Rotation rules

Set the playback separation, target duration and required output format.

1-365 days

Include songs that were last played more than this number of days ago.

Hours

Prevent the same artist from repeating within the selected number of hours.

Hours

The approximate total duration of the generated playlist.

SQL or PHP

Choose a RadioDJ SQL query or a standalone PHP playlist builder.

SQL output can be adapted for use with RadioDJ rotation queries. PHP output provides a standalone example capable of selecting tracks and creating an M3U playlist.

Review all generated code before using it with a live database. Table names, column names and RadioDJ structures may differ between versions.

We've sent a download link to your email {}
Please check your inbox (and spam folder just in case).
The link will be valid for 24 hours.


Bell Online / MixStream


BellOnline offers fast, reliable UK hosting with strong security and excellent uptime - perfect for modern radio and web projects.

MixStream provides broadcast-grade streaming with crystal-clear audio and rock-solid stability, ideal for both hobby and professional stations.


Goto BellOnline Now!

Close
results.addEventListener('click', async function (event) { const copyButton = event.target.closest( '.scs-copy-rotation' ); if (!copyButton) { return; } const targetId = copyButton.dataset.copyTarget; const target = document.getElementById(targetId); if (!target) { return; } try { await navigator.clipboard.writeText( target.textContent || '' ); const originalHtml = copyButton.innerHTML; copyButton.innerHTML = 'Copied' + ''; window.setTimeout(function () { copyButton.innerHTML = originalHtml; }, 1800); } catch (error) { window.alert( 'Unable to copy the generated code.' ); } });