SingF(or)ever

Rocnikovy project
Title: Ultimate KaraChoko MegaExtra MultiPlatform SuperCompactible SingF(or)ever StarMania
Latest version: 0.5.251
Programming language: C++ with SDL
Libraries used: stl, boost, portaudio, leaktracer, sdl
Minimal requirements: Windows?/Linux, 32 MB RAM, microphone
Optimal requirements: Linux, 64 MB RAM, microphone, earphones
Contributions to: Peter Perešíni, Michal Kováč

About:

SingForever is educational art-oriented project with intention to be the best sing practice software ever. Users are made to gradually improve their skills from absolute beginners as far to forever lead singer champions. Every user has own profile with statistics. Following it, SingForever will determine the best difficulty for a chosen song. When singing a song, users hear the song by the earphones, or poor ones by the speakers(poorest ones by the PC speaker) and try to sing words displayed on the screen with the correct tones that are also displayed. SingForever tracks the singed melody and compares it with the correct one. Points are gained according to the accuracy of the voice.

Screenshot at 16.5.2008: (ignore that poor graphics)
screenshot
Screenshot at 18.6.2008:
screenshot2

Game is based on ScreenManager that manages screens like MenuScreen, SingScreen, and so on.

What is it able to do now?(26.5.2008)
When you run it, loading screen loads all songs, then in main menu you can choose sing, there are titles of those songs. Choose one and singscreen will show you notes and lyrics to sing. When you sing to the microphone, new notes appears at corresponding position. You can compare it now and continue singing. You see also title of song, progress bar... When song finish or escape was pressed, there are results of song, you can go to main menu or sing again.

Documentation by cppdoc

Implemented classes:

Miso:

classes: 21
functions: 145
lines: 4939
words: 13250
characters: 138506

PP:

classes: 39
functions: (many not subscribed) 4
lines: 8261
words: 18254
characters: 206671

C stands for 200 bytes of code, h 200 bytes of documentation.

Miso:
Graphics             21726  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
Song                 18329  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhhhhh
SingScreen           16163  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhh
Player               15305  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhhhhhhh
Sentence             14493  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhhhhhhh
StaveWidget          13047  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhh
SongList             12962  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhhh
Directory            11371  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhhhhhh
LyricsWidget         8954   |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhh
SongSelectionScreen  8823   |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhh
SongResultScreen     8140   |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhh
GameDataPointers     7094   |CCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhh
MainMenuScreen       6649   |CCCCCCCCCCCCCCCCCCCCCCChhhhhhhhh
LoadingCallback      6471   |CCCCCCCCCCCCCCCCCCCCCChhhhhhhhhh
TimeBarWidget        6413   |CCCCCCCCCCCCCCCCCCCCChhhhhhhhhh
SongComparator       6256   |CCCCCCCCCCCCCCCCCCChhhhhhhhhhh
Note                 5472   |CCCCCCCCCCCCCCCCChhhhhhhhhh
RecordedData         2575   |CCCCCCCCChhh
Themes               2403   |CCCCCCCChhh
FileUtils            1627   |CCCCCCh
Syllable             1056   |CCChh

PP:
Audio                     25920  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
Preferences               23293  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
MP3Decoder                18316  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhh
GameEngine                17750  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhh
ScreenManager             16321  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhhhhhhhhhh
AudioSamples              13529  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhhhhh
Errors                    12988  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhhhhhh
RingBuffer                12606  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhh
MyStringUtils             11709  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhh
FFTSpectrumAnalyzer       10383  |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhh
SimpleSpectrumAnalyzer    9277   |CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhh
CircularBuffer            9167   |hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
Metric                    8095   |CCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhhhhhhhh
CompoundSpectrumAnalyzer  6997   |CCCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhh
Surface                   6907   |CCCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhh
Exceptions                6843   |CCCCCCCCCCCCCCCCCCCCCChhhhhhhhhhhh
Font                      6408   |CCCCCCCCCCCCCCCCCCCCCChhhhhhhhh
BarGraph                  6317   |CCCCCCCCCCCCCCCCChhhhhhhhhhhhhh
Graph                     5848   |CCCCCCCCCCCCCCCChhhhhhhhhhhh
Oscilloscope              5798   |CCCCCCCCCCCCCCCCCChhhhhhhhhh
AudioUtils                5450   |CCCCCCCCCCCCCCCCCCCCChhhhh
Widget                    5251   |CCCCCCCCCCCCCCCCChhhhhhhh
Spectrogram               4829   |CCCCCCCCCCCCCCCChhhhhhh
MemoryWidget              4269   |CCCCCCCCCCCCCCChhhhh
AudioCircularBuffer       4233   |CCCCCCCCCCCCCChhhhhh
Version                   3884   |CCCCCCCCCCCCChhhhh
YGradientColorFunction    3866   |CCCCCCCCCCCChhhhhh
StackTrace                3576   |CCCCCCCCCCCChhhhh
Screen                    3407   |CCCCCCCCCChhhhhh
ErrorsWidget              3348   |CCCCCCCCCCChhhhh
DotGraph                  2987   |CCCCCCCChhhhhh
SpectrumAnalyzer          2581   |CCCCCCChhhhh
MyMath                    1877   |CCCCCChh
MemoryInfo                1562   |CCCChhh
RangeStatistics           1254   |hhhhhh
ColorFunction             1074   |hhhhh
MyAssert                  577    |hh
Debug                     445    |hh
NoDebug                   220    |h
Coming soon:
Hotfix: Alternative timer for audio or pa_unix_oss.c hacking DONE
Relative mode time synchronization
bad inputs fix (special characters at the end DONE, no splitting spaces, substr failure...)
Check memory leaks !! DONE
Divide long functions
Divide long sentences
Shorten long paths in loading
Note Utils - smooth changes,pitch/frequency conversion DONE
Sorting songs DONE
Scoring DONE
add spectrogram 
recorded data class DONE
coloured points DONE
Notesgap? resolution? wtf?
Improve graphics - use widgets DONE, themes
Recording to wav