Thursday 11-9-97
- I have started with some tries to make the midi work and due to the
  success I have even made an object to manage the midi : midiOut

Friday 12-9-97
- Waking up at 7:00am, working from 8:20 to 11:20 and doing some fixes
  at 14:20, I have been able to play a midi file through the /dev/sequencer
  using the class midiOut and writing some new classes like : midfile
  track and some more. 

Saturday 13-9-97
- Today I have made a midi mapper (object mapper) which read a map config file
  and is used to support older synths without general midi compliance.

Sunday 14-9-97 
- I have made a window, with a KMenuBar, and a KSilder, which reads a mid file
  and play it (using a fork)

Monday 15-9-97
- fork copy the memory and thus, I cannot tell the player to pause, I have read
  much about the subject, and about threads

Tuesday 16-9-97
- I have made a small program to test the threads and forks, threads apparently
are faster, but it seems to have a problem with libqt or anyone, and I get
core dumpes what I run kmid even if I only link libpthread but don't use it.
So I've decided to make a fork, in the other way, I've learned to share memory

Wednesday 17-9-97
- Christian Esken has told me to use mediatool, but I don't have the
documentation, so I cannot continue work until I get it.

Thursday 18-9-97
- Well, I'll continue even without the docs, and when I have them, I will
make the neccesary changes to the code. I have made a few details in windows

Friday 19-9-97
- Today I have made the Pause and Stop buttons work. Also, I have made the
slide bar move. And also, I have made a parser of the midi file, which tells
how long the song is, in seconds. If this was little, I have made the interface
between the ui and the player.

Saturday 20-9-97
- The interface between the ui and the player doesn't work well, I have to
redesign it because it's difficult to be accurate writing the karaoke at the same that the note plays

Sunday 21-9-97
- I have redesigned twice the interface between ui and player and it still
doesn't work well, the first method was creating a list of the karaoke events
and using a timer to process the next event at the right time, but that doesn't
work perfectly, because the text appears a moment after or before the note is
played. The second method is a while loop, which calls processEvents, but
that isn't a very good option, because, though text appears just at the same
time of the note is played, top tells me that kmid is consuming up to 98% of
CPU time, and I don't want to make such a monster.

Monday 22-9-97
- Another failed method, and another passed day

Tuesday 23-9-97
- Some small changes beautifying the monster to send it to Christian

Wednesday 24-9-97
- More debugging and no result. I have uploaded current version to arrakis for
Christian to see it.

Thursday 25-9-97
- Eureka ! , at last, I have made the player and the ui run at the same time
with PERFECT syncronisation :-) (at 10:30 pm)

Friday,Saturday,Sunday 26,27,28-9-97
- I've been looking at the birds flying freely from tree to tree in all this
weekend, also, I've studied for the test drive.

Monday 29-9-97
- I have passed the exam and also, I have (almost) done the karaoke widget
and it works very well !

Tuesday 30-9-97
- The karaoke widget is finished, it also have a scrollbar to see all the
lyrics. By the way, StarTrek : First Contact is a very recommended film 

Wednesday 1-10-97
- I have fixed pause and stop, which were broken during the karaoke syncro
By the way, kmid consumes 0.0% CPU and 00:00 time while playing a 6 minute song
(and I think that even in longer songs !)

