diff --git a/website/src/pages/understand/cycles.mdx b/website/src/pages/understand/cycles.mdx
new file mode 100644
index 00000000..a66794be
--- /dev/null
+++ b/website/src/pages/understand/cycles.mdx
@@ -0,0 +1,130 @@
+---
+title: Understanding Cycles
+layout: ../../layouts/MainLayout.astro
+---
+
+import { MiniRepl } from '../../docs/MiniRepl';
+import { PitchSlider } from '../../components/PitchSlider';
+import Box from '@components/Box.astro';
+
+# Understanding Cycles
+
+The concept of cycles is very central to be able to understand how Strudel works.
+Strudel's mother language, TidalCycles, even has it in its name.
+
+## Cycles and BPM
+
+In most music software, the unit BPM (beats per minute) is used to set the tempo.
+Strudel expresses tempo as CPS (cycles per second), with a default of 1CPS:
+
+
+
+Here we can hear the 1CPS in action: The kick repeats once per second like a clock.
+We could say 1CPS = 1BPS (beats per second) = 60BPM. Let's add another kick:
+
+
+
+Now we have 2 kicks per second, but the whole pattern still plays at 1CPS.
+In terms of BPM, most musicians would tell you this is playing at 120bpm.
+What about this one:
+
+
+
+Because the second sound is now a hihat, the tempo feels slower again.
+This brings us to an important realization:
+
+
+
+Tempo is based on perception.
+The choice of sounds also has an impact on the tempo feel.
+This is why the same CPS can produce different perceived tempos.
+
+
+
+## Setting CPM
+
+If you're familiar with BPM, you can use the `cpm` method to set the tempo in cycles per minute:
+
+
+
+If you want to add more beats per cycle, you might want to divide the cpm:
+
+
+
+Or using 2 beats per cycle:
+
+
+
+
+
+To set a specific bpm, use `.cpm(bpm/bpc)`
+
+- bpm: the target beats per minute
+- bpc: the number of perceived beats per cycle
+
+
+
+## Cycles and Bars
+
+Also in most music software, multiple beats form a bar (or measure).
+The so called time signature specifies how many beats are in each bar.
+In many types of music, it is common to use 4 beats per bar, also known as 4/4 time.
+Many music programs use it as a default.
+
+Strudel does not a have concept of bars or measures, there are only cycles.
+How you use them is up to you. Above, we've had this example:
+
+
+
+This could be interpreted as 4/4 time with a tempo of 110bpm.
+We could write out multiple bars like this:
+
+\`).cpm(110/4)`}
+/>
+
+Instead of writing out each bar separately, we could express this much shorter:
+
+>,hh*4").cpm(110/2)`} />
+
+Here we can see that thinking in cycles rather than bars simplifies things a lot!
+These types of simplifications work because of the repetitive nature of rhythm.
+In computational terms, you could say the former notation has a lot of redundancy.
+
+## Time Signatures
+
+To get a time signature, just change the number of elements per bar. Here is a rhythm with 7 beats:
+
+
+
+or with 5:
+
+*5")`} />
+
+We could also write multiple bars with different time signatures:
+
+\`).cpm(110*2)`}
+/>
+
+Here we switch between 3/4 and 4/4, keeping the same tempo.
+
+If we don't specify the length, we get what's called a metric modulation:
+
+\`).cpm(110/2)`}
+/>
+
+Now the 3 elements get the same time as the 4 elements, which is why the tempo changes.