~s-cecilio/lenmus/v5.1.x

« back to all changes in this revision

Viewing changes to docs/html/changelog.htm

  • Committer: cecilios
  • Date: 2006-03-05 11:33:10 UTC
  • Revision ID: svn-v4:2587a929-2f0e-0410-ae78-fe6f687d5efe:trunk:2
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<html>
 
2
<head>
 
3
<title>LenMus: Log of things done (ChangeLog)</title>
 
4
<!-- RCS-ID: $Id: changelog.htm,v 1.42 2006/03/03 15:01:16 cecilios Exp $ -->
 
5
<link rel="stylesheet" media="all" href="singledoc.css" type="text/css" />
 
6
</head>
 
7
<body>
 
8
 
 
9
<h1><a name="top">Log of things done (ChangeLog)</a></h1>
 
10
 
 
11
<p>Please, note that this page is updated in the website only at the end of each week.
 
12
</p>
 
13
<a href="#Feb06">Feb 06</a>
 
14
| <a href="#Jan06">Jan 06</a> | <a href="#Dec05">Dec 05</a> | <a href="#Nov05">Nov 05</a>
 
15
| <a href="#Oct05">Oct 05</a>| <a href="#Sep05">Sep 05</a>| <a href="#Aug05">Aug 05</a>
 
16
| <a href="#Jul05">Jul 05</a>| <a href="#Jun05">Jun 05</a>| <a href="#May05">May 05</a>
 
17
| <a href="#Apr05">Apr 05</a>| <a href="#Mar05">Mar 05</a>| <a href="#Feb05">Feb 05 to start</a>
 
18
<p>&nbsp;</p>
 
19
 
 
20
<h2><a name="Mar06">March 2006</a></h2>
 
21
<a href="#top">Go to top of document</a>
 
22
<table class="Lista">
 
23
<tr valign="top">
 
24
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
25
    <td class="ListaImpar">Changes<p>
 
26
    </td></tr>
 
27
 
 
28
<tr valign="top">
 
29
    <td class="ListaPar">3-mar-06</td>
 
30
    <td class="ListaPar">
 
31
    Testing version Beta 3.0b0 and improving program robustness:
 
32
    <ul>
 
33
      <li>Bug fixed in Conversion.cpp: note names in upper case letters caused problems in
 
34
       TheoScalesCtrol.</li>
 
35
      <li>Bug fixed in lmTheoScalesCtrol::NewProblem(): type of problem not initialized.</li>
 
36
      <li>Bug fixed in TheoIntervalsCtrol::NewProblem(): note type was upper case and caused
 
37
        problems in parsing.</li>
 
38
    </ul>
 
39
    </td></tr>
 
40
<tr valign="top">
 
41
    <td class="ListaPar">2-mar-06</td>
 
42
    <td class="ListaPar">
 
43
    Testing version Beta 3.0b0 and improving program robustness:
 
44
    <ul>
 
45
      <li>Bug fixed in ScoreCtrolParams and TheoSideReadingCtrolParms: old G syntax improperly
 
46
       detected when triplets.</li>
 
47
      <li>Homogenized html params for control play and control solfa between ScoreCtrol and
 
48
       SideReading Ctrol. lmSideReadingCtrolOptions modified to include play and solfa labels.</li>
 
49
      <li>Bug fixed in SoundManager and VStaff: play a measure did not worked properly.</li>
 
50
      <li>LDPParser: replaced wxASSERT with code to deal with the error,  
 
51
        to avoid program crashes when bad score syntax, in methods AnalyzeNote(),
 
52
        AnalyzeBarline(), AnalyzeClef().</li>
 
53
    </ul>
 
54
    LDP Parser: Added AnalyzeTimeSignature(). Modified AnalyzeMeasure() to use it.
 
55
    </td></tr>
 
56
<tr valign="top">
 
57
    <td class="ListaPar">1-mar-06</td>
 
58
    <td class="ListaPar">
 
59
    Testing version Beta 3.0b0 and improving program robustness:
 
60
    <ul>
 
61
      <li>ScoreCtrolParams: moved from Tag.cpp to a file. Modified to include error 
 
62
        reporting and to avoid crashes when invalid html params. Cleaning code.</li>
 
63
      <li>lmLDPParser: modified method PopNode() to avoid crashes when bad score syntax.
 
64
        Added A5_ExitError state to automata.</li>
 
65
      <li>Documenting: how to write eMusicBooks</li>
 
66
    </ul>
 
67
    </td></tr>
 
68
</table>
 
69
 
 
70
<h2><a name="Feb06">February 2006</a></h2>
 
71
<a href="#top">Go to top of document</a>
 
72
<table class="Lista" ID="Table10">
 
73
<tr valign="top">
 
74
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
75
    <td class="ListaImpar">Changes<p>
 
76
    </td></tr>
 
77
 
 
78
<tr valign="top">
 
79
    <td class="ListaPar">28-feb-06</td>
 
80
    <td class="ListaPar">
 
81
    Testing version Beta 3.0b0:
 
82
    <ul>
 
83
      <li>Bug fixed in TheoSideReadingCtrolParms: key signatures not properly parsed.
 
84
        <ul>
 
85
          <li>TheoSideReadingCtrolParms: modified to include error reporting; member variable
 
86
            m_sParamErrors included.</li> 
 
87
          <li>AuxString.cpp: Global function LDPNameToKey() added.</li>
 
88
          <li>LDPParser: added method ParenthesisMatch()</li>
 
89
        </ul></li>
 
90
    </ul>
 
91
    </td></tr>
 
92
<tr valign="top">
 
93
    <td class="ListaPar">25-feb-06</td>
 
94
    <td class="ListaPar">
 
95
    Testing version Beta 3.0b0:
 
96
    <ul>
 
97
      <li>Bug fixed: in the first run, when no .ini file, the splash hides the MIDI 
 
98
        wizard. SplashFrame: added method TerminateSplash(). TheApp: added cursor
 
99
        busy logic.</li>
 
100
      <li>Default value for toolbar: changed to labels under icon.</li>
 
101
      <li>Bug fixed in DlgCfgReadingSettings: for Notes reading settings variables 
 
102
        for Side reading options where initialized after having destroyed panels not
 
103
        used in notes reading options.</li>
 
104
    </ul>
 
105
    </td></tr>
 
106
<tr valign="top">
 
107
    <td class="ListaPar">23-feb-06</td>
 
108
    <td class="ListaPar">
 
109
    <ul>
 
110
      <li>AboutDialog: added credits for icons. Memory leaks detected and fixed.</li>
 
111
      <li>MainFrame: added conditional compilation statment to define wxID_NEW and wx_ID_OPEN 
 
112
        in debug version.</li>
 
113
      <li>Copyright year updated to 2006 in all files.</li>
 
114
    </ul>
 
115
    </td></tr>
 
116
<tr valign="top">
 
117
    <td class="ListaPar">21-feb-06</td>
 
118
    <td class="ListaPar">
 
119
    Implementation of DlgCfgScoreReading dialog finished for Side reading options except
 
120
    fragments tab options, that requiere to finish DlgPatternEditor.
 
121
    DlgCfgScoreReading Side reading options is
 
122
    not necessary for 3.0 release as single side reading exercises will be replaced by
 
123
    side reading exercises in each lesson. The 'new' single side reading exercise will
 
124
    requiere to have a fragments editor:
 
125
    <ul>
 
126
      <li>DlgCfgScoreReading: Time signatures selection implemented and tested. 
 
127
        ScoreConstrains: Load / save time signature settings implemented and tested.</li>
 
128
      <li>DlgCfgScoreReading: Key signatures selection implemented and tested. 
 
129
        ScoreConstrains: Load / save key signature settings implemented and tested.</li>
 
130
      <li>Bug fixed in lmTheoSideReadingCtrolParms::AnalyzeKeys() causing improper
 
131
        setings when html param value=all</li>
 
132
    </ul>
 
133
      Bug fixed in TheoKeySignCtrol: in reverse problem (ask for number of accidentals)
 
134
       the link 'show solution' did nothing.
 
135
    </td></tr>
 
136
<tr valign="top">
 
137
    <td class="ListaPar">17-feb-06</td>
 
138
    <td class="ListaPar">
 
139
    <ul>
 
140
      <li>DlgCfgScoreRedaing dialog finished for Notes reading options. Default
 
141
       settings now taken from html param tags.</li>
 
142
      <li>Some cleaning to prepare beta release:
 
143
        <ul>
 
144
        <li>lmSplash: removed informative text field.</li>
 
145
        <li>lmMainFrame: disabled all menu/toolbar related to unfinished features (notation
 
146
        editor, open/import LDP scores and MusicXML scores).</li>
 
147
        </ul></li>
 
148
      <li>Starting implementation of DlgCfgScoreReading dialog for Side reading options.</li>
 
149
    </ul>
 
150
    </td></tr>
 
151
<tr valign="top">
 
152
    <td class="ListaPar">15-feb-06</td>
 
153
    <td class="ListaPar">
 
154
    Continue implementation of DlgCfgScoreRedaing dialog, Notes reading options:
 
155
    <ul>
 
156
      <li>lmTheoSideReadingCtrolParams: modified method CreateHtmlCell() in include
 
157
        constrains verification.</li>
 
158
      <li>lmScoreConstrains: coded methods SaveSettings(), Verify().</li>
 
159
    </ul>
 
160
    The implementation of default settings, based on html params, is more difficult than
 
161
    expected. This will require some thinking.
 
162
    </td></tr>
 
163
<tr valign="top">
 
164
    <td class="ListaPar">14-feb-06</td>
 
165
    <td class="ListaPar">
 
166
    Continue implementation of DlgCfgScoreRedaing dialog, Notes reading options:
 
167
    <ul>
 
168
      <li>lmScoreConstrains: added methods SetMaxNote() and SetMinNote(). Removed
 
169
        methods and variables related to lesson/level.</li>
 
170
    </ul>
 
171
    </td></tr>
 
172
<tr valign="top">
 
173
    <td class="ListaPar">13-feb-06</td>
 
174
    <td class="ListaPar">
 
175
    Removing cboMode and chkMetronome from lmTheoSideReadingCtrol:
 
176
    <ul>
 
177
      <li>Remove related variables and methods from lmTheoSideReadingCtrolParms,
 
178
        lmSideReadingCtrolOptions and lmTheoSideReadingCtrol</li>
 
179
      <li>Notes reading exercise added to single exercises book</li>
 
180
    </ul>
 
181
    Coding missing parts to acknowledge min and max pitch params and
 
182
    max interval in Composer5.
 
183
    <ul>
 
184
      <li>Fixed bug in lmTheoSideReadingCtrolParms::AnalyzeClef() causing bad
 
185
        minPitch and maxPitch settings</li>
 
186
      <li>Detected coherence problem: missing upper/lower case in 'normalized'
 
187
        LDP elements. Old normalization was upper case; new normalization is
 
188
        lower case; now some methods expect lower case and others upper case.
 
189
        Reviewed all methods dealing with LDP and source code.</li>
 
190
    </ul>
 
191
    DataBase object removed. No longer needed.
 
192
    <p>Starting to rebuild DlgCfgScoreRedaing dialog.</p>
 
193
    </td></tr>
 
194
<tr valign="top">
 
195
    <td class="ListaPar">12-feb-06</td>
 
196
    <td class="ListaPar">
 
197
    Analyzing parameters for lmTheoSideReadingCtrol to finish this control. Implemented
 
198
    params &quot;control_settings&quot; and &quot;control cboMode&quot;. After some
 
