Appearance
Tempo and Follow Project Tempo
Miao has one visible project BPM in the top bar. Audio regions can individually follow that BPM when Follow project tempo is enabled.
The Mental Model
| Concept | What it means |
|---|---|
| Project BPM | The visible top-bar tempo at beat 0. It drives the grid, chord blocks, MIDI editing, metronome, synced effects, and tempo-following audio. |
| MIDI tempo map | Tempo and time-signature events imported from MIDI files. They can update or preserve imported MIDI timing depending on import policy. Manual tempo-map editing is not exposed yet. |
| Source BPM | The original tempo of one audio region's source file. Miao needs this to know how much to stretch when the project BPM changes. |
| Follow project tempo | A per-audio-region switch that makes the selected region keep beat length instead of fixed source-file seconds. |
| Stretch mode | The processing strategy used when a region follows project tempo. |
Tempo is not per track. Audio tempo following is per region. MIDI clips follow the project/grid timing unless imported with a policy that preserves the original file timing.
Project BPM
Use the top-bar BPM field to set the project tempo. It affects:
- Timeline bar/beat grid.
- Chord block positions and durations.
- MIDI editor grid and quantize timing.
- Metronome and count-in.
- Tempo-synced effects such as Delay, Tremolo, Auto-pan, Auto-filter, Chorus, Flanger, and Phaser.
- Audio regions with Follow project tempo enabled.
Changing BPM does not automatically time-stretch every audio file. Only regions with Follow project tempo enabled react to the change.
MIDI Import Policies
When importing a Standard MIDI File, choose the tempo policy before import:
| Policy | Use it when | Result |
|---|---|---|
| Keep project tempo | You want the MIDI to fit the current project grid. | Imported notes are placed against the current project BPM. |
| Use file tempo | The MIDI file's tempo map should define the project timing. | The file tempo and time-signature map update the project before placing clips. |
| Original timing | The MIDI was performed at another tempo and should sound close to the file's original timing. | Clip timing is converted so playback stays close under the current project tempo. |
Imported MIDI tempo, time-signature, key-signature, controller, program, pitch-bend, pressure, and text metadata are preserved for MIDI export where applicable.
Audio Source BPM
Source BPM is the tempo of the source audio before Miao stretches it. Detection can fill this automatically for regular loops, but you should correct it when:
- The loop has pickup notes or silence before the first downbeat.
- The source has swing or loose timing.
- The detected value is double-time or half-time.
- The imported material is not a regular loop.
Example: a loop recorded at 100 BPM with project BPM set to 125 should have Source BPM set to 100 and Follow project tempo enabled.
Follow Project Tempo
Select an audio region and use the Selection inspector:
- Set Source BPM to the source tempo.
- Enable Follow project tempo.
- Choose a Stretch mode.
- Press Play and verify timing by ear.
The setting is stored on the audio region. Two regions using the same source file can have different Follow project tempo settings, stretch modes, offsets, fades, clip gain, and loop lengths.
Stretch Modes
| Mode | Best for | Tradeoff |
|---|---|---|
| Default | Mixed loops, full songs, first-pass imports. | Balanced behavior, but not always best for drums or exposed vocals. |
| Beats | Drums, percussion, rhythmic loops, transient-heavy material. | Keeps attacks clearer, but sustained tones can sound choppy at extremes. |
| Tones | Vocals, bass notes, pads, strings, sustained tonal material. | Smoother sustain, but hard transients can smear. |
| Tape | Resampled speed changes where pitch should move with tempo. | Musical for turntable/tape effects, but pitch changes by design. |
Extreme tempo changes can create artifacts in any real-time browser stretch engine. Smaller changes usually sound more natural than large changes.
Realtime and Export
Realtime playback and server-side export use the same project timing choices:
- Tempo-following regions stretch from the original referenced source audio.
- Synced effects use the project tempo.
- The full exported mix includes Track Effects, routing, Master Effects, and Master track-head mute/volume/balance.
- Per-track stems stay source-track based and do not include final Master output controls.
If export sounds different from playback, first check that the project is saved, unlocked, and that all source audio files are available to the server.
Non-Destructive Source Handling
Follow Project Tempo does not overwrite imported or recorded files. Miao stores:
- The original source audio.
- Region start, duration, loop, fade, clip gain, and source offset.
- Source BPM.
- Follow project tempo state.
- Stretch mode.
Turning Follow project tempo off returns the region to normal source-file timing.
Common Mistakes
| Symptom | Likely cause | Fix |
|---|---|---|
| BPM change does not affect an audio region. | Follow project tempo is off for that region. | Select the region and enable it. |
| Region follows tempo but is too fast or too slow. | Source BPM is wrong, often half-time or double-time. | Try half or double the detected value. |
| Drums smear or lose punch. | Stretch mode is not suited to transients. | Try Beats. |
| Vocal or pad has clicks or chopped sustain. | Beat-focused stretching is cutting sustained material. | Try Tones or a smaller tempo change. |
| Pitch changes when BPM changes. | Tape mode is selected. | Use Default, Beats, or Tones if pitch should stay stable. |
| Imported MIDI feels off-grid. | MIDI import policy did not match the file. | Reimport with Use file tempo or Original timing, depending on intent. |