changeset 389:623316d1ece7

compal/iMelody: capturing initial observations
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 31 Mar 2022 20:56:56 +0000
parents b99663e66660
children 37ee46a0dde7
files compal/iMelody
diffstat 1 files changed, 91 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compal/iMelody	Thu Mar 31 20:56:56 2022 +0000
@@ -0,0 +1,91 @@
+The user-accessible ringtone melody composer feature on Mot C1xx phones (tested
+on C139, probably the same on C11x/12x) is based on iMelody, or more precisely,
+a subset of the full iMelody spec.  When you go into the main menu, select
+"Ring Styles", then "My Tones", and then go to edit any of the "Empty Ring"
+entries, you get dropped into a text string entry screen, similar to SMS text
+or phonebook name entry, and the string you get to enter in there is an iMelody
+character string!  Up and down arrow keys bring up a wizard that cycles through
+the 48 notes which Calypso PWT is capable of playing (F4 through E8 in the
+scientific pitch notation, but in iMelody they are called *3f through *7e
+instead), and as this up/down arrow key wizard cycles through the notes and
+plays them, the corresponding iMelody syntax gets inserted into the melody
+string being composed.  But you can also bypass the wizard and enter the melody
+string manually using the numeric keys similarly to standard alphanumeric entry
+screens; when you operate the numeric keys in this melody entry screen, the set
+of symbols available on each numeric key is different from standard text entry,
+instead it's been changed to the set of valid symbols for iMelody.  There is
+also help text accessible from the center key menu, and this help text instructs
+the user on entering notes, octaves, rests, 0-5 duration choices and even '.'
+and ':' duration modifiers in iMelody notation.
+
+Further experimentation shows which iMelody spec features are implemented and
+which ones aren't:
+
+* There is no mechanism to enter overall or initial melody volume akin to the
+  VOLUME: header in IMY files, nor is there any way to enter 'V' characters
+  into the melody string.  Therefore, we have to conclude that this
+  implementation of iMelody omits the notion of adjustable per-note volumes,
+  and probably plays each melody at whatever "global" volume is set for the
+  ringer.
+
+* There is no beats-per-minute setting, instead it appears that this iMelody
+  implementation is fixed at 120 bpm only.  Experimentation shows that '0'
+  duration notes play for about 2 s, '1' duration notes play for about 1 s, and
+  '2' duration (default) notes play for about 0.5 s - and in my reading of the
+  iMelody spec (different from imyplay author's reading), '2' duration notes
+  correspond to "beats" as in bpm.
+
+* There is no "style" setting as in S0, S1 or S2 as given in the iMelody spec.
+  Because my wetware auditory processor is not capable of measuring
+  milliseconds, I don't have any easy way to tell if this C139 iMelody player
+  inserts any short rest or not between adjacent notes, and if it does, whether
+  or not this short rest equals 1/20 of the preceding note, as my reading of
+  the iMelody spec suggests for S0 mode.
+
+* The editor screen allows all 3 duration modifier characters '.', ':' and ';'
+  to be entered.  However, it is not clear if all of these duration options are
+  actually implemented (back to the problem of wetware auditory processing not
+  being able to measure milliseconds), and the help text only mentions '.' and
+  ':' for 1+1/2 and 1+3/4.
+
+* The editor allows entry of characters forming repeat blocks ('(', ')' and
+  '@'), but experimentation shows that these repeat instructions are ignored,
+  with the content of the repeat block played only once.
+
+* There is no way to enter vibrator or LED control instructions, and the
+  phone's built-in ringtones don't exhibit any ring-vibrator synchronization
+  (other than the single "vibe then ring" global mode) or backlight manipulation
+  either.
+
+The remaining questions to be answered are:
+
+* What is the exact tone play duration for every combination of iMelody duration
+  [0-5] and duration modifier as in none or [.:;], and
+
+* How much rest time is automatically inserted between notes, if any.
+
+My (Mother Mychaela's) current thinking is that the only way to answer these
+questions would be to take a suitable-model C1xx phone apart (specifically,
+remove the plastics, but keep all electronics intact and functional) and put an
+oscilloscope probe on some accessible point in the buzzer circuit, with the most
+likely accessible point being on the magnetic buzzer itself.  Looking at the
+photos taken by OBB people, the magnetic buzzer is an SMT component, but its
+solder pads extend out from under the part, hopefully far enough to allow a
+needle-type probe to be applied there, or maybe one can solder a little wire to
+whichever buzzer terminal is the driven one.
+
+If one can put an o'scope probe on the buzzer, the scope would need to be
+configured to trigger at the beginning of buzzer activity, and the time scale
+on the scope would need to be set slow enough to allow a capture lasting perhaps
+as long as 2 s.  The first experiment would be to enter a melody consisting of
+just one note, and use the o'scope to measure the actual millisecond duration
+of the tone sent to the buzzer.  First try different "base" durations from 0 to
+5 in iMelody entry, and confirm that they produce physical tone durations from
+2 s down to 62.5 ms.  Then try adding '.', ':' and ';' duration modifiers in the
+iMelody entry, and see if they do anything.
+
+After this first series of o'scope experiments confirming the duration of
+individual notes, the next series of experiments would be to compose melodies
+of several adjacent notes, preferably with different individual note durations,
+and see how much rest time (if any) is inserted between notes, and how this
+inserted rest time correlates with preceding or following note durations.