Thursday 2-10-97
- I have started classes, so I think I will have less time :-(

Wednesday 8-10-97
- The player now recognizes the SETPOS message, but the ui is not syncronized
yet

Thursday 9-10-97
- S. R. has "show"ed me the way to initialize the menu, toolbar and client of a
KTopLevelWidget, without the need to resize the window.

Sunday 12-10-97
- I have made that all time variables are expressed in milliseconds, so no
more change units !!

Sunday 19-10-97
- I have programmed very little this week, but today I have kill a big bug,
now all the songs play well. Some songs were played with some parts faster and
some parts slower than they should (thanks to Christian Esken for reporting
 the bug!)

Tuesday 21-10-97
- WOE, KDE-Beta-ONE is even better than before. But now kmid doesn't compile (?)

Wednesday 22-10-97
- After compiling the kde libs, kmid compiles ok. KSlider has changed and its
behaviour (Arrrgh!), so I have trickered a little the code.

Thursday 23-10-97
- I have cleaned a little the code.

Friday 24-10-97
- I started to "rewrite"  the track class to make the slider work well

Saturday 25-10-97
- I have passed the day working in the time. 

Sunday 26-10-97
- Eureka !!!, KMid works great! with good timings and syncronization between
         O ~                     music and lyrics.
          U
         \_/

Monday 27-10-97
- After 10 hours in the university, I have made the final touches to send
kmid 0.1 to the internet.

??? 7-11-97
- Finally, there's an impossible-better syncro between the program
and the user !!!. I mean, that when you press the pause button, the music
is inmediatly paused !!!

Saturday 8-11-97
- So I suppose yesterday was Friday, but I should demostrate it :-)
I have added drag & drop support in kmid to load files by dropping them from kfm
Also made the slider show the time played at resizeable steps

Sunday 9-11-97
- Today I have made possible to change the font and I have made an icon.
Prepare a version to upload tomorrow to the internet.

Thursday 13-11-97
- I have nearly rewritten (made lots of changes to) the lyrics display widget
Also fixed that old "bug" that let in black the last word of a phrase in some
songs.

Friday 14-11-97
- Automatic text event chooser is done ! 
- Fixed a bug that could freeze kmid under very rare circunstances.
- Added more support for incomplete/broken files

Saturday 15-11-97
- I have changed the exit-behaviour for a messagebox-behaviour
- Fixed a bug that could leave the children running when closing kmid

Sunday 16-11-97
- KMid adds a mime entry for karaoke files in audio/x-karaoke
- Real Session Management.
- Made the first rpm of kmid.

Monday 17-11-97
- Release version 0.3 in tgz and rpm

Friday 28-11-97
- I've been quite busy this week, but I have had reports and patches :-) on
how to make kmid to work with an AWE, a GUS, and in FreeBSD :-))))

Monday 8-12-97
- I have fixed a small bug with which the time that a song longs was not well
reported.
- Also a tiny bug in consolekmid

Tuesday 9-12-97
- I've made the first feature that I've been asked for. Another thing to map
with the midi mapper for Dietmar's PSR500  

Friday 12-12-97
- Nearly done the map chooser so that there will no be needed to edit the kmidrc
for anything.
Now when you choose a new map or change GM/MT32 mode, the music is automatically
changed while playing !.

...... **-12-97
- I have been the rest of the month implementing a midi server that I will 
call KMidServer and that will provide any application with easy control over
midi functions.

30-12-97
- KMid now can play gzipped midi files just as any other normal file. 

.... **-1-98
- I have improved the midi mapper by allowing to factor the pitch bender.
   Now pitch benders works OK !! (at last I have improved the windows mapper :-)
  I have also added support to convert expression events to volume events.
* I have been doing the kfourier this month and studying (little time to do more)


Thursday 5-2-98
- After doing my first exam this year, I have decided to calm things a little
 by programming something. I have made the options added to the mapper available
through the config map file.

Monday 9-2-98
- 2nd exam done and a bug that I introduced last thrusday fixed.

Friday 20-2-98
- I've finished exams, have installed the yesterday snapshots and have 
updated the configure scripts to add rpath and all that stuff to my copy
of kmid (thanks to Kulow, who added it to kmid in kdemultimedia)

Saturday 21-2-98
- Fixed the not-a-feature problem with FM, next time I will not let the
option for the user to select something that doesn't work.
Final touches to release kmid 0.41 tomorrow morning.

Monday 23-2-98
- I've started working on FM support (and it goes very fast)

Tuesday 24-2-98
- fm already works, but notes are shifted to a higher key !!!
Also pitch bender seems not to be accurate.