199
    considerations I think cboMode is not necessary: it is a heritage from old lenmus
 
200
    architecture (based on independent exercises) and the need to reuse an VB Forms for
 
201
    different exercises. Now this is not necessary and is not in line with
 
202
    current architecture. Studying how to finally leave this.
 
203
    </td></tr>
 
204
<tr valign="top">
 
205
    <td class="ListaPar">11-feb-06</td>
 
206
    <td class="ListaPar">
 
207
    Migrated lesson 206 to test ternary rhythms. Testing and debugging composer algorithm:
 
208
    <ul>
 
209
      <li>Fixed bug in LDPNoteTypeToDuration()</li>
 
210
      <li>Composer5: Added methods CreateNoteRest(), CreateRest() and CreateFinalMeasure()</li>
 
211
      <li>Fixed bug in lmNoteRest::AddMidiEvents() causing bad MIDI event generation in tied notes.
 
212
       Method IsTiedToPrev() added to Note.h</li>
 
213
      <li>Fixed bug in lmScoreCtrol::Play() causing metronome settings not being taken into account.</li>
 
214
    </ul>
 
215
    </td></tr>
 
216
<tr valign="top">
 
217
    <td class="ListaPar">9-feb-06</td>
 
218
    <td class="ListaPar">
 
219
    Improving composer algorithm to optimize segment insertion:
 
220
    <ul>
 
221
      <li>Score.h: added enum ENotesDuration</li>
 
222
      <li>Composer5: added methods AddSegment() and CreateNote(). Testing.</li>
 
223
    </ul>
 
224
    </td></tr>
 
225
<tr valign="top">
 
226
    <td class="ListaPar">8-feb-06</td>
 
227
    <td class="ListaPar">
 
228
    Continue implementation of new composer algorithm:
 
229
    <ul>
 
230
      <li>ScoreConstrains: finishing classes for segments and reviewed code for fragaments</li>
 
231
      <li>Composer5: implement the new algorithm. Starting testing.</li>
 
232
    </ul>
 
233
    </td></tr>
 
234
<tr valign="top">
 
235
    <td class="ListaPar">7-feb-06</td>
 
236
    <td class="ListaPar">
 
237
    Starting implementation of new composer algorithm:
 
238
    <ul>
 
239
      <li>AuxString: added methods SrcSplitPattern(), SrcGetPatternDuracion()</li>
 
240
      <li>ScoreConstrains: implementing classes for segments</li>
 
241
    </ul>
 
242
    </td></tr>
 
243
<tr valign="top">
 
244
    <td class="ListaPar">6-feb-06</td>
 
245
    <td class="ListaPar">
 
246
    Review and document algorithm for composer object. Design a new algorithm to take
 
247
    into account beat alignment and barline aligment constrains. 
 
248
    </td></tr>
 
249
<tr valign="top">
 
250
    <td class="ListaPar">5-feb-06</td>
 
251
    <td class="ListaPar">
 
252
    <ul>
 
253
      <li>Continue implementation of DlgPatternEditor.</li>
 
254
      <li>Looking for bugs in Composer5.</li>
 
255
    </ul>
 
256
    </td></tr>
 
257
<tr valign="top">
 
258
    <td class="ListaPar">3-feb-06</td>
 
259
    <td class="ListaPar">
 
260
    <ul>
 
261
      <li>Reviewed and modified documentation in mainpage of doxygen documentation and 
 
262
        related pages.</li>
 
263
      <li>Reviewing and documenting params for html ScoreCtrol and SideReadingCtrol, in order
 
264
        to finish the implementation and fixing anything related to this before 
 
265
        finishing the conversion of old level 2 side reading book and starting the conversion
 
266
        of other books.</li>
 
267
    </ul>
 
268
    </td></tr>
 
269
<tr valign="top">
 
270
    <td class="ListaPar">2-feb-06</td>
 
271
    <td class="ListaPar">
 
272
    Implementation of metronome check box for SideReadingCtrol:
 
273
    <ul>
 
274
      <li>Reviewing and documenting how metronome works. As metronome implementation is
 
275
      different from LenMus 2.0 version, now it is more user intuitive and everything is
 
276
      controlled from the main toolbar metronome settings. Therefore the metronome check
 
277
      box is no longer needed in SideReadingControl.</li>
 
278
      <li>lmTheoSideReadingCtrolParms: removed code to deal with param 'control metronome'</li>
 
279
    </ul>
 
280
    Reviewing and documenting params for html ScoreCtrol and SideReadingCtrol, in order
 
281
    to finish the implementation and fixing anything related to this before 
 
282
    finishing the conversion of old level 2 side reading book and starting the conversion
 
283
    of other books.
 
284
    </td></tr>
 
285
<tr valign="top">
 
286
    <td class="ListaPar">1-feb-06</td>
 
287
    <td class="ListaPar">
 
288
    'Go back to theory' link implemented and operative:
 
289
    <ul>
 
290
      <li>lmSideReadingCtrolOptions: added variables fGoBackLink and sGoBackURL.
 
291
        Added method SetGoBackURL()</li>
 
292
      <li>lmTheoSideReadingCtrolParms: added param 'control_go_back'</li>
 
293
      <li>lmTheoSideReadingCtrol: layout revised to reduce unused space.
 
294
        Added optional link "Go back to theory". Method OnGoBackButton() implemented</li>
 
295
    </ul>
 
296
    </td></tr>
 
297
</table>
 
298
 
 
299
<h2><a name="Jan06">January 2006</a></h2>
 
300
<a href="#top">Go to top of document</a>
 
301
<table class="Lista" ID="Table1">
 
302
<tr valign="top">
 
303
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
304
    <td class="ListaImpar">Changes<p>
 
305
    </td></tr>
 
306
<tr valign="top">
 
307
    <td class="ListaPar">31-jan-06</td>
 
308
    <td class="ListaPar">
 
309
          Implementing a method to jump to a sideReading dialog customized for the needs
 
310
          of a lesson:
 
311
    <ul>
 
312
      <li>Successful tests using internal links.</li>
 
313
      <li>lmHtmlWindow::OnLinkClicked() modified to include a new internal link type: LenMusEmbedded.</li>
 
314
      <li>Test example now operative.</li>
 
315
    </ul>
 
316
    Now studying how to implement the link 'Go back to theory'
 
317
    </td></tr>
 
318
<tr valign="top">
 
319
    <td class="ListaPar">30-jan-06</td>
 
320
    <td class="ListaPar">
 
321
      DlgPatternEditor implementation suspended. Preparing level 2 score side reading
 
322
      exercises:
 
323
      <ul>
 
324
        <li>Starting conversion of old level 2 side reading book. Splitted into
 
325
        pages. Tags changed. Reviewing score control.</li>
 
326
        <li>lmScoreCtrolOptions: added flag fMusicBorder to control border around music.
 
327
        Added option &lt;param name="music_border" value="0 | 1" &gt; to 
 
328
              lmScoreCtrolParams::AddParam() (in Tags.cpp)</li>
 
329
              <li>Adjusted the positioning and margins of ScoreCtrol. Test example now 
 
330
              operative.</li>
 
331
      </ul>
 
332
      Embbeding a SideReadingCtrol in side reading books is not a good solution as normally
 
333
            there are two or more exercises associated to a lesson. So, as in version 2 behaviour,
 
334
            it is necessary to jump to a sideReading dialog customized
 
335
            according exercises needs; and this dialog must have a "return to theory" link.
 
336
            Starting to think about the best way to implement this.
 
337
    </td></tr>
 
338
<tr valign="top">
 
339
    <td class="ListaPar">26-jan-06</td>
 
340
    <td class="ListaPar">
 
341
      For free Side Reading exercises, the user must be able to set up the rhythmic patterns
 
342
      she/he would like to practise. In the previous version this was implemented by choosing
 
343
      patterns from a graphical list. The problem is that list grew too much. For this new version
 
344
      I will implement a rhythmic patterns editor, so the user can easliy enter the patterns
 
345
      to practise.<br /><br />
 
346
      Implementing DlgPatternEditor. Provisionally invoked from debug menu.
 
347
    </td></tr>
 
348
<tr valign="top">
 
349
    <td class="ListaPar">25-jan-06</td>
 
350
    <td class="ListaPar">
 
351
      <ul>
 
352
        <li>TheoIntervalsConstrains:
 
353
        <ul>
 
354
          <li>Implementation of load/save settings finished.</li>
 
355
          <li>Internationalization of button headings and labels.</li>
 
356
          <li>Layout reviewed to reduce page height so that it now fits in display (1024x768)</li>
 
357
        </ul></li>
 
358
        <li>TheoScalesCtrol: width of score sub-control enlarged: the scale did not fit when an 
 
359
        accidental in each note.</li>
 
360
        <li>Starting to review ScoreReading settings</li>
 
361
      </ul>
 
362
    </td></tr>
 
363
<tr valign="top">
 
364
    <td class="ListaPar">23-jan-06</td>
 
365
    <td class="ListaPar">
 
366
      <ul>
 
367
        <li>Implementation of DlgCfgTheoIntervals finished.</li>
 
368
        <li>Implementing TheoIntervalsConstrains load/save settings.</li>
 
369
      </ul>
 
370
    </td></tr>
 
371
<tr valign="top">
 
372
    <td class="ListaPar">20-jan-06</td>
 
373
    <td class="ListaPar">
 
374
      <ul>
 
375
        <li>Implementation of EarIntervalsConstrains load/save settings finished.
 
376
          The key name included as a parameter in lmEarIntvalConstrains constructor</li>
 
377
        <li>Methods FirstNoteEqual() and SetFirstNoteEqual() added to 
 
378
          EarIntvalConstrains.</li>
 
379
        <li>Implementation of settings for Ear compare exercises finised.</li>
 
380
        <li>Theo Intervals configuration: link "settings" created. Created XML layout for
 
381
          DlgCfgTheoIntervals. Created the .cpp and h files. Dialog linked to program.
 
382
          Now working in the implementation of DlgCfgTheoIntervals.</li>
 
383
      </ul>
 
384
    </td></tr>
 
385
<tr valign="top">
 
386
    <td class="ListaPar">19-jan-06</td>
 
387
    <td class="ListaPar">
 
388
      <ul>
 
389
        <li>Name of global constants defined in score.h changed from XXXXXX to lmXXXXXXX.</li>
 
390
        <li>Implementation of DlgCfgEarIntervals finished.</li>
 
391
        <li>Starting implementation of EarIntervalsConstrains load/save settings.</li>
 
392
        <li>Implementation of settings for Ear Interval exercises finised.</li>
 
393
      </ul>
 
394
    </td></tr>
 
395
<tr valign="top">
 
396
    <td class="ListaPar">18-jan-06</td>
 
397
    <td class="ListaPar">
 
398
      <ul>
 
399
        <li>Continue implementation of DlgCfgEarIntervals.</li>
 
400
      </ul>
 
401
    </td></tr>
 
402
<tr valign="top">
 
403
    <td class="ListaPar">17-jan-06</td>
 
404
    <td class="ListaPar">
 
405
      <ul>
 
406
        <li>Link 'Reset counters' hidden in EarCompareIntvCtrol, EarIntervalsCtrol,
 
407
          TheoIntervalsCtrol and TheoKeySignCtrol. The link is usseles until 
 
408
          answer counters implemented.</li>
 
409
        <li>EarIntervalsCtrol: Width of answer buttons reduced to 100px</li>
 
