Skip to content

youforge-max/LevelTone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LevelTone

Audio spirit-level for Android — tone tracks tilt, bell pings when level. Kotlin/Compose, offline.

🌐 Languages: English · Nederlands · Deutsch · Français · Español · Português · Italiano · Polski · Русский · Українська · Türkçe · Svenska · Dansk · Norsk · Suomi · Čeština · Ελληνικά · Română · Magyar · 日本語 · 한국어 · 简体中文 · 繁體中文 · العربية · עברית · हिन्दी · ไทย · Tiếng Việt · Bahasa Indonesia · فارسی

An audio spirit-level for Android. Lay your phone flat on its back and let your ears do the leveling: a continuous synth tone tracks how far off level the surface is, and a bell ping confirms the moment all four corners are level.

LevelTone icon

Demo (30 s)

Watch the 30-second demo

▶ Watch the 30-second demo — the phone tilts, the bubble drifts to the high edge, then settles green-centered on the target as it comes level.

⚠️ The demo has no audio. Android screen recording can't capture an app's generated sound, so the video is silent. On a real phone you'd hear the tone rise to a steady pitch and the bell ping at level — that's the whole point of the app. See How it works for what you'd be hearing.

How it works

  • Continuous tone — far off level → low pitch with a fast amplitude wobble; as you approach level the pitch rises and the wobble slows; dead level → a high, steady tone (1318 Hz).
  • Level ping — a decaying bell chime fires every time you cross into level, so you don't even need to watch the screen.
  • Direction readout — an on-screen bubble level plus a label (Top edge high, Left side high, … → LEVEL) tells you which way it's tilting.
  • Volume slider, an adjustable pitch slider (transpose the whole tone up to ±1 octave to a range that's easy on your ears), and an optional stereo-pan switch (off by default) that pans the tone left/right with the tilt.

Fully offline — no network, no permissions beyond the motion sensor.

Install (sideload)

LevelTone is not on the Play Store — you sideload it:

  1. Download LevelTone.apk from the latest release.
  2. Open the file. If Android warns, tap Settings → Allow from this source, then confirm Install.
  3. Open the app.

See the User Manual for how to level something by ear.

Good to know

  • Free — no cost, no accounts.
  • Ad-free — no ads, ever. No trackers, no network.
  • No support — this is a hobby app provided as-is, with no guarantee of support or updates. That said, bug reports and pull requests are welcome — open an issue or a PR.

Build

export ANDROID_HOME=~/android-sdk
./gradlew :app:assembleDebug
# -> app/build/outputs/apk/debug/app-debug.apk
  • Kotlin + Jetpack Compose (Material 3, dark)
  • SensorManager TYPE_GRAVITY (falls back to a low-pass–filtered accelerometer)
  • Streaming AudioTrack sine synth with click-free one-pole smoothing
  • minSdk 24 · compileSdk 35 · package eu.cisodiagonal.leveltone

Tilt math

Screen-normal tilt = acos(gz / |g|) (0° = flat). Roll atan2(gx, gz) and pitch atan2(gy, gz) give the left/right and front/back components that drive the bubble and the direction label.

License

MIT

About

Audio spirit-level for Android — tone tracks tilt, bell pings when level. Kotlin/Compose, offline.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors