Tools - Chen Zhao

Welcome to my tools

Well... here are some tools I made for myself, feel free to use!

Current date and time

Unit Converter

Virtual Piano

LilyPond Style Music Editor

Click to unlock audio
Standard Rhythm
Syntax Support

This tool supports LilyPond's notation syntax, including:

  • Single notes and rests (e.g., c4, r4), supporting dots (e.g., c4.).
  • Absolute and relative mode octave switching: In absolute mode, pure letters are in the octave of middle C; `'` represents switching up an octave, and `,` represents switching down an octave. E.g., `g,8. g,16 a,4 g,4 c b,2'
  • Ties and chords (e.g., <c' e' g'>4) and slurs (e.g., c4( d e f)).
  • Tuplet notation (e.g., \tuplet 3/2 { c8 d8 e8 }) indicates playing 3 eighth notes in the time of 2 eighth notes. Also supports specifying duration: \tuplet 3/2 8 { c16 d16 e16 }, which plays three 16th notes with the overall duration of a triplet eighth note.
  • Key signatures, time signatures, tempo commands — e.g., \key d \minor, \time 3/4, \tempo 4 = 100.
  • Dynamic markings: \ppp, \pp, \p, \mp, \mf, \f, \ff, \fff.
  • Articulations: \staccato (short), \accent (emphasis), \tenuto (hold), \arpeggio (arpeggio effect), \fermata (hold), etc.
  • Rhythm control: \swing (swing ratio optional, default 2.0) (swing) and \straight (standard rhythm).
  • Multi-voice notation, e.g., \voiceOne, \voiceTwo, etc.

Tuplet syntax examples:

% Basic tuplet, 3 eighth notes played in 2 eighth note duration
\tuplet 3/2 { c8 d8 e8 } 

% Duration-specific tuplet, 3 sixteenth notes occupy one eighth note duration
\tuplet 3/2 8 { c16 d16 e16 }

% Nested tuplets
\tuplet 5/4 { f8 e f \tuplet 3/2 { e[ f g] } }
      

Swing rhythm example:

\swing
c8 d8 e8 f8 | g8 a8 b8 c'8
\straight
c4 d4 e4 f4
      

Multi-voice example:

\voiceOne
c'4 d'4 e'4 f'4 | g'8 a'8 b'8 c''8 d''4 e''4 |

\voiceTwo
c4 e4 g4 c'4 | e4 g4 c'4 e'4 |
      
Keyboard Shortcuts
  • Alt+Shift+Z: Preview all/Stop Playback
  • Alt+Shift+X: Play from current line/Stop
  • Alt+Shift+C: Play current line only/Stop
  • Alt+Shift+E: Toggle Solo/Ensemble Mode
  • Tab: Autocomplete suggestion (adds accidentals based on key signature)

Braille Writer

Usage (click to expand/collapse)

This writer supports two modes:

  • Braille input mode (default): the textarea blocks normal character insertion and only accepts braille chords plus standard editing actions (copy/cut/paste/delete/arrows/selection/Enter, etc.).
  • Text input mode: behaves exactly like a standard multi-line textarea.

How to toggle:

  • Use Alt + E, or click the toggle button above.
  • The current mode is remembered via Cookie and restored next time.

Braille input (6-dot / 8-dot): all mapped keys pressed during one hold-and-release cycle form one braille character (inserted when the last held key is released). Key mapping:

  • f -> dot 1
  • d -> dot 2
  • s -> dot 3
  • j -> dot 4
  • k -> dot 5
  • l -> dot 6
  • a -> dot 7
  • ; (or :) -> dot 8
  • Space -> Braille blank (U+2800)

Example: hold f + d + j (dots 1, 2, 4) and release all keys to insert U+280B (DOTS-124).

Standard editing actions:

  • Supports Ctrl/Cmd+C copy, Ctrl/Cmd+X cut, Ctrl/Cmd+V paste, undo/redo, arrow navigation, selection, delete, Enter, etc.
  • In braille mode, regular printable keys (except mapped braille keys above) do not insert characters.
  • Esc cancels the current unfinished chord.

Data persistence:

  • Both content and mode are saved in Cookie and restored automatically.
  • For reliability, content is chunked across multiple Cookies (up to roughly tens of KB). For very large text, exporting manually is recommended.

Unicode notes:

  • Braille symbols come from the Unicode Braille Patterns block (U+2800-U+28FF).
  • Each chord maps to a bitmask and inserts: U+2800 + bitmask (dots 1-8 map to the low 8 bits).
  • Space alone inserts Braille blank: U+2800.

Tips:

  • This writer has no style dependency and can be embedded anywhere.
  • Using an English keyboard layout is recommended; both ; and : map to dot 8.

IP Lookup







* chenz.cloud usesIP2Location.io IP geolocation web service.