410
        <li>Continue implementation of DlgCfgEarIntervals.</li>
 
411
      </ul>
 
412
    </td></tr>
 
413
<tr valign="top">
 
414
    <td class="ListaPar">16-jan-06</td>
 
415
    <td class="ListaPar">
 
416
      <ul>
 
417
        <li>Icon names standard finished. Icons renamed.</li>
 
418
        <li>TextBookController:
 
419
        <ul>
 
420
          <li>Toolbar re-created when toolbar settings changed. Methods CreateMyToolBar()
 
421
            and UpdateToolbarsLayout()</li>
 
422
          <li>Button names shown/hiden according toolbar options settings.</li>
 
423
          <li>Initial state of toolbar button 'Index' (TextBookController) now synchronized
 
424
            to real state shown. It always started pressed.</li>
 
425
        </ul></li>
 
426
        <li>toolbar option &quot;icon size: large&quot; disabled in 3.0 version as large icons set
 
427
        is not yet created.</li>
 
428
      </ul>
 
429
    </td></tr>
 
430
<tr valign="top">
 
431
    <td class="ListaPar">2-jan-06</td>
 
432
    <td class="ListaPar">
 
433
      <ul>
 
434
        <li>LangOptionsPanel changed to use XML resources.</li>
 
435
        <li>Created icons for all options. Size 24x24 finally choosen.</li>
 
436
        <li>All options panels reviewed to include title and icon.</li>
 
437
        <li>ColorsOptPanel removed from current version (commented out in OptionsDlg) as
 
438
        is not yet operative.</li>
 
439
      </ul>
 
440
    </td></tr>
 
441
</table>
 
442
 
 
443
<h2><a name="Dec05">December 2005</a></h2>
 
444
<a href="#top">Go to top of document</a>
 
445
<table class="Lista">
 
446
<tr valign="top">
 
447
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
448
    <td class="ListaImpar">Changes<p>
 
449
    </td></tr>
 
450
<tr valign="top">
 
451
    <td class="ListaPar">26-dec-05 </td>
 
452
    <td class="ListaPar">
 
453
      <ul>
 
454
        <li>Class IntervalConstrains removed. It is better not to integrate configuration options
 
455
        for ear exercises and theory exercises as the requirements are different. For example,
 
456
        in ear exercises key signature is importants but for theory exercises it is better to
 
457
        choose if accidentals and double accidentals are allowed.</li>
 
458
        <li>EarIntervalsControl: settings link added. DlgCfgEarIntervals invoked.</li> 
 
459
        <li>Filling details in DlgCfgEarIntervals: veto tab change if errors in current
 
460
        tab data. Solving how to show errors. Implementing all this for notes range.</li>
 
461
      </ul> 
 
462
    </td></tr>
 
463
<tr valign="top">
 
464
    <td class="ListaPar">23-dec-05 </td>
 
465
    <td class="ListaPar">
 
466
      Studying how to integrate interval exercises options (ear and theory).
 
467
      Class IntervalConstrains created. 
 
468
    </td></tr>
 
469
<tr valign="top">
 
470
    <td class="ListaPar">22-dec-05 </td>
 
471
    <td class="ListaPar">
 
472
      Integration DlgCfgEarIntervals into the program
 
473
      <ul>
 
474
        <li>TheoIntervalsControl: settings link added. DlgCfgEarIntervals invoked.</li> 
 
475
        <li>AuxString: Added global method LoadCboBoxWithNoteNames().</li>
 
476
        <li>Note: added global method GetNoteNamePhysicists().</li>
 
477
      </ul>
 
478
    </td></tr>
 
479
<tr valign="top">
 
480
    <td class="ListaPar">21-dec-05 </td>
 
481
    <td class="ListaPar">
 
482
      <ul>
 
483
        <li>Comment out all wxLogMessages left by.</li>
 
484
        <li>Create DlgCfgEarIntervals dialog.</li>
 
485
      </ul>
 
486
    </td></tr>
 
487
<tr valign="top">
 
488
    <td class="ListaPar">20-dec-05 </td>
 
489
    <td class="ListaPar">
 
490
      Tracing memory leaks. Problem not solved. It happends when the ScoreAuxCtrol
 
491
      is resized. It is something as consecuence of invoking score->Draw() but I
 
492
      could not continue. Problem marked as pending.
 
493
    </td></tr>
 
494
<tr valign="top">
 
495
    <td class="ListaPar">19-dec-05 </td>
 
496
    <td class="ListaPar">
 
497
      <ul>
 
498
        <li>Fixed bug affecting lmScoreAuxCtrol: it does not resize the score when
 
499
        the window is resized.
 
500
          <ul>
 
501
            <li>TheoSideReadingCtrol: Added Expand option to score sizer.</li>
 
502
            <li>lmPaper: setting flag m_fRedraw in method SetPageSize().
 
503
            Method Prepare() now re-creates the bitmaps also if paper size has changed.</li>
 
504
            </ul>
 
505
            The problem is now solved but now I have memory leaks!!
 
506
           </li>
 
507
        <li>DlgCfgScoreReading: starting with personal options.</li>
 
508
      </ul>
 
509
    </td></tr>
 
510
<tr valign="top">
 
511
    <td class="ListaPar">16-dec-05 </td>
 
512
    <td class="ListaPar">
 
513
      <ul>
 
514
        <li>Menu bar: added incons for MSW and GTK+ builds (MAC does not support this).</li>
 
515
        <li>Fixed bug: Help/Content menu item now syncronized with OpenHelp toolbar button
 
516
         and with help controller display status.</li>
 
517
        <li>Fixed hand cursor in UrlAuxCtrol. It was modified by wxWidgets 2.6.2</li>
 
518
      </ul>
 
519
    </td></tr>
 
520
<tr valign="top">
 
521
    <td class="ListaPar">15-dec-05 </td>
 
522
    <td class="ListaPar">
 
523
      <ul>
 
524
        <li>Toolbar: added options button. Fixed tool tips and tool types.</li>
 
525
        <li>NavigationToolbar: test to move out this toolbar from TextBookController.</li>
 
526
      </ul>
 
527
    </td></tr>
 
528
<tr valign="top">
 
529
    <td class="ListaPar">13-dec-05 </td>
 
530
    <td class="ListaPar">
 
531
      <ul>
 
532
        <li>Test to use wxIFM to implement draggable & dockable toolbars.</li>
 
533
      </ul>
 
534
    </td></tr>
 
535
<tr valign="top">
 
536
    <td class="ListaPar">12-dec-05 </td>
 
537
    <td class="ListaPar">
 
538
      <ul>
 
539
        <li>Upgrade to wxWidgets 2.6.2.</li>
 
540
        <li>Finding alternatives to implement draggable & dockable toolbars.</li>
 
541
      </ul>
 
542
    </td></tr>
 
543
<tr valign="top">
 
544
    <td class="ListaPar">10-dec-05 </td>
 
545
    <td class="ListaPar">
 
546
      <ul>
 
547
        <li>Splash: test to insert a text field for informational messages.</li>
 
548
        <li>TheApp: controlling ellapsed time since splash shown and not finishing
 
549
          app. initialization until the splash minimum display time is ellapsed.</li>
 
550
        <li>NavigationToolbar: test to move out this toolbar from TextBookController.</li>
 
551
      </ul>
 
552
    </td></tr>
 
553
<tr valign="top">
 
554
    <td class="ListaPar">9-dec-05 </td>
 
555
    <td class="ListaPar">
 
556
      <ul>
 
557
        <li>OptionsDlg: returning to creating the dialog programatically, not by XML resources.
 
558
          This dialog is very simple and if I use
 
559
          XML I have problems with the panels, so better not to spend more time with this.</li>
 
560
        <li>ToolbarsOptPanel implemented with XML resources and operative.</li>
 
561
        <li>lmMainFrame: added method UpdateToolbarsLayout() to update
 
562
          toolbars inmediately after user changing the options.</li>
 
563
      </ul>
 
564
    </td></tr>
 
565
<tr valign="top">
 
566
    <td class="ListaPar">8-dec-05 </td>
 
567
    <td class="ListaPar">
 
568
      Looking for icons. Designing and adapting. Preparing icons in png format.
 
569
    </td></tr>
 
570
<tr valign="top">
 
571
    <td class="ListaPar">7-dec-05 </td>
 
572
    <td class="ListaPar">
 
573
      Including new icons
 
574
      <ul>
 
575
        <li>Replacing BMP format. Bitmaps removed from .rc file</li>
 
576
        <li>lmArProvider modified to support PNG format and to allow for different icon sizes.</li>
 
577
        <li>lmPaths modified to include &quot;images&quot; folder.</li>
 
578
        <li>Change in TheoScalesCtrol to shift scale depending on clef.</li>
 
579
        <li>TextBookFrame: method AddToolbarButtons() modified to include a parameter for
 
580
        icon sizes. Method Create() now sets the size according to user preferences.</li>
 
581
        <li>OptionsDlg: starting changes to: 1) use lmArtProvider; 2) to use XML resources to
 
582
          create the dialog and the panels; and 3) to include Toolbars preferences.</li>
 
583
      </ul>
 
584
    </td></tr>
 
585
<tr valign="top">
 
586
    <td class="ListaPar">6-dec-05 </td>
 
587
    <td class="ListaPar">
 
588
      Looking for icons. Designing and adapting. Preparing icons in png format.
 
589
    </td></tr>
 
590
<tr valign="top">
 
591
    <td class="ListaPar">5-dec-05 </td>
 
592
    <td class="ListaPar">
 
593
      Preparing a shaped splash image with shadows and testing it. Minor changes to
 
594
      support a shaped image in TheApp.cpp
 
595
    </td></tr>
 
596
<tr valign="top">
 
597
    <td class="ListaPar">2-dec-05 </td>
 
598
    <td class="ListaPar">
 
599
      Code fixed in lmKeySignature::SetKeySignature() that caused a bug in score exercises.
 
600
    </td></tr>
 
601
<tr valign="top">
 
602
    <td class="ListaPar">1-dec-05 </td>
 
603
    <td class="ListaPar">
 
604
      Reviewing the update of menu and toolbar status to use UpdateUI events:
 
605
      <ul>
 
606
        <li>SetOpenBookButton() changed. Event handler OnOpenBookUI() added.</li>
 
607
        <li>SetOpenHelpButton() changed. Event handler OnOpenHelpUI() added.</li>
 
608
      </ul>
 
609
    </td></tr>
 
610
</table>
 
611
 
 
612
<h2><a name="Nov05">November 2005</a></h2>
 
613
<a href="#top">Go to top of document</a>
 
614
<table class="Lista">
 
615
<tr valign="top">
 
616
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
617
    <td class="ListaImpar">Changes<p>
 
618
    </td></tr>
 
619
<tr valign="top">
 
620
    <td class="ListaPar">30-nov-05 </td>
 
621
    <td class="ListaPar">
 
622
      Reestructuring main menu: Adding &quot;View toolbars&quot; and &quot;View status bar&quot;
 
623
      menu items and their implementation:
 
624
      <ul>
 
625
        <li>RecreateToolbar() method renamed to CreateMyToolBar(). Method DeleteToolBar() added.
 
626
          Event handler OnToolbarUI() added.</li>
 
627
        <li>Methods CreateMyStatusBar() and DeleteStatusBar() added.
 
628
          Event handler OnStatusbarUI() added.</li>
 
629
        <li>Problems detected with SetOpenBookButton() and UpdateMenuAndToolbar(); commented
 
630
          out and starting to review and re-structure this.</li>
 
631
      </ul>
 
632
    </td></tr>
 
633
<tr valign="top">
 
634
    <td class="ListaPar">29-nov-05 </td>
 
635
    <td class="ListaPar">
 
636
      <ul>
 
637
        <li>Reviewing all to systematically use lmArtProvider. The main changes are
 
638
          in MainFrame::CreateMyToolBar().</li>
 
639
        <li>Application icon added. Some icons in BookController replaced</li>
 
640
        <li>Tests to customize TextBookController toolbar.</li>
 
641
      </ul>
 
642
    </td></tr>
 
643
<tr valign="top">
 
644
    <td class="ListaPar">28-nov-05 </td>
 
645
    <td class="ListaPar">
 
646
      <ul>
 
647
        <li>A shaped splash window implemented:
 
648
          <ul>
 
649
          <li>Class lmSplashFrame created and implemented.</li>
 
650
          <li>TheApp.cpp modified to show the splash.</li>
 
651
          </ul></li>
 
652
        <li>Starting the implementation of lmArProvider to centralize all icons and bitmaps
 
653
          management and to override standard wxWidgets icons when desired</li>
 
654
      </ul>
 
655
    </td></tr>
 
656
<tr valign="top">
 
657
    <td class="ListaPar">24-nov-05 </td>
 
658
    <td class="ListaPar">
 
659
      Fixing things to prepare 3.0 alpha 1 release.
 
660
        <ul>
 
661
        <li>Previous day solution to problem detected for including links to other book
 
662
          not working fine: new problems found. A provisional solution implemented but,
 
663
          probably, i will have to code my own text book controlling.</li>
 
664
        <li>With this I close alpha 1 release.</li>
 
665
        </ul>
 
666
    </td></tr>
 
667
<tr valign="top">
 
668
    <td class="ListaPar">23-nov-05 </td>
 
669
    <td class="ListaPar">
 
670
      Fixing things to prepare 3.0 alpha 1 release.
 
671
        <ul>
 
672
        <li>Open &quot;Introduction&quot; book at program start.</li>
 
673
        <li>Starting to prepare alpha release books. Problem detected to jump from one
 
674
          book to another. Solutions analyzed and, finally, one programmed.</li>
 
675
        <li>For development, books will be organized into folders, one folder per book.
 
676
          lmMainFrame::InitializeBooks() modified to search for books in subfolders when
 
677
          a development version detected.</li>
 
678
        </ul>
 
679
    </td></tr>
 
680
<tr valign="top">
 
681
    <td class="ListaPar">22-nov-05 </td>
 
682
    <td class="ListaPar">
 
683
      Fixing things to prepare 3.0 alpha 1 release.
 
684
        <ul>
 
685
        <li>Menu and ToolBar: Buttons 'open book' and 'open help' synchronized with menu items.
 
686
          Toggle status synchronized with real display status even when the help/book window
 
687
          is directly closed. Need to create class lmHelpController, derived from
 
688
          wxHtmlHelpController, to override virtual member OnQuit() so that the application
 
689
          gets informed if the help window is directly closed.</li>
 
690
        <li>Update the menu items and toolbar controls when the active window changes,
 
691
          so that they are correctly enabled/disabled:
 
692
          <ul>
 
693
          <li>lmMainFrame::UpdateMenuAndToolbar() implemented. Method EnableMenuItems() removed.</li>
 
694
          <li>OnActivate() handler implemented in lmEditFrame and lmTextBookFrame.</li>
 
695
          <li>TheApp:CreateProjectFrame(): remove creation of menubar for MDIChild frames.</li>
 
696
          </ul></li>
 
697
        </ul>
 
698
    </td></tr>
 
699
<tr valign="top">
 
700
    <td class="ListaPar">21-nov-05 </td>
 
701
    <td class="ListaPar">
 
702
      Fixing things to prepare 3.0 alpha 1 release.
 
703
        <ul>
 
704
        <li>Tuples: LDPParser modified to deal with tuplets in G elements. LDP manual modified
 
705
          to document G and T notations.</li>
 
706
        <li>Menu: item revised. Removed those not used by now.</li>
 
707
        <li>Toolbar: removed zoom combo. Fixed 'open book' button so that it closes the book
 
708
          opened when toggled.</li>
 
709
        </ul>
 
710
    </td></tr>
 
711
<tr valign="top">
 
712
    <td class="ListaPar">17-nov-05 </td>
 
713
    <td class="ListaPar">
 
714
        <ul>
 
715
        <li>Ties: algorithm to compute the tie reviewed and completed to take into account
 
716
          tie splitting when the tie continues in next system. Algorithm documented.</li>
 
717
        <li>Notes: information about glyphs now stored in a table. Selecction rectangles, heighs and
 
718
          offsets fixed. Bad selection rectangle information caused mispositionement of ties in
 
719
          eight notes.</li>
 
720
        <li>Starting to study the problem of splitting a beam when the group continues
 
721
          in the next system. Some test code for this added to Beam.cpp.</li>
 
722
        </ul>
 
723
    </td></tr>
 
724
<tr valign="top">
 
725
    <td class="ListaPar">16-nov-05 </td>
 
726
    <td class="ListaPar">
 
727
        <ul>
 
728
        <li>Beamed groups: algorithm to compute and trim stem heights in groups reviewed,
 
729
          completed and documented. Height of stems now ok.</li>
 
730
        <li>Bug fixed in LDPParser::AnalyzeNote() that caused reversed eBeamForward and
 
731
          eBeamBackward lines.</li>
 
732
        </ul>
 
733
    </td></tr>
 
734
<tr valign="top">
 
735
    <td class="ListaPar">15-nov-05 </td>
 
736
    <td class="ListaPar">
 
737
        Continue with support for lessons in html:
 
738
        <ul>
 
739
        <li>Parameters for lmTheoSideReadingCtrol parsed.</li>
 
740
        <li>lmScoreConstrains modified to include
 
741
          the fragments table, as well as all necessary parameters.</li>
 
742
        <li>Composer5 modified to use only lmScoreConstrains.</li>
 
743
        <li>DataBase not used now.</li>
 
744
        <li>Definition of a book for score reading, level 5, started to test usability.</li>
 
745
        </ul>
 
746
        Now I will continue finishing things in score renderization:
 
747
        <ul>
 
748
        <li>LDP parser: added check and error message for bad syntax in groups.</li>
 
749
        <li>Starting with trimming stems in groups.</li>
 
750
        </ul>
 
751
    </td></tr>
 
752
<tr valign="top">
 
753
    <td class="ListaPar">14-nov-05 </td>
 
754
    <td class="ListaPar">
 
755
        <ul>
 
756
        <li>Continue with DataBase and Composer5. Bug fixed in
 
757
        lmLessonsTimeSignsTable::LoadTimeSignsForLesson(): the first entry was
 
758
        ignored.</li>
 
759
        <li>After some analysis, it is not clear if DataBase and ini files are necessary.
 
760
    In the eMusicBooks system, each level/lesson is defined by an html object tag, with
 
761
    all the necessary parameters. Therefore, DataBase and ini files seem to be unnecessary
 
762
    and seem to be a relic inherited from version 1.
 
763
    So, I will stop further DataBase migration (although it is practically finished, except
 
764
    the key signatures table) and I will continue defining lessons in html:
 
765
        <ul>
 
766
        <li>Defined param structure for lmTheoSideReadingCtrol. Now implementing param analysis.</li>
 
767
        <li>Class lmSideReadingCtrolOptions defined.</li>
 
768
        </ul></li>
 
769
        </ul>
 
770
    </td></tr>
 
771
<tr valign="top">
 
772
    <td class="ListaPar">11-nov-05 </td>
 
773
    <td class="ListaPar">
 
774
        DlgCfgScoreReading finished (level and lesson settings). ScoreConfig settings
 
775
        saved to user profile. Starting loading Lessons-Clefs-Scope table in lmDataBase and using
 
776
        it in Composer5:
 
777
        <ul>
 
778
        <li>AuxString: added global function LDPNameToClef(). LDPParser::AnalyzeClef() modified
 
779
          to use this function.</li>
 
780
        <li>lmClefConstrain modified to include pitch scope.</li>
 
781
        </ul>
 
782
    </td></tr>
 
783
<tr valign="top">
 
784
    <td class="ListaPar">10-nov-05 </td>
 
785
    <td class="ListaPar">
 
786
        DlgCfgScoreReading combo box and spin control loaded with database strings.
 
787
        ScoreConfig settings now modified in previous dialog.
 
788
    </td></tr>
 
789
<tr valign="top">
 
790
    <td class="ListaPar">8-nov-05 </td>
 
791
    <td class="ListaPar">
 
792
        Coding dialog to set options for score generation (DlgCfgScoreReading):
 
793
        <ul>
 
794
        <li>Designing and maintaining dialogs by hand is too time consuming. So I have
 
795
        looked for alternatives and I am going to study and test the XRC system. I will do
 
796
        the tests with this new dialog lmDlgCfgScoreReading.</li>
 
797
        <li>XRC is great! I will use it with all the dialogs. Folder xrc created and DialogBlocks
 
798
        project created. Skeletons for MidiWizard and OptionsDlg created.</li>
 
799
        <li>lmPaths: added GetXrcPath().</li>
 
800
        <li>DataBase: Classes lmLessonNamesTable and lmLessonNamesEntry created. Lesson names
 
801
        loaded from ini file.</li>
 
802
        <li>Testing initializing DlgCfgScoreReading combo box with lesson names.</li>
 
803
        </ul>
 
804
    </td></tr>
 
805
<tr valign="top">
 
806
    <td class="ListaPar">4-nov-05 </td>
 
807
    <td class="ListaPar">
 
808
        Debug and finish Lessons-Fragments. Starting to add the 'settings' link to
 
809
        Score side reading exercise.
 
810
        <ul>
 
811
        <li>lmPatternsTable: fix bugs in SelectRows() and ChooseRandom().</li>
 
812
        <li>TheoSideReading: added combo to choose mode setting and link to open settings dialog.</li>
 
813
        <li>Starting skeleton for settings dialog (DlgCfgScoreReading).</li>
 
814
        </ul>
 
815
    </td></tr>
 
816
<tr valign="top">
 
817
    <td class="ListaPar">3-nov-05 </td>
 
818
    <td class="ListaPar">
 
819
        Load of lmDataBase Lessons-TimeSignatures table finished. Continue with procedures to load
 
820
        other tables: starting with Lessons-Fragments. Modifying Composer5 to use level and
 
821
        lesson settings. Finishing lmScoreConstrains to add all constrains needed; methods in
 
822
        lmDataBase to set up constrains according to level and lesson. Other:
 
823
        <ul>
 
824
        <li>lmPaths: added GetDataPath().</li>
 
825
        <li>lmTimeSignMask replaced by lmTimeSignConstrains object. Related methods moved
 
826
            to lmTimeSignConstrains object.</li>
 
827
        </ul>
 
828
    </td></tr>
 
829
<tr valign="top">
 
830
    <td class="ListaPar">2-nov-05 </td>
 
831
    <td class="ListaPar">
 
832
        Memory leaks problem solved. Now loading lmDataBase from .ini initialization files.
 
833
        Starting with Lessons-TimeSignatures.
 
834
        <ul>
 
835
        <li>lmDataBase: Table Lessons-TimeSignatures defined.</li>
 
836
        <li>lmDataBase: methods LoadFile() and AnalyzeLine() skeleton coded. Testing.</li>
 
837
        <li>lmPaths: added GetBinPath().</li>
 