Wednesday 25-2-98
- pitch bender is now fixed, and also the shift of notes, now the problem
 is that some notes are lost (always from the same track/channel/patch?!?!)

Friday 27-2-98
- The problem with the lost notes is fixed :-/, the problem was that some
notes are played through the left speaker and some thru the right speaker,
and my wires for the right speaker were broken, but it wasn't noted with
the surround activated :-))))))) (Sometimes I feel real shame). Three days
lost in that !!

Saturday 28-2-98
- I've gone to the country and I've done the internals of the playlists in a
486/50 without linux, so I'll compile the Monday.

Sunday 1-3-98
- Some test with multiple toolbars.

Monday 2-3-98
- Started to do the collections manager dialog

Tuesday 3-3-98
- The collections manager dialog is done.

Wednesday 4-3-98
- KKeyConfig is a really good class, easy to use to make the karaoke scroll
when arrow keys are pressed.

Thursday 5-3-98
- I've done the playlist hardest part, now it works and there's only left
 some final touches to do  

Tuesday 10-3-98
- Playlists are finally working ok.

Wednesday 11-3-98
- Fixed the session management (in fact, I've changed it a little to support
collections)

Thursday 12-3-98
- Fixed some small bugs.

Friday 13-3-98
- I have replaced my new Makefiles.am (just two days old) with the one
of Stephan Kulow which look much better.

Saturday 14-3-98
- Finished deleting printf's to upload kmid tomorrow :-)

Sunday 15-3-98
- Upload it, but as I forgot to delete some printf messages :-( , I had
to quickly do a fix and send also 0.5.1

**** **-3-98
- I've passed many days configuring the modem, the internet connection,
sendmail, kppp, cvs and all those programs :-)

Monday 30-3-98
- I've implemented the save-Lyrics feature that Adrian Knoth suggested (thanks!)

Tuesday 31-3-98
- I've done some changes to support the new KFileDialog and the new
changes in kdelibs done by Matthias.

Thursday 2-4-98
- Some bug fixes

Monday 6-4-98
- I've found and fixed a memory leakage bug, I forgot to delete the
SpecialEvents from each song, so kmid was using more and more memory with
each opened song.

Tuesday 7-4-98
- Aaaargh !, I have to remove the changes that I did last tuesday because it
seems that the changes in the kdelibs have been removed.

Monday 13-4-98
- Added support for midi files with strange headers not related to midi files.
 (suggested by Adrian Knoth, thanks !)

Friday 24-4-98
- At last, I have had some free time and have done some things:
 1. Finally fixed the synchronization between gui and player (hopefully forever)
 2. Fixed a problem openning a gzipped file with spaces in its name
 3. Fixed a bug which caused kmid to freeze if collection has only 1 song, and
	trying to play next song in aleatory mode.
 4. Fixed the problem which made some songs to play at a lower volume when
	moving the slider, but no if playing from the beginning
 That's all for now :-) , there have been so many changes that I've call
  this version 0.5.3

Thursday 7-5-98
- Released version 0.6 to update my homepage which was getting very outdated

Saturday 9-5-98
- After fixing my midi cable, I've noticed that fm is (as Gyula Kerekes
 reported), playing in mono, and I've fixed it.

Sunday 10-5-98
- I've fixed a small bug with which midi files without text events (nor lyrics)
got the time slider very desynchronized after pausing for a long time.

Monday 25-5-98
- Applied a patch submitted by Kevin Street, to compile kmid on FreeBSD 3.0
systems with awe support (directory settings has changed since 2.2) 

Saturday 20-6-98
- I'm on exams, but just to relax a few minutes I've been hunting for bugs :-)

Sunday 21-6-98
- Wow, KDE-1.0 is finally here, and it is REAL, so I will prepare very quickly
KMid 1.0 before the freeze of kdemultimedia.

Saturday 4-7-98
- Just finished exams :-), and I've implemented the (long awaited feature of a)
volume bar.

Sunday 5-7-98
- I'm doing a channel view in which you can see the keys being pressed
and released, it's very nice :-)

