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" />
9
<h1><a name="top">Log of things done (ChangeLog)</a></h1>
11
<p>Please, note that this page is updated in the website only at the end of each week.
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>
20
<h2><a name="Mar06">March 2006</a></h2>
21
<a href="#top">Go to top of document</a>
24
<td class="ListaImpar">Date </td>
25
<td class="ListaImpar">Changes<p>
29
<td class="ListaPar">3-mar-06</td>
31
Testing version Beta 3.0b0 and improving program robustness:
33
<li>Bug fixed in Conversion.cpp: note names in upper case letters caused problems in
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>
41
<td class="ListaPar">2-mar-06</td>
43
Testing version Beta 3.0b0 and improving program robustness:
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>
54
LDP Parser: Added AnalyzeTimeSignature(). Modified AnalyzeMeasure() to use it.
57
<td class="ListaPar">1-mar-06</td>
59
Testing version Beta 3.0b0 and improving program robustness:
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>
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">
74
<td class="ListaImpar">Date </td>
75
<td class="ListaImpar">Changes<p>
79
<td class="ListaPar">28-feb-06</td>
81
Testing version Beta 3.0b0:
83
<li>Bug fixed in TheoSideReadingCtrolParms: key signatures not properly parsed.
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>
93
<td class="ListaPar">25-feb-06</td>
95
Testing version Beta 3.0b0:
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
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>
107
<td class="ListaPar">23-feb-06</td>
108
<td class="ListaPar">
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>
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:
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>
133
Bug fixed in TheoKeySignCtrol: in reverse problem (ask for number of accidentals)
134
the link 'show solution' did nothing.
137
<td class="ListaPar">17-feb-06</td>
138
<td class="ListaPar">
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:
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>
148
<li>Starting implementation of DlgCfgScoreReading dialog for Side reading options.</li>
152
<td class="ListaPar">15-feb-06</td>
153
<td class="ListaPar">
154
Continue implementation of DlgCfgScoreRedaing dialog, Notes reading options:
156
<li>lmTheoSideReadingCtrolParams: modified method CreateHtmlCell() in include
157
constrains verification.</li>
158
<li>lmScoreConstrains: coded methods SaveSettings(), Verify().</li>
160
The implementation of default settings, based on html params, is more difficult than
161
expected. This will require some thinking.
164
<td class="ListaPar">14-feb-06</td>
165
<td class="ListaPar">
166
Continue implementation of DlgCfgScoreRedaing dialog, Notes reading options:
168
<li>lmScoreConstrains: added methods SetMaxNote() and SetMinNote(). Removed
169
methods and variables related to lesson/level.</li>
173
<td class="ListaPar">13-feb-06</td>
174
<td class="ListaPar">
175
Removing cboMode and chkMetronome from lmTheoSideReadingCtrol:
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>
181
Coding missing parts to acknowledge min and max pitch params and
182
max interval in Composer5.
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>
191
DataBase object removed. No longer needed.
192
<p>Starting to rebuild DlgCfgScoreRedaing dialog.</p>
195
<td class="ListaPar">12-feb-06</td>
196
<td class="ListaPar">
197
Analyzing parameters for lmTheoSideReadingCtrol to finish this control. Implemented
198
params "control_settings" and "control cboMode". 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.
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:
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>
217
<td class="ListaPar">9-feb-06</td>
218
<td class="ListaPar">
219
Improving composer algorithm to optimize segment insertion:
221
<li>Score.h: added enum ENotesDuration</li>
222
<li>Composer5: added methods AddSegment() and CreateNote(). Testing.</li>
226
<td class="ListaPar">8-feb-06</td>
227
<td class="ListaPar">
228
Continue implementation of new composer algorithm:
230
<li>ScoreConstrains: finishing classes for segments and reviewed code for fragaments</li>
231
<li>Composer5: implement the new algorithm. Starting testing.</li>
235
<td class="ListaPar">7-feb-06</td>
236
<td class="ListaPar">
237
Starting implementation of new composer algorithm:
239
<li>AuxString: added methods SrcSplitPattern(), SrcGetPatternDuracion()</li>
240
<li>ScoreConstrains: implementing classes for segments</li>
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.
250
<td class="ListaPar">5-feb-06</td>
251
<td class="ListaPar">
253
<li>Continue implementation of DlgPatternEditor.</li>
254
<li>Looking for bugs in Composer5.</li>
258
<td class="ListaPar">3-feb-06</td>
259
<td class="ListaPar">
261
<li>Reviewed and modified documentation in mainpage of doxygen documentation and
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
270
<td class="ListaPar">2-feb-06</td>
271
<td class="ListaPar">
272
Implementation of metronome check box for SideReadingCtrol:
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>
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
286
<td class="ListaPar">1-feb-06</td>
287
<td class="ListaPar">
288
'Go back to theory' link implemented and operative:
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>
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">
303
<td class="ListaImpar">Date </td>
304
<td class="ListaImpar">Changes<p>
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
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>
316
Now studying how to implement the link 'Go back to theory'
319
<td class="ListaPar">30-jan-06</td>
320
<td class="ListaPar">
321
DlgPatternEditor implementation suspended. Preparing level 2 score side reading
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 <param name="music_border" value="0 | 1" > to
328
lmScoreCtrolParams::AddParam() (in Tags.cpp)</li>
329
<li>Adjusted the positioning and margins of ScoreCtrol. Test example now
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.
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.
349
<td class="ListaPar">25-jan-06</td>
350
<td class="ListaPar">
352
<li>TheoIntervalsConstrains:
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>
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>
364
<td class="ListaPar">23-jan-06</td>
365
<td class="ListaPar">
367
<li>Implementation of DlgCfgTheoIntervals finished.</li>
368
<li>Implementing TheoIntervalsConstrains load/save settings.</li>
372
<td class="ListaPar">20-jan-06</td>
373
<td class="ListaPar">
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>
386
<td class="ListaPar">19-jan-06</td>
387
<td class="ListaPar">
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>
396
<td class="ListaPar">18-jan-06</td>
397
<td class="ListaPar">
399
<li>Continue implementation of DlgCfgEarIntervals.</li>
403
<td class="ListaPar">17-jan-06</td>
404
<td class="ListaPar">
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>
414
<td class="ListaPar">16-jan-06</td>
415
<td class="ListaPar">
417
<li>Icon names standard finished. Icons renamed.</li>
418
<li>TextBookController:
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>
426
<li>toolbar option "icon size: large" disabled in 3.0 version as large icons set
427
is not yet created.</li>
431
<td class="ListaPar">2-jan-06</td>
432
<td class="ListaPar">
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>
443
<h2><a name="Dec05">December 2005</a></h2>
444
<a href="#top">Go to top of document</a>
445
<table class="Lista">
447
<td class="ListaImpar">Date </td>
448
<td class="ListaImpar">Changes<p>
451
<td class="ListaPar">26-dec-05 </td>
452
<td class="ListaPar">
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>
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.
470
<td class="ListaPar">22-dec-05 </td>
471
<td class="ListaPar">
472
Integration DlgCfgEarIntervals into the program
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>
480
<td class="ListaPar">21-dec-05 </td>
481
<td class="ListaPar">
483
<li>Comment out all wxLogMessages left by.</li>
484
<li>Create DlgCfgEarIntervals dialog.</li>
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.
495
<td class="ListaPar">19-dec-05 </td>
496
<td class="ListaPar">
498
<li>Fixed bug affecting lmScoreAuxCtrol: it does not resize the score when
499
the window is resized.
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>
505
The problem is now solved but now I have memory leaks!!
507
<li>DlgCfgScoreReading: starting with personal options.</li>
511
<td class="ListaPar">16-dec-05 </td>
512
<td class="ListaPar">
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>
521
<td class="ListaPar">15-dec-05 </td>
522
<td class="ListaPar">
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>
529
<td class="ListaPar">13-dec-05 </td>
530
<td class="ListaPar">
532
<li>Test to use wxIFM to implement draggable & dockable toolbars.</li>
536
<td class="ListaPar">12-dec-05 </td>
537
<td class="ListaPar">
539
<li>Upgrade to wxWidgets 2.6.2.</li>
540
<li>Finding alternatives to implement draggable & dockable toolbars.</li>
544
<td class="ListaPar">10-dec-05 </td>
545
<td class="ListaPar">
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>
554
<td class="ListaPar">9-dec-05 </td>
555
<td class="ListaPar">
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>
566
<td class="ListaPar">8-dec-05 </td>
567
<td class="ListaPar">
568
Looking for icons. Designing and adapting. Preparing icons in png format.
571
<td class="ListaPar">7-dec-05 </td>
572
<td class="ListaPar">
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 "images" 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>
586
<td class="ListaPar">6-dec-05 </td>
587
<td class="ListaPar">
588
Looking for icons. Designing and adapting. Preparing icons in png format.
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
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.
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:
606
<li>SetOpenBookButton() changed. Event handler OnOpenBookUI() added.</li>
607
<li>SetOpenHelpButton() changed. Event handler OnOpenHelpUI() added.</li>
612
<h2><a name="Nov05">November 2005</a></h2>
613
<a href="#top">Go to top of document</a>
614
<table class="Lista">
616
<td class="ListaImpar">Date </td>
617
<td class="ListaImpar">Changes<p>
620
<td class="ListaPar">30-nov-05 </td>
621
<td class="ListaPar">
622
Reestructuring main menu: Adding "View toolbars" and "View status bar"
623
menu items and their implementation:
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>
634
<td class="ListaPar">29-nov-05 </td>
635
<td class="ListaPar">
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>
644
<td class="ListaPar">28-nov-05 </td>
645
<td class="ListaPar">
647
<li>A shaped splash window implemented:
649
<li>Class lmSplashFrame created and implemented.</li>
650
<li>TheApp.cpp modified to show the splash.</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>
657
<td class="ListaPar">24-nov-05 </td>
658
<td class="ListaPar">
659
Fixing things to prepare 3.0 alpha 1 release.
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>
668
<td class="ListaPar">23-nov-05 </td>
669
<td class="ListaPar">
670
Fixing things to prepare 3.0 alpha 1 release.
672
<li>Open "Introduction" 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>
681
<td class="ListaPar">22-nov-05 </td>
682
<td class="ListaPar">
683
Fixing things to prepare 3.0 alpha 1 release.
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:
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>
700
<td class="ListaPar">21-nov-05 </td>
701
<td class="ListaPar">
702
Fixing things to prepare 3.0 alpha 1 release.
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>
712
<td class="ListaPar">17-nov-05 </td>
713
<td class="ListaPar">
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
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>
725
<td class="ListaPar">16-nov-05 </td>
726
<td class="ListaPar">
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>
735
<td class="ListaPar">15-nov-05 </td>
736
<td class="ListaPar">
737
Continue with support for lessons in html:
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>
746
Now I will continue finishing things in score renderization:
748
<li>LDP parser: added check and error message for bad syntax in groups.</li>
749
<li>Starting with trimming stems in groups.</li>
753
<td class="ListaPar">14-nov-05 </td>
754
<td class="ListaPar">
756
<li>Continue with DataBase and Composer5. Bug fixed in
757
lmLessonsTimeSignsTable::LoadTimeSignsForLesson(): the first entry was
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:
766
<li>Defined param structure for lmTheoSideReadingCtrol. Now implementing param analysis.</li>
767
<li>Class lmSideReadingCtrolOptions defined.</li>
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
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>
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.
790
<td class="ListaPar">8-nov-05 </td>
791
<td class="ListaPar">
792
Coding dialog to set options for score generation (DlgCfgScoreReading):
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>
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.
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>
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:
824
<li>lmPaths: added GetDataPath().</li>
825
<li>lmTimeSignMask replaced by lmTimeSignConstrains object. Related methods moved
826
to lmTimeSignConstrains object.</li>
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.
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>
842
<h2><a name="Oct05">October 2005</a></h2>
843
<a href="#top">Go to top of document</a>
844
<table class="Lista">
846
<td class="ListaImpar">Date </td>
847
<td class="ListaImpar">Changes<p>
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.
855
<td class="ListaPar">28-oct-05 </td>
856
<td class="ListaPar">
857
Continue writting the LDP language reference manual.
860
<td class="ListaPar">27-oct-05 </td>
861
<td class="ListaPar">
862
Documentation: Starting to translate and review the LDP language reference manual.
865
<td class="ListaPar">25-oct-05 </td>
866
<td class="ListaPar">
867
Continue with Composer5 and related methods to generate scores:
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>
881
<td class="ListaPar">24-oct-05 </td>
882
<td class="ListaPar">
883
Continue with Composer5 and related methods to generate scores:
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
890
<li>All this programmed and tested. Result OK</li>
894
<td class="ListaPar">21-oct-05 </td>
895
<td class="ListaPar">
896
Continue with Composer5 and related methods to generate scores:
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
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>
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.
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>
923
<td class="ListaPar">19-oct-05 </td>
924
<td class="ListaPar">
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>
933
<td class="ListaPar">18-oct-05 </td>
934
<td class="ListaPar">
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>
944
<td class="ListaPar">17-oct-05 </td>
945
<td class="ListaPar">
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>
955
<td class="ListaPar">13-oct-05 </td>
956
<td class="ListaPar">
960
<li>Fix bug: changed calls to CreateMenuBar to honor gReleaseVersion flag</li>
961
<li>gReleaseVersion value automatically set from preprocesor constant</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>
969
<td class="ListaPar">4-oct-05 </td>
970
<td class="ListaPar">
972
<li>Fix bug in SoundManager: need to sort events also by measure number and to give priority to VISUAL_OFF events</li>
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">
981
<td class="ListaImpar">Date </td>
982
<td class="ListaImpar">Changes<p>
985
<td class="ListaPar">29-sep-05 </td>
986
<td class="ListaPar">
988
<li>Key Signatures exercise finished</li>
989
<li>Dialog AboutDialog revised and finished. </li>
993
<td class="ListaPar">22-sep-05 </td>
994
<td class="ListaPar">
996
<li>Ear compare intervals exercise finished</li>
997
<li>Implementation of Key Signatures exercise started:
999
<li>Classes lmTheoKeySignCtrol and lmTheoKeySignConstrains created</li>
1000
<li>html objects of type="Application/LenMusTheoKeySignatures" implemented</li>
1001
<li>Class lmTheoKeySignCtrolParms created </li>
1006
<td class="ListaPar">21-sep-05 </td>
1007
<td class="ListaPar">
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>
1019
<td class="ListaPar">20-sep-05 </td>
1020
<td class="ListaPar">
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>
1030
<td class="ListaPar">19-sep-05 </td>
1031
<td class="ListaPar">
1033
<li>Class lmEarIntervalsConstrains created</li>
1034
<li>Firts test of an embeded object of class LenMusEarIntervals </li>
1038
<td class="ListaPar">16-sep-05 </td>
1039
<td class="ListaPar">
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>
1047
<td class="ListaPar">15-sep-05 </td>
1048
<td class="ListaPar">
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>
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"..
1063
<td class="ListaPar">12-sep-05 </td>
1064
<td class="ListaPar">Included standard documentation headers for all files in folder src..
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..
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">
1076
<td class="ListaImpar">Date </td>
1077
<td class="ListaImpar">Changes<p>
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
1120
<td class="ListaPar">12-aug-05</td>
1121
<td class="ListaPar">Paths revised to use lmPaths object.
1124
<td class="ListaPar">11-aug-05</td>
1125
<td class="ListaPar">Options dialog operative. Language selection operative.
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.
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 & lmColorsOptPanel) and tested.
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).
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">
1145
<td class="ListaImpar">Date </td>
1146
<td class="ListaImpar">Changes<p>
1149
<td class="ListaPar">26-jul-05</td>
1150
<td class="ListaPar">Minor changes to adapt to chages in wxMidi interface.
1153
<td class="ListaPar">15-jul-05</td>
1154
<td class="ListaPar">lmTheoScalesCtrol finished and operative.
1157
<td class="ListaPar">14-jul-05</td>
1158
<td class="ListaPar">Tags.cpp modified to implement dealing with <object type="Application/LenMusTheoScales">. Object lmColors created to avoid inconsistencies, and to allow user preferences.
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.
1165
<td class="ListaPar">12-jul-05</td>
1166
<td class="ListaPar">lmMidiWizard: added metronome settings.
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.
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.
1177
<td class="ListaPar">07-jul-05</td>
1178
<td class="ListaPar">Adding metronome controls to toolbar.
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.
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.
1189
<td class="ListaPar">04-jul-05</td>
1190
<td class="ListaPar">Notes duration issue (different if LDP than if XML) fixed.
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 !.
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">
1202
<td class="ListaImpar">Date </td>
1203
<td class="ListaImpar">Changes<p>
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.
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.
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.
1218
<td class="ListaPar">24-jun-05</td>
1219
<td class="ListaPar">Created object lmMidiManager to centralize all MIDI configuration and managemen.
1222
<td class="ListaPar">23-jun-05</td>
1223
<td class="ListaPar">Created object sbPreferences. Midi wizard pages 1 and 2 finished and tested.
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.
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.
1234
<td class="ListaPar">03-jun-05</td>
1235
<td class="ListaPar">reviewing how pitch information is stored. Fixing things related to pitch.
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.
1242
<td class="ListaPar">01-jun-05</td>
1243
<td class="ListaPar">lmScoreAuxCtrol: methods to adjust scale, margins and staff lenght. Object Context created.
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">
1251
<td class="ListaImpar">Date </td>
1252
<td class="ListaImpar">Changes<p>
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.
1259
<td class="ListaPar">26-may-05</td>
1260
<td class="ListaPar">memory leaks problem solved. Object lmInterval created.
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.
1267
<td class="ListaPar">24-may-05</td>
1268
<td class="ListaPar">lmTheoIntervalsCtrol: layout developed. Buttons operative.
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.
1275
<td class="ListaPar">20-may-05</td>
1276
<td class="ListaPar"><param play_control>. Implemented the inclusion of the "Play" control.
1279
<td class="ListaPar">19-may-05</td>
1280
<td class="ListaPar">LDPParser modified to accept parsing from text instead of from file. <object> params type and music parsed. Opertative now
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>
1288
<td class="ListaPar">18-may-05</td>
1289
<td class="ListaPar">Starting processing of <object>. <param> tag parser architecture implemented.
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.
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 (<a>): wxHtmlWindow has a virtual method, named OnLinkClicked(), that is called when user clicks on a cell that corresponds to a hypertext link.
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 <object type="image/LenMusScore">.
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.
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.
1312
<td class="ListaPar">06-may-05</td>
1313
<td class="ListaPar">lmKeySignature basic implementation done. Same problem than with lmTimeSignature.
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.
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">
1325
<td class="ListaImpar">Date </td>
1326
<td class="ListaImpar">Changes<p>
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.
1333
<td class="ListaPar">28-apr-05</td>
1334
<td class="ListaPar">Ties drawn using Bezier curves. Modification to introduce MakeUp phase.
1337
<td class="ListaPar">27-apr-05</td>
1338
<td class="ListaPar">fixed problem with beamed group tied to previous note.
1341
<td class="ListaPar">26-apr-05</td>
1342
<td class="ListaPar">Fixed several problems with beams:
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>
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.
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.
1358
<td class="ListaPar">20-apr-05</td>
1359
<td class="ListaPar">lmTupletBracket drawing implemented. Problem of font to use.
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 <tuplet>. Object lmTupletBracket created.
1366
<td class="ListaPar">18-apr-05</td>
1367
<td class="ListaPar">Fixed problem with alignment in lmTimeposTableArrangeStaffobjsByTime(.
1370
<td class="ListaPar">14-apr-05</td>
1371
<td class="ListaPar">Elements <backup> and <forward> implemented. Starting revision of lmFormatter3 to finish it and to fix problems.
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.
1378
<td class="ListaPar">08-apr-05</td>
1379
<td class="ListaPar">lmBasicText class implemented. WordsDirective derived from it. Now working on lmLyri.
1382
<td class="ListaPar">07-apr-05</td>
1383
<td class="ListaPar">Clarifying XML 1.0 positioning attributes. Starting the creation of lmLyric class.
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 <direction>. Two general parsing methods added: ParsePosition() and ParseFont(). Structures RXMLPositionData and RFontData defined.
1390
<td class="ListaPar">05-apr-05</td>
1391
<td class="ListaPar">lmRest object: sizing and positioning selection rectangles fixed.
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.
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.
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">
1407
<td class="ListaImpar">Date </td>
1408
<td class="ListaImpar">Changes<p>
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.
1415
<td class="ListaPar">30-mar-05</td>
1416
<td class="ListaPar">Yesterday's attemp was not good. New model hierarchy created: lmScoreObj -> lmSimpleObj -> lmAuxObj, lmStaffObj. lmVStaff restored as a non derivate class. Working on drawing selRect of Ties and defining the interface of AuxObjs.
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.
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.
1427
<td class="ListaPar">16-mar-05</td>
1428
<td class="ListaPar">XML parsing: added <stem> 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.
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.
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.
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..
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.
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.
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.
1455
<td class="ListaPar">07-mar-05</td>
1456
<td class="ListaPar">
1458
<li>lmXMLParser: added parsing of tags <note>.<staff>, <note>.<chord> and <note>.<beam>.</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>
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.
1468
<td class="ListaPar">03-mar-05</td>
1469
<td class="ListaPar">Continue with lmXMLParser: parsing notes; parsing measure attributes; parsing clefs.
1472
<td class="ListaPar">02-mar-05</td>
1473
<td class="ListaPar">Continue with lmXMLParser: parsing skeleton defined; parsing operative until ParseMeasure.
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.
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">
1485
<td class="ListaImpar">Date </td>
1486
<td class="ListaImpar">Changes<p>
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.
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.
1497
<td class="ListaPar">24-feb-05</td>
1498
<td class="ListaPar">Class lmStaffObjIterator created. Program code reviewed to use this class.
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.
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.