838
        </ul>
 
839
    </td></tr>
 
840
</table>
 
841
 
 
842
<h2><a name="Oct05">October 2005</a></h2>
 
843
<a href="#top">Go to top of document</a>
 
844
<table class="Lista">
 
845
<tr valign="top">
 
846
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
847
    <td class="ListaImpar">Changes<p>
 
848
    </td></tr>
 
849
<tr valign="top">
 
850
    <td class="ListaPar">31-oct-05 </td>
 
851
    <td class="ListaPar">
 
852
        Continue writting the LDP language reference manual and prepare upload to website.
 
853
    </td></tr>
 
854
<tr valign="top">
 
855
    <td class="ListaPar">28-oct-05 </td>
 
856
    <td class="ListaPar">
 
857
        Continue writting the LDP language reference manual.
 
858
    </td></tr>
 
859
<tr valign="top">
 
860
    <td class="ListaPar">27-oct-05 </td>
 
861
    <td class="ListaPar">
 
862
        Documentation: Starting to translate and review the LDP language reference manual.
 
863
    </td></tr>
 
864
<tr valign="top">
 
865
    <td class="ListaPar">25-oct-05 </td>
 
866
    <td class="ListaPar">
 
867
        Continue with Composer5 and related methods to generate scores:
 
868
        <ul>
 
869
        <li>Composer algorithm modified not to use beats but measure duration.</li>
 
870
        <li>TimeSignature.cpp/.h: Added global functions GetBeatDuration() and GetMeasureDuration()</li>
 
871
        <li>NoteRest.cpp/.h: Added global functions LDPNoteTypeToEnumNoteType(),
 
872
            LDPNoteTypeToDuration() and NoteTypeToDuration().</li>
 
873
        <li>LDPParser.cpp: Modified GetDefaultDuration() to use NoteTypeToDuration()</li>
 
874
        <li>AuxString.cpp/.h: Added global function SrcGetElementDuracion()</li>
 
875
        <li>DataBase.cpp/.h: Modified to be a singleton. Methods to deal with beats changed to
 
876
            deal with elements.</li>
 
877
        <li>Changes operative but memory leaks detected.</li>
 
878
        </ul>
 
879
    </td></tr>
 
880
<tr valign="top">
 
881
    <td class="ListaPar">24-oct-05 </td>
 
882
    <td class="ListaPar">
 
883
        Continue with Composer5 and related methods to generate scores:
 
884
        <ul>
 
885
        <li>Problems to aling patterns detected. The algorithm is reviewed and version 2 was
 
886
            programmed and tested. Instead of generating beats, the main loop is now
 
887
            organised around generating measures. Now patterns can be musical phrases
 
888
            instead of full measures. If necessary, patterns may contain barline alignment
 
889
            information. </li>
 
890
        <li>All this programmed and tested. Result OK</li>
 
891
        </ul>
 
892
    </td></tr>
 
893
<tr valign="top">
 
894
    <td class="ListaPar">21-oct-05 </td>
 
895
    <td class="ListaPar">
 
896
        Continue with Composer5 and related methods to generate scores:
 
897
        <ul>
 
898
        <li>skeleton of lmDataBase operative. Data not loaded from files but inline for testing. </li>
 
899
        <li>InstantiateNotes(). Bug fixed: need to repeat the same note if the previous one
 
900
            is tied.</li>
 
901
        <li>lmLDPParser::AnalyzeRest(): Fix code to include a rest inside a beamed group.</li>
 
902
        <li>Method GetNumBeatsFromTimeSignType() moved from lmConverter to lmTimeSignature.
 
903
            Added two new global functions: GetBeatTypeFromTimeSignType() and
 
904
            GetNumUnitsFromTimeSignType().</li>
 
905
        <li>Added constructor to lmTimeSignature from enum time sig.; added method to VStaff
 
906
            using this constructor.</li>
 
907
        <li>Defined a 'Time signature mask' for selecting patterns; this also solves the
 
908
            problem of pattern alignment. Method lmDataBase::CreateMask() added.</li>
 
909
        </ul>
 
910
    </td></tr>
 
911
<tr valign="top">
 
912
    <td class="ListaPar">20-oct-05 </td>
 
913
    <td class="ListaPar">
 
914
        Composer5: First version, including note generation and instantation is ready. Starting tests.
 
915
        <ul>
 
916
        <li>lmConverter: added methods MidiPitchToPitch(), MidiPitchToLDPName() and PitchToLDPName().</li>
 
917
        <li>AuxString.cpp: method LDPDataToPitch() modified to take MIDI data into account.</li>
 
918
        <li>lmLDPParser: method AnalyzeNote() modified to take MIDI data into account.</li>
 
919
        <li>Starting to code DataBase.cpp/.h  </li>
 
920
        </ul>
 
921
    </td></tr>
 
922
<tr valign="top">
 
923
    <td class="ListaPar">19-oct-05 </td>
 
924
    <td class="ListaPar">
 
925
        <ul>
 
926
        <li>lmNote: fixed bug: dots not drawn because dot radius was in physical units.</li>
 
927
        <li>lmLDPParser: changed some messages that where in Spanish</li>
 
928
        <li>lmConverter: Method GetNumBeatsFromTimeSignType() added</li>
 
929
        <li>lmComposer5: Algorithm revised and documented. Main loop coded and tested. Pattern generation tested. Note generation and instantiation not finished; problems with instantiation: LDP parser bug?  </li>
 
930
        </ul>
 
931
    </td></tr>
 
932
<tr valign="top">
 
933
    <td class="ListaPar">18-oct-05 </td>
 
934
    <td class="ListaPar">
 
935
        <ul>
 
936
        <li>Added class lmComposer4 with a dummy methods to generate measures.</li>
 
937
        <li>lmGenerator: method GeneratePitch() renamed as GenerateRandomPitch().</li>
 
938
        <li>LDPParser: Modified method AnalyzeNote() to generate automatically the beaming information.</li>
 
939
        <li>Added methods GetNoteType() and SetBeamType() to lmNoteRest</li>
 
940
        <li>Beams drawing algorithm revised to deal with forward and backward hooks. Methods DrawBeamSegment() and ComputeYPosOfSegment() added.  </li>
 
941
        </ul>
 
942
    </td></tr>
 
943
<tr valign="top">
 
944
    <td class="ListaPar">17-oct-05 </td>
 
945
    <td class="ListaPar">
 
946
        <ul>
 
947
        <li>Adding Score Side Reading exercises; created clases lmTheoSideReadingCtrol and lmTheoSideReadingCtrolParms. Abstract class lmObjectParams extracted from Tags.cpp and moved to a file. Created class lmScoreConstrains.</li>
 
948
        <li>score.h : add range (lmMIN_TIME_SIGN, lmMAX_TIME_SIGN) in ETimeSignature</li>
 
949
        <li>Constrains.cpp, .h : add lmTimeSignConstrains</li>
 
950
        <li>Generator.cpp,.h : add GenerateTimeSign() and RandomTimeSignature()</li>
 
951
        <li>Added lmComposer abstract class and lmComposer5 class (just skeleton; returns a constant score for testing).  </li>
 
952
        </ul>
 
953
    </td></tr>
 
954
<tr valign="top">
 
955
    <td class="ListaPar">13-oct-05 </td>
 
956
    <td class="ListaPar">
 
957
        <ul>
 
958
        <li>TheApp:
 
959
    <ul>
 
960
    <li>Fix bug: changed calls to CreateMenuBar to honor gReleaseVersion flag</li>
 
961
    <li>gReleaseVersion value automatically set from preprocesor constant</li>
 
962
    </ul></li>
 
963
        <li>Paths: temp folder chaged to 'temp'</li>
 
964
        <li>Fix bug: create temp folder if it does not exist. Otherwise the program will fail when the user tries to open an eMusicBook</li>
 
965
        <li>EarIntervalsCtrol: Do not start automatically the first exercise. Wait for user clicking on 'new problem'</li>
 
966
        </ul>
 
967
    </td></tr>
 
968
<tr valign="top">
 
969
    <td class="ListaPar">4-oct-05 </td>
 
970
    <td class="ListaPar">
 
971
        <ul>
 
972
        <li>Fix bug in SoundManager: need to sort events also by measure number and to give priority to VISUAL_OFF events</li>
 
973
    </ul>
 
974
    </td></tr>
 
975
</table>
 
976
 
 
977
<h2><a name="Sep05">September 2005</a></h2>
 
978
<a href="#top">Go to top of document</a>
 
979
<table class="Lista" ID="Table2">
 
980
<tr valign="top">
 
981
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
982
    <td class="ListaImpar">Changes<p>
 
983
    </td></tr>
 
984
<tr valign="top">
 
985
    <td class="ListaPar">29-sep-05 </td>
 
986
    <td class="ListaPar">
 
987
        <ul>
 
988
        <li>Key Signatures exercise finished</li>
 
989
        <li>Dialog AboutDialog revised and finished.  </li>
 
990
        </ul>
 
991
    </td></tr>
 
992
<tr valign="top">
 
993
    <td class="ListaPar">22-sep-05 </td>
 
994
    <td class="ListaPar">
 
995
        <ul>
 
996
        <li>Ear compare intervals exercise finished</li>
 
997
        <li>Implementation of Key Signatures exercise started:
 
998
            <ul>
 
999
            <li>Classes lmTheoKeySignCtrol and lmTheoKeySignConstrains created</li>
 
1000
            <li>html objects of type="Application/LenMusTheoKeySignatures" implemented</li>
 
1001
            <li>Class lmTheoKeySignCtrolParms created  </li>
 
1002
            </ul></li>
 
1003
        </ul>
 
1004
    </td></tr>
 
1005
<tr valign="top">
 
1006
    <td class="ListaPar">21-sep-05 </td>
 
1007
    <td class="ListaPar">
 
1008
        <ul>
 
1009
        <li>lmVStaffAddKeySignature: alternative constructor from EKySignature added.</li>
 
1010
        <li>lmKeySignature: new global method KeySignatureToNumFifths()</li>
 
1011
        <li>Class lmEarIntervalsConstrains finished.</li>
 
1012
        <li>Class lmRandomGenerator: method FlipCoin() added</li>
 
1013
        <li>Class lmEarCompareIntvCtrol added and implemented. Ready for final tests</li>
 
1014
        <li>html objects of type="Application/LenMusEarCompareIntervals" included</li>
 
1015
        <li>Class lmEarCompareIntvCtrolParms created  </li>
 
1016
        </ul>
 
1017
    </td></tr>
 
1018
<tr valign="top">
 
1019
    <td class="ListaPar">20-sep-05 </td>
 
1020
    <td class="ListaPar">
 
1021
        <ul>
 
1022
        <li>lmEarIntervalsConstrains implemented. Initialization with default values is done in constructor.</li>
 
1023
        <li>lmScoreAuxCtrol: added methods SetScore() and HideScore()</li>
 
1024
        <li>lmIntervals: Added constructor to build interval from constrains</li>
 
1025
        <li>lmConverter: added PitchToMidiPitch() and IsNaturalNote() methods</li>
 
1026
        <li>Class lmEarIntervalsConstrains now operative. It is necessary to do final tests and cleaning.  </li>
 
1027
        </ul>
 
1028
    </td></tr>
 
1029
<tr valign="top">
 
1030
    <td class="ListaPar">19-sep-05 </td>
 
1031
    <td class="ListaPar">
 
1032
        <ul>
 
1033
        <li>Class lmEarIntervalsConstrains created</li>
 
