annotate compal/iMelody @ 408:14302e075f37 default tip

hr-bits: further conditionalize SID-1-diff
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 22 Jul 2024 10:06:38 +0000
parents 623316d1ece7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
389
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 The user-accessible ringtone melody composer feature on Mot C1xx phones (tested
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 on C139, probably the same on C11x/12x) is based on iMelody, or more precisely,
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 a subset of the full iMelody spec. When you go into the main menu, select
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 "Ring Styles", then "My Tones", and then go to edit any of the "Empty Ring"
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 entries, you get dropped into a text string entry screen, similar to SMS text
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 or phonebook name entry, and the string you get to enter in there is an iMelody
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 character string! Up and down arrow keys bring up a wizard that cycles through
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 the 48 notes which Calypso PWT is capable of playing (F4 through E8 in the
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 scientific pitch notation, but in iMelody they are called *3f through *7e
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 instead), and as this up/down arrow key wizard cycles through the notes and
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 plays them, the corresponding iMelody syntax gets inserted into the melody
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 string being composed. But you can also bypass the wizard and enter the melody
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 string manually using the numeric keys similarly to standard alphanumeric entry
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 screens; when you operate the numeric keys in this melody entry screen, the set
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 of symbols available on each numeric key is different from standard text entry,
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 instead it's been changed to the set of valid symbols for iMelody. There is
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 also help text accessible from the center key menu, and this help text instructs
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 the user on entering notes, octaves, rests, 0-5 duration choices and even '.'
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 and ':' duration modifiers in iMelody notation.
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 Further experimentation shows which iMelody spec features are implemented and
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 which ones aren't:
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 * There is no mechanism to enter overall or initial melody volume akin to the
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 VOLUME: header in IMY files, nor is there any way to enter 'V' characters
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 into the melody string. Therefore, we have to conclude that this
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 implementation of iMelody omits the notion of adjustable per-note volumes,
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 and probably plays each melody at whatever "global" volume is set for the
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 ringer.
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 * There is no beats-per-minute setting, instead it appears that this iMelody
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 implementation is fixed at 120 bpm only. Experimentation shows that '0'
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 duration notes play for about 2 s, '1' duration notes play for about 1 s, and
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 '2' duration (default) notes play for about 0.5 s - and in my reading of the
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 iMelody spec (different from imyplay author's reading), '2' duration notes
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 correspond to "beats" as in bpm.
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 * There is no "style" setting as in S0, S1 or S2 as given in the iMelody spec.
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 Because my wetware auditory processor is not capable of measuring
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 milliseconds, I don't have any easy way to tell if this C139 iMelody player
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 inserts any short rest or not between adjacent notes, and if it does, whether
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 or not this short rest equals 1/20 of the preceding note, as my reading of
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 the iMelody spec suggests for S0 mode.
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 * The editor screen allows all 3 duration modifier characters '.', ':' and ';'
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 to be entered. However, it is not clear if all of these duration options are
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 actually implemented (back to the problem of wetware auditory processing not
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 being able to measure milliseconds), and the help text only mentions '.' and
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 ':' for 1+1/2 and 1+3/4.
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 * The editor allows entry of characters forming repeat blocks ('(', ')' and
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 '@'), but experimentation shows that these repeat instructions are ignored,
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 with the content of the repeat block played only once.
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 * There is no way to enter vibrator or LED control instructions, and the
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 phone's built-in ringtones don't exhibit any ring-vibrator synchronization
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 (other than the single "vibe then ring" global mode) or backlight manipulation
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 either.
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 The remaining questions to be answered are:
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 * What is the exact tone play duration for every combination of iMelody duration
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 [0-5] and duration modifier as in none or [.:;], and
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 * How much rest time is automatically inserted between notes, if any.
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 My (Mother Mychaela's) current thinking is that the only way to answer these
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 questions would be to take a suitable-model C1xx phone apart (specifically,
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 remove the plastics, but keep all electronics intact and functional) and put an
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 oscilloscope probe on some accessible point in the buzzer circuit, with the most
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 likely accessible point being on the magnetic buzzer itself. Looking at the
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 photos taken by OBB people, the magnetic buzzer is an SMT component, but its
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 solder pads extend out from under the part, hopefully far enough to allow a
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 needle-type probe to be applied there, or maybe one can solder a little wire to
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 whichever buzzer terminal is the driven one.
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 If one can put an o'scope probe on the buzzer, the scope would need to be
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 configured to trigger at the beginning of buzzer activity, and the time scale
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 on the scope would need to be set slow enough to allow a capture lasting perhaps
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 as long as 2 s. The first experiment would be to enter a melody consisting of
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 just one note, and use the o'scope to measure the actual millisecond duration
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 of the tone sent to the buzzer. First try different "base" durations from 0 to
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 5 in iMelody entry, and confirm that they produce physical tone durations from
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 2 s down to 62.5 ms. Then try adding '.', ':' and ';' duration modifiers in the
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 iMelody entry, and see if they do anything.
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 After this first series of o'scope experiments confirming the duration of
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 individual notes, the next series of experiments would be to compose melodies
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 of several adjacent notes, preferably with different individual note durations,
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 and see how much rest time (if any) is inserted between notes, and how this
623316d1ece7 compal/iMelody: capturing initial observations
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 inserted rest time correlates with preceding or following note durations.