com.harryaskham.orbitdrums · Kotlin · OpenGL ES 3 · sounds by chirp
Orbit Drums
A drumming game in polyrhythms, played with two thumbs, a game controller or a keyboard. Every lane is an orb: a circular drum whose arm sweeps once per bar, in lock-step with the others. An orb that divides the bar into three carries a triangle of notes, four a square and five a pentagon, and you strike each note as the arm crosses it.
23 levels in 6 worlds6 bosses6 lessons±38 ms perfect
Orbs
Catalog.kt, so it changes when the level does.Notes come in several kinds: strikes, accents, holds, rolls, flicks (a swipe up), ghost notes you may skip (on Hard they become ordinary strikes), and voids, where you must stay silent. Notes that land at the same instant on different orbs are conjunctions, and filling the Resonance meter ignites it on the next downbeat.
Songs are built in sections, and a section can change the music under you: it can turn the orbs into different shapes, run the arms backwards, hide an orb, ramp the tempo or change the meter.
| Orbs | Controller | Keyboard |
|---|---|---|
| Two | L1, L2, D-pad · R1, R2, A B X Y | D F · J K |
| Three | adds L2 and R2 for the middle orb | adds Space |
| Four | split across both shoulders and pads | S · D F · J K · L |
Six worlds
Each world has its own key, instruments, background and a mechanic it introduces. Landed strikes leave each world's mark: moon dust, sand, laser streaks, petals, bubbles or bent light.






| World | Key | Levels | Orbs | BPM | Boss |
|---|---|---|---|---|---|
| Luna | D major | 5 | 1–2 | 80–96 | The Tidewarden |
| Dune | D Hijaz | 4 | 2 | 100–138 | Simoom |
| Neon | A minor | 4 | 2–3 | 108–124 | Overclock |
| Gilded | E pelog | 4 | 2–3 | 84–96 | Kala |
| Abyss | F minor | 3 | 2 | 72–80 | Kraken |
| Horizon | C Dorian | 3 | 2–4 | 96–104 | Event Horizon |
Bosses in odd time
Clearing a world opens its boss. Bosses move through odd and shifting meters. Before each change a card slides in with the new time signature and its beat groups, then bursts on the downbeat. An orb that follows the groups (2+2+3 in 7/8) draws an irregular polygon through the group starts, and arcs around its rim mark each group.
Every landed strike drains the boss's health; PERFECTs and conjunctions hit hardest. A boss must be broken before the song ends, because one that survives is a fail. Each boss brings its own band, from djembe and sitar to gong and waterphone, and breaking it plays a fanfare.






Modes
- Journey: levels across six worlds, each with Easy, Normal and Hard charts, and a final level that unlocks at 60 stars.
- Bosses: one per world, in odd and shifting meters such as 7/8 and 11/8, with health your strikes drain before the song ends.
- Orbit School: short lessons in striking, holding, two hands, conjunctions, flicks and voids, each looping until you get it.
- Daily: one seeded song a day, with a name, a streak and sometimes a twist such as Mirror or Fade; about one day in four is in an odd meter.
- Endless: two to four orbs drifting through ratios, faster and denser as you go.
- Workshop: any ratio from 1:1 to 9:9 at 40–160 BPM, optionally with the computer playing one hand.
- Jam: free play over a world's backing with a loop recorder; loops can be shared as a link or exported as a WAV file.






Timing
Session.kt. A close-up of one note above, and one whole bar to scale below.Calibration is tapping along with a click. Offsets are kept separately for each audio output (the speaker, wired headphones, and each Bluetooth or USB device by name), and calibrating with a controller measures that controller's own extra delay. On a controller or keyboard, flick notes strike themselves.
Sound and picture
The game's 44 instruments are rendered ahead of time with chirp, the synthesiser on the tools site, into Ogg sample banks shipped in the app (about 6 MB), and played by a sample-accurate mixer. The band grows with your combo: extra parts join at 10 and 30, every 16 PERFECTs in a row plays a run, and conjunctions ring a chord. Each world's sounds are decoded once and cached, so only the first play of a world waits for decoding.
The picture is drawn with OpenGL ES 3.0. The game logic (charts, judging, worlds, the composer, the mixer and the generators for daily, endless and workshop songs) is a plain Kotlin module with its own tests, including an autoplay of every level on every difficulty to a perfect result.
Limits
- Timing depends on the audio output's delay; each output needs calibrating once.
- The final level, Musica Universalis, stays locked until you have 60 stars.
- Android only, through Google Play internal testing.