1034
        <li>Firts test of an embeded object of class LenMusEarIntervals  </li>
 
1035
        </ul>
 
1036
    </td></tr>
 
1037
<tr valign="top">
 
1038
    <td class="ListaPar">16-sep-05 </td>
 
1039
    <td class="ListaPar">
 
1040
        <ul>
 
1041
        <li>lmSoundmanager. Bug solved: when playing measure #1 it plays one extra note.</li>
 
1042
        <li>lmTheoIntervalsCtrol: added debugging methods and links.</li>
 
1043
        <li>lmEarIntervalsCtrol: starting its coding  </li>
 
1044
        </ul>
 
1045
    </td></tr>
 
1046
<tr valign="top">
 
1047
    <td class="ListaPar">15-sep-05 </td>
 
1048
    <td class="ListaPar">
 
1049
        <ul>
 
1050
        <li>Review lmScoreCtrol to finish it</li>
 
1051
        <li>lmSoundmanager: added PlayMeasure.</li>
 
1052
        <li>lmSoundManager: measures table computed.</li>
 
1053
        <li>lmUrlAuxCtrol: modified to have two labels: normal and alternative</li>
 
1054
        <li>lmScoreAuxCtrol: method PlayMeasure added.</li>
 
1055
        <li>lmScore: method PlayMeasure added.  </li>
 
1056
        </ul>
 
1057
    </td></tr>
 
1058
<tr valign="top">
 
1059
    <td class="ListaPar">13-sep-05 </td>
 
1060
    <td class="ListaPar">Included standard documentation headers for all files. Changed Tabs by Spaces. Class names changed to have prefix "lm". Prefix "sb" replaced by "lm"..
 
1061
    </td></tr>
 
1062
<tr valign="top">
 
1063
    <td class="ListaPar">12-sep-05 </td>
 
1064
    <td class="ListaPar">Included standard documentation headers for all files in folder src..
 
1065
    </td></tr>
 
1066
<tr valign="top">
 
1067
    <td class="ListaPar">7-sep-05 </td>
 
1068
    <td class="ListaPar">Starting to organise documentation and to document for Doxygen. Tags TODO and LIMITS replaced. Change log reformatted..
 
1069
    </td></tr>
 
1070
</table>
 
1071
 
 
1072
<h2><a name="Aug05">August 2005</a></h2>
 
1073
<a href="#top">Go to top of document</a>
 
1074
<table class="Lista" ID="Table3">
 
1075
<tr valign="top">
 
1076
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
1077
    <td class="ListaImpar">Changes<p>
 
1078
    </td></tr>
 
1079
<tr valign="top">
 
1080
    <td class="ListaPar">25-aug-05</td>
 
1081
    <td class="ListaPar">Dialog to show error messages while importing a MusicXML file. Menu: include debug option to select trace masks to use.
 
1082
    </td></tr>
 
1083
<tr valign="top">
 
1084
    <td class="ListaPar">24-aug-05</td>
 
1085
    <td class="ListaPar">Class lmLogger created. File DataError.log is now created and all XML parsing errors are written there.
 
1086
    </td></tr>
 
1087
<tr valign="top">
 
1088
    <td class="ListaPar">22-aug-05</td>
 
1089
    <td class="ListaPar">Crash on closing application solved. It happend only when the scoreview is closed before closing the application and was causes because the OnClose event of the frame (lmEditFrame) does not propagate to the base class wxDocMDIChildFrame.
 
1090
    </td></tr>
 
1091
<tr valign="top">
 
1092
    <td class="ListaPar">21-aug-05</td>
 
1093
    <td class="ListaPar">Created event End_Of_Play. A handler implemented in TheoScoreCtrol in order to change "Sop playing" label.
 
1094
    </td></tr>
 
1095
<tr valign="top">
 
1096
    <td class="ListaPar">20-aug-05</td>
 
1097
    <td class="ListaPar">Implemented OnScoreHighlight event handler for lmScoreAuxCtrol. lmMetronome object created. The mess of all global metronome flags eliminated. Play /Stop play labels toggled in TheoScaleCtrol class and operative.
 
1098
    </td></tr>
 
1099
<tr valign="top">
 
1100
    <td class="ListaPar">19-aug-05</td>
 
1101
    <td class="ListaPar">Methods for Play, Stop and Pause implemented (Resume is implicit in Play if the score is paused). SounManagerThread properly terminated. Implemented list of highlighted scoreobjs so that all highlight is removed if score playing is stopped.
 
1102
    </td></tr>
 
1103
<tr valign="top">
 
1104
    <td class="ListaPar">18-aug-05</td>
 
1105
    <td class="ListaPar">PlaySegment running ok in an independent thread. Visual highlihgt implemented with an event. Parameter pPaper removed from Play() methods as paper's DC (created in scoreView::Play() ) is not valid and then pPaper is useless. Now DC is created in the scoreView::OnScoreHiglight method.
 
1106
    </td></tr>
 
1107
<tr valign="top">
 
1108
    <td class="ListaPar">15-aug-05</td>
 
1109
    <td class="ListaPar">PlayScore parameters review finished. lmTheoScalesCtrol and lmTheoIntervalsCtrol now play at a proper metronome rate. Global flag g_ShowDebugLinks created. Debug methods added to lmScoreAuxCtrol. lmTheoScalesCtrol and lmTheoIntervalsCtrol modified to use debug links. lmSoundManagerPlaySegment() moved to an independent thread. This works to solve the main GUI freezing problem but now a new problem appears: it is not possible to update the GUI from the thread. wxWidgets documentation (topic: Topic overview: Multithreading overview) explains that this).
 
1110
    </td></tr>
 
1111
<tr valign="top">
 
1112
    <td class="ListaPar">14-aug-05</td>
 
1113
    <td class="ListaPar">Problem solved: Play score does not play first instrument (only plays the piano part) in score "Four reveries sample"). The problem was in lmSoundManagerAppend due to a bad usage of Alloc(). Also a time rounding problem was solved. Parameters added to method lmScoreAuxCtrolPlayScore. Starting to review parameters in several places and Play() mehods.
 
1114
    </td></tr>
 
1115
<tr valign="top">
 
1116
    <td class="ListaPar">13-aug-05</td>
 
1117
    <td class="ListaPar">lmPaths and the program, in general, assumed unix or win32 syntax rules for paths and file names. This will no work for other platforms with diferent syntax rules. So I have reviewed the program and change code to use object wxFileName for dealing with path and file names. Some colors changed to use lmColors.
 
1118
    </td></tr>
 
1119
<tr valign="top">
 
1120
    <td class="ListaPar">12-aug-05</td>
 
1121
    <td class="ListaPar">Paths revised to use lmPaths object.
 
1122
    </td></tr>
 
1123
<tr valign="top">
 
1124
    <td class="ListaPar">11-aug-05</td>
 
1125
    <td class="ListaPar">Options dialog operative. Language selection operative.
 
1126
    </td></tr>
 
1127
<tr valign="top">
 
1128
    <td class="ListaPar">10-aug-05</td>
 
1129
    <td class="ListaPar">Continue with options dialog. Module lmPaths and Languages created. lmColors moved to folder globals. Internationalization tested and working.
 
1130
    </td></tr>
 
1131
<tr valign="top">
 
1132
    <td class="ListaPar">09-aug-05</td>
 
1133
    <td class="ListaPar">Basic architecture for options selection created (classes lmOptionsDlg, lmOptionsPanel and two test panels: lmLangOptionsPanel &amp; lmColorsOptPanel) and tested.
 
1134
    </td></tr>
 
1135
<tr valign="top">
 
1136
    <td class="ListaPar">08-aug-05</td>
 
1137
    <td class="ListaPar">Starting with Internationalization (set up language and catalogs; choose language in first run).
 
1138
    </td></tr>
 
1139
</table>
 
1140
 
 
1141
<h2><a name="Jul05">July 2005</a></h2>
 
1142
<a href="#top">Go to top of document</a>
 
1143
<table class="Lista" ID="Table4">
 
1144
<tr valign="top">
 
1145
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
1146
    <td class="ListaImpar">Changes<p>
 
1147
    </td></tr>
 
1148
<tr valign="top">
 
1149
    <td class="ListaPar">26-jul-05</td>
 
1150
    <td class="ListaPar">Minor changes to adapt to chages in wxMidi interface.
 
1151
    </td></tr>
 
1152
<tr valign="top">
 
1153
    <td class="ListaPar">15-jul-05</td>
 
1154
    <td class="ListaPar">lmTheoScalesCtrol finished and operative.
 
1155
    </td></tr>
 
1156
<tr valign="top">
 
1157
    <td class="ListaPar">14-jul-05</td>
 
1158
    <td class="ListaPar">Tags.cpp modified to implement dealing with &lt;object type="Application/LenMusTheoScales"&gt;. Object lmColors created to avoid inconsistencies, and to allow user preferences.
 
1159
    </td></tr>
 
1160
<tr valign="top">
 
1161
    <td class="ListaPar">13-jul-05</td>
 
1162
    <td class="ListaPar">Visual higlight when playing a score implemented. This will have to be reviewed when multipage scores. Skeleton for lmTheoScalesCtrol and lmTheoScalesConstrains created.
 
1163
    </td></tr>
 
1164
<tr valign="top">
 
1165
    <td class="ListaPar">12-jul-05</td>
 
1166
    <td class="ListaPar">lmMidiWizard: added metronome settings.
 
1167
    </td></tr>
 
1168
<tr valign="top">
 
1169
    <td class="ListaPar">11-jul-05</td>
 
1170
    <td class="ListaPar">Simultaneous metronome operative. I have modified lmVStaffComputeMidiEvents() to generate RithmChange MIDI events, implement this in lmSoundManager and, finally, complete metronome in lmSoundManager.
 
1171
    </td></tr>
 
1172
<tr valign="top">
 
1173
    <td class="ListaPar">08-jul-05</td>
 
1174
    <td class="ListaPar">Independent metronome operative. Current settings saved and restored when the program is exit / run again.
 
1175
    </td></tr>
 
1176
<tr valign="top">
 
1177
    <td class="ListaPar">07-jul-05</td>
 
1178
    <td class="ListaPar">Adding metronome controls to toolbar.
 
1179
    </td></tr>
 
1180
<tr valign="top">
 
1181
    <td class="ListaPar">06-jul-05</td>
 
1182
    <td class="ListaPar">Created lmScoreCtrol with all needed sub-controls. Recoded Tags.cpp to use it. Created lmScoreCtrolOptions class.
 
1183
    </td></tr>
 
1184
<tr valign="top">
 
1185
    <td class="ListaPar">05-jul-05</td>
 
1186
    <td class="ListaPar">Analyzed and defined the structure of URLs to implement commands for embedded objects in a book (but probably will not be used as consequence of following item). Analyzed the architecture for html ctrols.
 
1187
    </td></tr>
 
1188
<tr valign="top">
 
1189
    <td class="ListaPar">04-jul-05</td>
 
1190
    <td class="ListaPar">Notes duration issue (different if LDP than if XML) fixed.
 
1191
    </td></tr>
 
1192
<tr valign="top">
 
1193
    <td class="ListaPar">01-jul-05</td>
 
1194
    <td class="ListaPar">Play score operative. Clarifying notes duration issue: different if LDP than if XML !.
 
1195
    </td></tr>
 
1196
</table>
 
1197
 
 
1198
<h2><a name="Jun05">June 2005</a></h2>
 
1199
<a href="#top">Go to top of document</a>
 