Monday 6-7-98
- Using the (still hot) shutDown signal (the most awaited thing for
kmid)

Monday 13-7-98
- I've restructured the Channel view, it's much nicer and allows for easier
expansion. It also shows the used instrument

Saturday 15-8-98
- Wow, I haven't updated this file for so long ...
 I've finished the changing instrument feature and so the channel view.
 I've also improved speed a little by supressing some parses to the midi file.
 I have improved consolekmid, now it is much more usuable.
 Finally, I've changed the sources to use the KAccel class.

Monday 31-8-98
- I've fixed some bugs, the most important one being that kmid left its player
 processes as zombies after stopping playing (it worked ok, but now it doesn't, 
 dunno why). That problem made to appear some weird dialogs telling "song is already
 playing" at each moment
- I left a color hardcoded in button*.xpm when it should be Transparent (not 
 everybody has a window background color of #5D5D8F8FA0A0 :-) )
- I created a Motif 1.0 combo box in the channelview, but it should be Motif 2.0
 because 1.0 has a "feature" for large como boxes (as this one) 
 

Wednesday 9-9-98
- Fixed the last bug for leaving zombies around.

Monday 14-9-98
- Released Version 1.2

Tuesday 15-9-98
- Added the change tempo widget and the KTriangleButton widget

Wednesday 16-9-98
- It's possible now to change the tempo of a song.

Thursday 1-10-98
- Fixed some problems

Thursday 15-10-98
- FIXED !!!
 The long awaited fix has arrived for songs keeping playing after X11' logout
 when channelview was actived.
 Now also the ChannelView change its colors when the user change the
 global colors, kdisptext paints a frame over the karaoke text,
 KLCDNumber only accepts a range of values (from 3 to 999)

Friday 16-10-98
- Improved support for really broken files.
- Added some translations to Spanish

Friday 23-10-98
- I've started writing the internals of a rhythm view

Saturday 24-10-98
- Now KMid shows a new widget to make easier follow the rhythm of songs.
 I've also fixed a small bug by which the tempo (and rhythm) changed its 
 state before the event actually happening if you moved the timebar near
 before the event time. The problem was caused by volatile shared variables. 

Sunday 25-10-98
- Fixed a serious bug I introduced in the previous commitment

Monday 2-11-98
- Fixed some problems

Sunday 8-11-98
- Some small changes 

Wednesday 25-11-98
- I've finally fixed the bug that made kmid play music sometimes
faster and sometimes slower on some machines (i.e. mine, since I installed
kernel 2.0.36)
This bug was there since the real beginning,  and now, it is FIXED.
This deserves a new 2.0 version, probably next week. 

Friday 27-11-98
- Fixed a broken link in the .kdelnk file (DocPath) and raised version
number to 1.6

Thursday 10-12-98
- Added new sgml documentation, updated up to KMid 1.6

Friday 11-12-98
- Fixed a shared memory leackage bug (hopefully the last bug in KMid :) ).

Thursday 17-12-98
- Initial support for SoftOSS (this is making some sound now :))
- Indentified the player directory sources and beautified them a little

Friday 18-12-98
- Fixed a geometry layout bug

Sunday 20-12-98
- Fixed a problem when [un]installing midi devices (not such a mad idea if you
use kernel modules) that made kmid segfault because it couldn't found
the device.

Saturday 16-1-99
- Decode URL before showing it on the screen.

Thursday 21-1-99
- Fixed a null pointer access while generating beats, because I didn't
checked for songs which didn't contain any spev (songs which use absolute 0 spev
are extremely rare to find, as any song must include at least a tempo event)

Tuesday 26-1-99
- Removed ; after QOBJECT and fixed default midi map in consolekmid (not kmid)

Sunday 21-2-99
- Made a quick hack (no more than 15 lines) and kmid uses KIOJob to be 
net transparent (now it can download files using an http or ftp protocol just 
using dnd from a kfm window or using the open file dialog)

