# HG changeset patch # User Mychaela Falconia # Date 1648760216 0 # Node ID 623316d1ece74720aa179c4c41c5979669bc718a # Parent b99663e66660beb8a725f0140f9d9c61986917e2 compal/iMelody: capturing initial observations diff -r b99663e66660 -r 623316d1ece7 compal/iMelody --- /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.