1200
<table class="Lista" ID="Table5">
 
1201
<tr valign="top">
 
1202
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
1203
    <td class="ListaImpar">Changes<p>
 
1204
    </td></tr>
 
1205
<tr valign="top">
 
1206
    <td class="ListaPar">30-jun-05</td>
 
1207
    <td class="ListaPar">All menu creation code centralized in lmTheApp:CreateMenuBar(). Midi events table created and displayed. Working on playing it.
 
1208
    </td></tr>
 
1209
<tr valign="top">
 
1210
    <td class="ListaPar">29-jun-05</td>
 
1211
    <td class="ListaPar">MIDI wizard: old configuration restored if wizard is cancelled. Migrating methods to create the table of MIDI events.
 
1212
    </td></tr>
 
1213
<tr valign="top">
 
1214
    <td class="ListaPar">28-jun-05</td>
 
1215
    <td class="ListaPar">MIDI wizard: combo boxes are now initialized to leave selected current Midi configuration, as saved in lenmus.in.
 
1216
    </td></tr>
 
1217
<tr valign="top">
 
1218
    <td class="ListaPar">24-jun-05</td>
 
1219
    <td class="ListaPar">Created object lmMidiManager to centralize all MIDI configuration and managemen.
 
1220
    </td></tr>
 
1221
<tr valign="top">
 
1222
    <td class="ListaPar">23-jun-05</td>
 
1223
    <td class="ListaPar">Created object sbPreferences. Midi wizard pages 1 and 2 finished and tested.
 
1224
    </td></tr>
 
1225
<tr valign="top">
 
1226
    <td class="ListaPar">22-jun-05</td>
 
1227
    <td class="ListaPar">Configuration changed from Unicode to Multibyte. Use of wxMidi tested. Starting with lmMidiWizard. Global MIDI variables created. Testing lmMidiWizard pages 1 and 2.
 
1228
    </td></tr>
 
1229
<tr valign="top">
 
1230
    <td class="ListaPar">07-jun-05</td>
 
1231
    <td class="ListaPar">Context updated in notes and at the start of measures. Starting to play music.
 
1232
    </td></tr>
 
1233
<tr valign="top">
 
1234
    <td class="ListaPar">03-jun-05</td>
 
1235
    <td class="ListaPar">reviewing how pitch information is stored. Fixing things related to pitch.
 
1236
    </td></tr>
 
1237
<tr valign="top">
 
1238
    <td class="ListaPar">02-jun-05</td>
 
1239
    <td class="ListaPar">Context objects created and added to the staff list. Context object assigned to Notes and Rests. All program reviewed to use methods to access the context.
 
1240
    </td></tr>
 
1241
<tr valign="top">
 
1242
    <td class="ListaPar">01-jun-05</td>
 
1243
    <td class="ListaPar">lmScoreAuxCtrol: methods to adjust scale, margins and staff lenght. Object Context created.
 
1244
    </td></tr>
 
1245
</table>
 
1246
 
 
1247
<h2><a name="May05">May 2005</a></h2>
 
1248
<a href="#top">Go to top of document</a>
 
1249
<table class="Lista" ID="Table6">
 
1250
<tr valign="top">
 
1251
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
1252
    <td class="ListaImpar">Changes<p>
 
1253
    </td></tr>
 
1254
<tr valign="top">
 
1255
    <td class="ListaPar">31-may-05</td>
 
1256
    <td class="ListaPar">TheoIntervals control implemented. Params for configuring lmTheoIntervalsCtrol and Constrains objected implemented. Generator, Conversion and lmInterval classes implemented.
 
1257
    </td></tr>
 
1258
<tr valign="top">
 
1259
    <td class="ListaPar">26-may-05</td>
 
1260
    <td class="ListaPar">memory leaks problem solved. Object lmInterval created.
 
1261
    </td></tr>
 
1262
<tr valign="top">
 
1263
    <td class="ListaPar">25-may-05</td>
 
1264
    <td class="ListaPar">Continue with lmTheoIntervalsCtrol: All links and buttons operative. Methods DisplayMessage() and DisplayScore() added to lmScoreAuxCtrol. Generation of the score (with dummy notes). Now starting the generation of the interval. Memory leaks detected.
 
1265
    </td></tr>
 
1266
<tr valign="top">
 
1267
    <td class="ListaPar">24-may-05</td>
 
1268
    <td class="ListaPar">lmTheoIntervalsCtrol: layout developed. Buttons operative.
 
1269
    </td></tr>
 
1270
<tr valign="top">
 
1271
    <td class="ListaPar">23-may-05</td>
 
1272
    <td class="ListaPar">Experiments to include a Form in the html text. Now implementing the lmTheoIntervalsCtrol class.
 
1273
    </td></tr>
 
1274
<tr valign="top">
 
1275
    <td class="ListaPar">20-may-05</td>
 
1276
    <td class="ListaPar">&lt;param play_control&gt;. Implemented the inclusion of the "Play" control.
 
1277
    </td></tr>
 
1278
<tr valign="top">
 
1279
    <td class="ListaPar">19-may-05</td>
 
1280
    <td class="ListaPar">LDPParser modified to accept parsing from text instead of from file. &lt;object&gt; params type and music parsed. Opertative now
 
1281
        <ul>
 
1282
        <li>include music data inline. Type short</li>
 
1283
        <li>import a MusicXML file. Type XMLFile</li>
 
1284
        <li>import an LDP file. Type LDPFile Parameter width modified to accept percentage. Default set to 100% </li>
 
1285
        </ul>
 
1286
    </td></tr>
 
1287
<tr valign="top">
 
1288
    <td class="ListaPar">18-may-05</td>
 
1289
    <td class="ListaPar">Starting processing of &lt;object&gt;. &lt;param&gt; tag parser architecture implemented.
 
1290
    </td></tr>
 
1291
<tr valign="top">
 
1292
    <td class="ListaPar">17-may-05</td>
 
1293
    <td class="ListaPar">Created a new class lmHtmlWindow, derived from wxHtmlWindow, to have control when a link is clicked. In test mode scan documentation folder and load all books (.hhp files) found Class TextBookForm modified to be MDIChil.
 
1294
    </td></tr>
 
1295
<tr valign="top">
 
1296
    <td class="ListaPar">16-may-05</td>
 
1297
    <td class="ListaPar">Migration to wxWidgets 2.6. Static linking. Created classes lmTextBookController and TextBookForm Investigated how to intercept clicks on link tags (&lt;a&gt;): wxHtmlWindow has a virtual method, named OnLinkClicked(), that is called when user clicks on a cell that corresponds to a hypertext link.
 
1298
    </td></tr>
 
1299
<tr valign="top">
 
1300
    <td class="ListaPar">11-may-05</td>
 
1301
    <td class="ListaPar">Class lmScoreAuxCtrol added with very basic code, just to test that scores can be displayed as part of html pages by using tag &lt;object type="image/LenMusScore"&gt;.
 
1302
    </td></tr>
 
1303
<tr valign="top">
 
1304
    <td class="ListaPar">10-may-05</td>
 
1305
    <td class="ListaPar">Added help content capabilities, based on html help controller. Testing html windows to show music.
 
1306
    </td></tr>
 
1307
<tr valign="top">
 
1308
    <td class="ListaPar">09-may-05</td>
 
1309
    <td class="ListaPar">Problem with ordering of Clef, lmTimeSignature and lmKeySignature in XM solved by re-ordering them at XML parser objects creation. DrawProlog() modified to include Time and Key signatures. Fixed a bug in DrawTimeSignature() and in DrawKeySignature(): they only draw in the first staff; now corrected. lmAccidental object created. Accidentals included in notes.
 
1310
    </td></tr>
 
1311
<tr valign="top">
 
1312
    <td class="ListaPar">06-may-05</td>
 
1313
    <td class="ListaPar">lmKeySignature basic implementation done. Same problem than with lmTimeSignature.
 
1314
    </td></tr>
 
1315
<tr valign="top">
 
1316
    <td class="ListaPar">05-may-05</td>
 
1317
    <td class="ListaPar">lmTimeSignature basic implementation done. Designing a more general method to code time signature information, as a ennumeration is not powerful enough. Modified XML parser XML to accept time signature information. An important problem has been detected with XML. Time signature is treated as an attribute of the measure, not as an object. Therefore, ordering (clef, tonal key, time signature) is not important for XML and there are examples in wich this information is encoded in reversed orders (i.e. time signature, clef). This causes problems as LenMus expects that this objects are defined in right order.
 
1318
    </td></tr>
 
1319
</table>
 
1320
 
 
1321
<h2><a name="Apr05">April 2005</a></h2>
 
1322
<a href="#top">Go to top of document</a>
 
1323
<table class="Lista" ID="Table7">
 
1324
<tr valign="top">
 
1325
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
1326
    <td class="ListaImpar">Changes<p>
 
1327
    </td></tr>
 
1328
<tr valign="top">
 
1329
    <td class="ListaPar">29-apr-05</td>
 
1330
    <td class="ListaPar">Fixed problem with ties when start and end notes have stems in opposite directions.
 
1331
    </td></tr>
 
1332
<tr valign="top">
 
1333
    <td class="ListaPar">28-apr-05</td>
 
1334
    <td class="ListaPar">Ties drawn using Bezier curves. Modification to introduce MakeUp phase.
 
1335
    </td></tr>
 
1336
<tr valign="top">
 
1337
    <td class="ListaPar">27-apr-05</td>
 
1338
    <td class="ListaPar">fixed problem with beamed group tied to previous note.
 
1339
    </td></tr>
 
1340
<tr valign="top">
 
1341
    <td class="ListaPar">26-apr-05</td>
 
1342
    <td class="ListaPar">Fixed several problems with beams:
 
1343
        <ul>
 
1344
        <li>stems up and down in the same beam</li>
 
1345
        <li>only force stems' direction if all stems' type is eDefaultType</li>
 
1346
        <li>beam line too high or too low when chords involved (test score P01). </li>
 
1347
        </ul>
 
1348
    </td></tr>
 
1349
<tr valign="top">
 
1350
    <td class="ListaPar">25-apr-05</td>
 
1351
    <td class="ListaPar">Invocation of lmBeamComputeStems has been moved from lmNoteRestCreateBeam to lmNoteDrawObject and lmRestDrawObject. This has been necesary because the base note of the beam is the one that contains the beaming information. in contradiction with what was assumed, it could not the last note of the beam as for chords, there are still notes to be added. Additiona minor fixes for properly drawing beams in beamed chords across staves.
 
1352
    </td></tr>
 
1353
<tr valign="top">
 
1354
    <td class="ListaPar">21-apr-05</td>
 
1355
    <td class="ListaPar">lmTupletBracket changed to derive from lmSimpleObj instead of lmAuxObj to solve problem of font. Tuplet number now rendered. Beams: dealing with the issue of including Rests in a beam. This forces to move beaming information from lmNote object to lmNoteRest object. And this forces some changes: a new method CreateBeam() and method IsInChord() moved to lmNoteRest as pure virtual. In Beams: all methods changed to deal with NoteRests instead of Notes. In Rests: variable m_yShift and method SetDisplacement() added.
 
1356
    </td></tr>
 
1357
<tr valign="top">
 
1358
    <td class="ListaPar">20-apr-05</td>
 
1359
    <td class="ListaPar">lmTupletBracket drawing implemented. Problem of font to use.
 
1360
    </td></tr>
 
1361
<tr valign="top">
 
1362
    <td class="ListaPar">19-apr-05</td>
 