Saturday 6-3-99
- The sound driver in Linux kernels from the 2.2.x series work very different
than the ones in 2.0.x so kmid was severely damaged. After several days of
hacking (and after getting from A.Cox that this wasn't going to be fixed in the
kernel) I've found a fix that even works in the 2.0.x kernels.

Sunday 21-3-99
- Fixed the high pitch of AWE cards (thanks to Joseph H. Buehler and Takashi Iwai for
 the indications)
- Raised version number to 1.7

Friday 2-4-99
- Did a workaround for a bug in egcs which doesn't seem to optimize simple
return-a-value function as an inline function when using -O2 and it made kmid
freeze under certain conditions when parsing some midi files. 

- Removed a comparison of double variables which is very dangerous (_even_ after
storing in one of them the value of the other one)
- Fixed a problem by which kmid didn't play the last half second or so of some songs.

Thursday 8-4-99
- Fixed a problem that made Kmid consume 99% of CPU since a month ago. Now it's back
to the usual 0.00% of CPU use :-)   

Monday 12-4-99
- Fixed a bug that made KMid freeze when trying to open a directory  

Thursday 15-4-99
- Better support for broken karaoke files which has duplicated lyrics

Thursday 11-11-99
- Fixed a problem with corrupt files that suddenly doesn't work (but KMid
 from the 1.1 branch works ok (?) ). Anyway, I've got it to work even
 better with broken files
- Fixed the KLed usage, which was broken since the KLedLamp -> KLed transition.
- Fixed a repaint bug with the time tags that has been here for too long.

Friday 12-11-99
- Instead of using manual layout, let's use QLayouts (there are still some
	problems with this )
- Added xdnd support (finally !)

Thursday 25-11-99
- Changed a lot of code to look much better
- Fixed many problems when painting lyrics in different colors

Friday 26-11-99
- The lyrics display doesn't flicker anymore (finally :-) )
- Reworked the scrolling code, it's smooth now instead of line-by-line (but also
 makes consumes a bit of CPU, so I'll make it configurable for people who don't 
 want to waste resources) 
- note: don't call resizeContents from drawContents, or you'll have some 
 problems (QScrollView bug ?, anyway, this note should be on the docs)
 
Tuesday 11-1-2000
- SoftOSS is working now !
- Added LOTS of documentation to the MIDI library. Anyway, there's a lot more
to come.
- Also fixed a few problems in the lyrics display, and added a new option
to consolekmid

Sunday 27-2-2000
- Ported KMid to use the "official" LibKMid and KXMLGUI, with the following
 result :
 # wc kmidframe.cpp
 Before:  769    1450   24820 kmidframe.cpp
 After :  622    1171   19045 kmidframe.cpp

Monday 28-2-2000
- Added ALSA support to libkmid

Tuesday 29-2-2000
- I'm making KMid a part

It took me : exactly 13 minutes to port the app
             30 seconds to do /LD/LIB/ in Makefile.am
             5:14 to compile it and see that kbrowser.h doesn't exist now :(

Sunday 5-3-2000
- Now libkmid does build and run on systems where OSS is not installed.
- Updated the code to simplify it a bit due to libkmid changes.
- I still have to search for a bug that makes KMid (and the part!) to crash
  when destroying KDisplayText (the curious thing is that it crashes on
  QScrollView)

Sunday 2-4-2000
- Now Libkmid links with kdecore and qt in order to use a KConfig object to
read the default settings as saved by the user with the midi kcontrol module.
- It creates a "dummy" KInstance in case of the application being a non-KDE
application.
- Fixed compilation of KMid, as 1) someone renamed klinedit.h to klineedit.h
and 2) now we have to include qiconset.h when creating an action with pictures
as in kmid_part.cpp
- Now I just have to find why KMid doesn't show any interface except the
standard actions

Saturday 30-9-2000
- Hmm, it's been a long time since I don't update this file. In summer
 I've fixed ALSA support and many related bugs.
- Today, I've finally added the accelerators.
- Raised version to 2.0