1363
    <td class="ListaPar">Parameter rDuration included in lmNoteRest constructor (and lmNote and lmRest constructors). Default duration computed in lmLDPParser. Method SetDuration() deleted. All this is to solve a problem with SetDuration(): it is called after the note is stored into the ColStaffObj, but duration is necessary to compute rTimePos. lmXMLParser: parsing notation &lt;tuplet&gt;. Object lmTupletBracket created.
 
1364
    </td></tr>
 
1365
<tr valign="top">
 
1366
    <td class="ListaPar">18-apr-05</td>
 
1367
    <td class="ListaPar">Fixed problem with alignment in lmTimeposTableArrangeStaffobjsByTime(.
 
1368
    </td></tr>
 
1369
<tr valign="top">
 
1370
    <td class="ListaPar">14-apr-05</td>
 
1371
    <td class="ListaPar">Elements &lt;backup&gt; and &lt;forward&gt; implemented. Starting revision of lmFormatter3 to finish it and to fix problems.
 
1372
    </td></tr>
 
1373
<tr valign="top">
 
1374
    <td class="ListaPar">13-apr-05</td>
 
1375
    <td class="ListaPar">Class lmLyric implemented as a derivative from lmNoteRestObj and lmBasicText. Method lmFormatter3RedistributeFreeSpace() migrated.
 
1376
    </td></tr>
 
1377
<tr valign="top">
 
1378
    <td class="ListaPar">08-apr-05</td>
 
1379
    <td class="ListaPar">lmBasicText class implemented. WordsDirective derived from it. Now working on lmLyri.
 
1380
    </td></tr>
 
1381
<tr valign="top">
 
1382
    <td class="ListaPar">07-apr-05</td>
 
1383
    <td class="ListaPar">Clarifying XML 1.0 positioning attributes. Starting the creation of lmLyric class.
 
1384
    </td></tr>
 
1385
<tr valign="top">
 
1386
    <td class="ListaPar">06-apr-05</td>
 
1387
    <td class="ListaPar">Class lmFermata created. Derived from new class lmNoteRestObj. All this added some clarification to the objects hierarchy but not enough. So I will continue with different types of texts. Class lmWordsDirection implemented. lmXMLParser modified to include parse &lt;direction&gt;. Two general parsing methods added: ParsePosition() and ParseFont(). Structures RXMLPositionData and RFontData defined.
 
1388
    </td></tr>
 
1389
<tr valign="top">
 
1390
    <td class="ListaPar">05-apr-05</td>
 
1391
    <td class="ListaPar">lmRest object: sizing and positioning selection rectangles fixed.
 
1392
    </td></tr>
 
1393
<tr valign="top">
 
1394
    <td class="ListaPar">04-apr-05</td>
 
1395
    <td class="ListaPar">lmRest object implemented. Parsing rests implemented in XML and LDP. TODO: sizing and positioning selection rectangles.
 
1396
    </td></tr>
 
1397
<tr valign="top">
 
1398
    <td class="ListaPar">01-apr-05</td>
 
1399
    <td class="ListaPar">lmVStaff::FindSelectableObject() fixed to take into account CompositeObjs. Implementation of lmRest object started. DrawObject() reviewed.
 
1400
    </td></tr>
 
1401
</table>
 
1402
 
 
1403
<h2><a name="Mar05">March 2005</a></h2>
 
1404
<a href="#top">Go to top of document</a>
 
1405
<table class="Lista" ID="Table8">
 
1406
<tr valign="top">
 
1407
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
1408
    <td class="ListaImpar">Changes<p>
 
1409
    </td></tr>
 
1410
<tr valign="top">
 
1411
    <td class="ListaPar">31-mar-05</td>
 
1412
    <td class="ListaPar">Object's model hierarchy refined. Composite StaffObjs created. lmNote as composite object. Selection of Ties implemented and working.
 
1413
    </td></tr>
 
1414
<tr valign="top">
 
1415
    <td class="ListaPar">30-mar-05</td>
 
1416
    <td class="ListaPar">Yesterday's attemp was not good. New model hierarchy created: lmScoreObj -&gt; lmSimpleObj -&gt; lmAuxObj, lmStaffObj. lmVStaff restored as a non derivate class. Working on drawing selRect of Ties and defining the interface of AuxObjs.
 
1417
    </td></tr>
 
1418
<tr valign="top">
 
1419
    <td class="ListaPar">29-mar-05</td>
 
1420
    <td class="ListaPar">Developing the model hierarchy of ScoreObjs. Created the "Composite" pattern. Objects lmScoreObj, lmSimpleObj and lmCompositeObj defined. StaffObjs now are a derivate class from lmSimpleObj. lmVStaff is now derived from lmCompositeObj.
 
1421
    </td></tr>
 
1422
<tr valign="top">
 
1423
    <td class="ListaPar">17-mar-05</td>
 
1424
    <td class="ListaPar">lmFontManager improved to deal with fontNames and other parameters. Global StaffObjs list implemented in lmScore object to store non-directly related StaffObjs. Method for renderization of score titles. lmFormatter3 changed to render titles.
 
1425
    </td></tr>
 
1426
<tr valign="top">
 
1427
    <td class="ListaPar">16-mar-05</td>
 
1428
    <td class="ListaPar">XML parsing: added &lt;stem&gt; tag. Stem info added to lmNote constructor. Added notehead positioning information (m_noteheadRect). Rendering of ties: start and end positions OK. Considering the creation of a more general class lmScoreObj to deal better with non-directly staff related objects. Implementing lmText object to test ideas.
 
1429
    </td></tr>
 
1430
<tr valign="top">
 
1431
    <td class="ListaPar">15-mar-05</td>
 
1432
    <td class="ListaPar">Classes lmArch and lmTie created. lmNote constructor changed to account for absolute pitch (MusicXML) as an alternative to relative pitch (LDP). Methods lmVStaffFindPossibleStartOfTie and lmNoteCanBeTied. Studying how to do the rendering of ties.
 
1433
    </td></tr>
 
1434
<tr valign="top">
 
1435
    <td class="ListaPar">14-mar-05</td>
 
1436
    <td class="ListaPar">Fixed the details for drawing stems and beams for chords and to take beam thickness into account. Finished lmVStaffDrawProlog(). Store current clef while rendering the score.
 
1437
    </td></tr>
 
1438
<tr valign="top">
 
1439
    <td class="ListaPar">11-mar-05</td>
 
1440
    <td class="ListaPar">RenderJustified() is now operative. Starting with modifications to draw stems and beams for chords and to fix beam drawing details..
 
1441
    </td></tr>
 
1442
<tr valign="top">
 
1443
    <td class="ListaPar">10-mar-05</td>
 
1444
    <td class="ListaPar">Finishing Formater3::RenderJustified(): the minimun functionality to start testing. Starting testing and correcting bugs.
 
1445
    </td></tr>
 
1446
<tr valign="top">
 
1447
    <td class="ListaPar">09-mar-05</td>
 
1448
    <td class="ListaPar">Starting with Formater3::RenderJustified(). lmTimeposTable object created. Changes in a lot of places.
 
1449
    </td></tr>
 
1450
<tr valign="top">
 
1451
    <td class="ListaPar">08-mar-05</td>
 
1452
    <td class="ListaPar">Compilation problem with class Chord solved: it seems to be that there is a function named "Chord" defined in WinGDI.h. And this causes a name conflict to the compiler. So Chord class has been renamed as lmChord.
 
1453
    </td></tr>
 
1454
<tr valign="top">
 
1455
    <td class="ListaPar">07-mar-05</td>
 
1456
    <td class="ListaPar">
 
1457
        <ul>
 
1458
        <li>lmXMLParser: added parsing of tags &lt;note&gt;.&lt;staff&gt;, &lt;note&gt;.&lt;chord&gt; and &lt;note&gt;.&lt;beam&gt;.</li>
 
1459
        <li>lmBeam object more or less operative. Need to improve drawing (line thick and spacing).</li>
 
1460
        <li>Starting with chords. Object Chord created. lmNote modified. Trying to compile. Ref.loop between Chord and lmNote as Chord uses a list of notes and lmNote uses Chord. </li>
 
1461
        </ul>
 
1462
    </td></tr>
 
1463
<tr valign="top">
 
1464
    <td class="ListaPar">04-mar-05</td>
 
1465
    <td class="ListaPar">Continue with lmXMLParser: parsing barlines. Starting with beam grouping: lmLDPParser modified to parse G tag; grouping informattion added to lmNote constructor. lmBeam object created. Working on completing it.
 
1466
    </td></tr>
 
1467
<tr valign="top">
 
1468
    <td class="ListaPar">03-mar-05</td>
 
1469
    <td class="ListaPar">Continue with lmXMLParser: parsing notes; parsing measure attributes; parsing clefs.
 
1470
    </td></tr>
 
1471
<tr valign="top">
 
1472
    <td class="ListaPar">02-mar-05</td>
 
1473
    <td class="ListaPar">Continue with lmXMLParser: parsing skeleton defined; parsing operative until ParseMeasure.
 
1474
    </td></tr>
 
1475
<tr valign="top">
 
1476
    <td class="ListaPar">01-mar-05</td>
 
1477
    <td class="ListaPar">lmBarline object finished, including drag image and dragging. Direct call to EndDrag() has been replaced by lmScoreCommand to enable undo/redo operations. Undo/Redo menu commands implemented. Menu "Import" added. Starting the creation of class lmXMLParser for parsing MusicXML.
 
1478
    </td></tr>
 
1479
</table>
 
1480
 
 
1481
<h2><a name="Feb05">February 2005 and begining of project</a></h2>
 
1482
<a href="#top">Go to top of document</a>
 
1483
<table class="Lista" ID="Table9">
 
1484
<tr valign="top">
 
1485
    <td class="ListaImpar">Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 
1486
    <td class="ListaImpar">Changes<p>
 
1487
    </td></tr>
 
1488
<tr valign="top">
 
1489
    <td class="ListaPar">28-feb-05</td>
 
1490
    <td class="ListaPar">lmBarline object operative except drag image and dragging. Storage of StaffObjs into the collection: computation of TimePos. Dump of timepos.
 
1491
    </td></tr>
 
1492
<tr valign="top">
 
1493
    <td class="ListaPar">25-feb-05</td>
 
1494
    <td class="ListaPar">Source code generation methods finished (at current program state). Bars taken into account in lmColStaffObjs. Parsing of barlines added to lmLDPParser. Starting the implementation of lmBarline object. MusicXML source generation skeleton implemented.
 
1495
    </td></tr>
 
1496
<tr valign="top">
 
1497
    <td class="ListaPar">24-feb-05</td>
 
1498
    <td class="ListaPar">Class lmStaffObjIterator created. Program code reviewed to use this class.
 
1499
    </td></tr>
 
1500
<tr valign="top">
 
1501
    <td class="ListaPar">18-feb-05 </td>
 
1502
    <td class="ListaPar">Modification of logical units to microns. Review of all code and documentation. Three options added to debug menu: Dump, Source and XML. Dialog lmDlgDebug created. Starting with lmScore.Dum.
 
1503
    </td></tr>
 
1504
<tr valign="top">
 
1505
    <td class="ListaPar">10-dec-04</td>
 
1506
    <td class="ListaPar">LenMus coding started. No knowledge of wxWidgets so I will not log more entries in this log until a minimum of functionality is achieved.
 
1507
    </td></tr>
 
1508
</table>
 
1509
 
 
1510
 
 
1511
</body>
 
1512
</html>