We get the "The sound init failed: ENOENT" twice.

Menu creation is messy. And the menu order is dependent on the order
the modules are imported. 

Maybe, only maybe, should we add a exercise_pretty_name to the
dict we have for each exercise. Also remember that there may
be several dicts with the same exercise_name since we have
many exercises like Scales that use id-by-name. For now, we 
use the menu_path variable, and strips unnecessary info.

Proper names for __exdata__ and __exercise_data__

In src/rhythm.py we have _("Rh_ythm") and _("_Rhythm"). Problematic??

Check to see if random_transpose values out of range are handled ok in
id-by-name where the key variable of questions are set.

Win32 build requirements:
    gtk+ runtime environment 2.2.4-3 from www.dropline.net
savannah.nongnu.org/download/xlang/savannah_helper

Create install druid that ask you for the command line of a working
midi player program. And then ask you the other sound setup questions
from File->Preferences->Sound setup
----------------------------------------------------

Should exercise names be the same as the module names?

Error handling:
        Errors in lesson files should be handled better. For example if
        musicformat=satb in harmonic-progression-dictation.

        Nicer error msg if an url is faulty: "solfege:id-by-name"

        If I spell 'inversion' wrong in a chord lesson file, when there is no
        error message, but the chord is assumed to be in root position.

For noen lesson files, for eksempel durmoll, gir det  hyreklikke
ikke noe mening.

Er det feil i altered-2, siden siste tone i akkorden er lavere enn nest
siste?

config/lessoncollections is a whitespace-separated string, not a list.

Release HOWTO:
        Announce to info-gnu@gnu.org?
        Freshmeat.net
        www.gnomefiles.org
        Update README-(un)stable and INSTALL-(un)stable on SolfegeWiki

2.1.2 Tasks
	lesson-files/chord-all-inv: make good inversions of the last chords.
	
	Fix _i in lessonfiles, see lessonfile.py:90
	
	How should id-by-name statistics be handled. Should users delete
	the files themselved if necessary?

	Localization of chord names.

	Make header.questions_selectable work in harmonic-progression-dictation,
	and possibly other exercises.

2.2.0 TODO
	Improved statistics viewer.

Solfege 2.2 (or 2.4):
	Remove convert if old music format and lesson files. (Pre 2.0
	versions)

	Remove support for include(filename), require include("filename")
	
	Other clefs than C and F for sing-interval.

	Make NotenameSpinButton usable with keyboard only.


TODO and stuff-to-remember file
===============================

Single qouted strings with line breaks works in lesson files, even
if the documentation says it should not.

Does all exercises that should it, use the tempo we set in the
preferences window?

PerformanceTips:
	method local variables are faster than self.name variables.


i18n todo:
        The nl translation of online-docs are so out of date that it is
        no longer installed.

	There are a few typos and missing translations in es_MX.
	All .po files need update.

Minor source code cleanup:
        inputwidgets.py could need some cleanup.

	define ERR_PICKY and friends some common place?
	
	selectlessonfilewidget.py: m_ui is inconsistent with g_win
	
	make pydoc and pychecker work on my modules. Test modules with
	pychecker.
	
	MusicDisplayer.show should not require us to specify fontsize.

	Can creation of SelectLessonfileWidget be done in a common function
	used by many classes?

	Finn ut om det er greit  definere SOLVED, UNSOLVED, TOPTONE,
	INVERSTION etc p module level for velsene. F. eks for chord.

Build system
	The configure check for gtkhtml only checks for the library, not the
	bindings. We cannot import test it, because this fail without X.
	Maybe just check for the file if the rest of pygnome is present?

Bugs, not release critical.
	Bugs in progression-atte?

	The use of random_transpose=yes and \transpose command in
	lessonfiles is no possible, there is no transposition!

Packaging
	The .rpm package leave many empty directories when upgrading the
	package.
	
	random_transpose = key, -2, 2 give is not correct for for example
	the chordvoicing exercise, if the chords entered are not c major or
	a minor. This is documented in lessonfile.xml

pygnome API questions
	Figure out how to use gtkhtml2.jump_to_anchor.

	gnome.ui.PropertyBox is deprecated in GNOME2. What to do?

Exercise TODO
	chords
		On config page, when the focus is on "Change midi instrument for
		this exercise" check button, and we press down, the focus goes
		to the last of three instrument select widgets, not the first.

		i chordvoicing og chord Teacher er new_question helt lik. Den er
		forskjellig i sing-chord, men br nok bli helt lik. Lag felles
		funksjon?

	Sing-interval
		Make it configurable how many accidentals we want.

	identify-scale
		Add 'disable unused buttons' checkbutton, and set answer buttons
		of scale that are not going to be ask for, insensitive?

	dictation
		M ikke vise navnet p sprsmlet for enkelte av leksjonsfilene,
		for eksempel three-prog-root. Man kan si at dette ikke er en
		bug, at man ikke m oppgi 'name' til sprsml til diktat, der
		hvor navnet vil gjre oppgaven enklere.

	Id-tone
		the config of the exercise is at best confusing.

	compare-intervals
		skal vi bruke .push og .pop istedet for .flash, slik at vi
		skjnner hva som har skjedd, hvis vi ikke fr det med oss med en
		gang?

	rhythm
		Ubekreftet: En god del med sensitivity og hva som str i
		flashbar er galt.

	identifybpm
		complete the level-selection code
	harmonic-progression-dictation
		Should we set a limit on how many accidentals solfege is allowed
		to create when doing random transpose?

Programming
	 Never use a catch all exception handler like this:
	try:
	  blabla
	except:
	  do stuff
	
	Teacher.new_question should create a new question, but not play it.
	
	Nr selectlessonfilewidget velger en lessonfile som ikke lar seg
	parse, s skal vi prve  sette m_P til None.

	The user should not be able to 'give up' until he has at least tried
	to answer.

Win32 port
	compile with cygwin using -mno-cygwin flag to gcc to compile without
	cygwin.dll.

Misc TODO, checkout etc.
	mpd
		Better error messages:
			[g'8 g],
			
			\stemdown instead of \stemDown should say 'unknown
			keyword' or something instead of Parse error:

		The mpd displayer will be a little confused and generate bad
		looking flags for 1/8-notes if the Question.m_clue_end
		variable points to a timepos in the middle of a beam.

		Better TieEngraver. This will require some reorganisation,
		where we have one engraver that takes care of all ties
		between two chords.

		Get real number-pixmaps from Lilypond. The numbers I use for
		time signatures now are handcrafted.

		"|." bar, maybe also "||"

	lessonfiles
		At least for id-by-name: the file should be able to refer to
		midifiles to be played instead of music entered in the actual
		file. This would be nice if I ever connect to an external midi
		synth to create questions.

	other stuff
		let harmonic|melodic intervall ask the inputwidget how big
		intervalls it can handle. Only button-input is limited to a
		decim. But this will require a change to the config page where
		we select what intervalls to practise.

		some classes, like MultipleIntervallConfigWidget is *very* ugly.

		Check error code when trying to use an external midi playing program.

		The LessonfileManager parses all lesson files at startup. This
		is no real problem now, but with increasing number of lesson
		files, this has to be fixed. (With version 1.2.0, program
		startup takes 3 seconds, parsing takes 0.22)

	Document the view menu

	Kan jeg bruke vertikal label i statisticsviewer med gtk+ 2.0?

	Lage nye xpm til rhythm exercise, i  for eks 96x96 og bruk scale
	image, slik av vi fr mere runde kanter. Kan dette ogs gjres for
	feta-fontene, evt for hele music displayer? Jeg har begynt med
	xpm/rhythm-c4.xpm og rhythm-c8c8.xpm

	De nederste 4 tabeller i statistikken er vanskelige. Gjr bedre og
	legg til dokumentasjon.

	I need someone to fix (or give me a hint on how to fix) the sound
	card code so the percussion channel works also for /dev/sequencer
	for other sound cards than Soundblaster AWE. /dev/music (aka
	/dev/sequencer2) works fine but /dev/sequencer is more tricky. SB
	AWE works by by calling AWE_SET_CHANNEL_MODE(devnum,
	AWE_PLAY_MULTI), but I don't know to do this for other soundcards,
	and don't have the hardware to experiment.

	GNOME session management

	I rhythm.py m vi legge til config "disable unused buttons" eller
	noe liknende som harmonic interval har. Deretter se p focus.

Decide on this:
	Should 'correct/wrong answer' feedback be pushed or flashed?

	Should we document that question numbering (and possibly line numbering) in error messages are zero-based?

Stuff to remember:
	Lambda functions can be evil. If you have several lambda functions
	as callback functions to events, for example when defining a menu,
	then each menu item must be created with its own variable name, or
	else hell will break loose. Also we get warnings from compileall on
	many lambdas.

	When making polygons on GnomeCanvas, the points has to be entered
	anticlockwise.

	de_DE is language_COUNTRY

Thoughts about new exercises:
	lag test ala www.earpower.com simple test, avgjr om andre tone er
	hyere eller lavere. 50-10-5-3-1 hz forskjell. Hvor bra er PC til 
	lage s sm forskjeller mellom tonene?

	Train perception of modulations: Solfege play a simple progression
	with random modulations to new keys. The user sing the same pattern
	in the different keys. tca: this is similar to one exercise Marit
	uses when warming up her choir.

	Solfege display some notes and play the music. The user should tell
	where solfege don't play the same as the notes.

	solfege play a chord, and you should sing the middle/upper/lower tone.

	Make it possible for the user to take a test, for example in
	harmonic intervals, and see how well he knows them. And then save
	the result so we can track progression over time.




=======================================================================
From giovanni@simplesky.com Wed Dec 5 18:06:23 2001

Tom Cato Amundsen (05/12/01, 17:41) "Re: :-) s o l f e g e":

TCA| Your idea probably makes sense, but I don't understand what you
TCA| describe. Maybe I'm slow...
TCA| 
TCA| Can you try again, and be more detailed in how the lesson files should
TCA| look, what the program should play/display and what and how the user
TCA| should answer.
TCA| 

Sure :-)

goal: ear-train every possible chord voicing for a given chord

problem: there are too many combinations, and writing a lesson files
would take way too long, because you have write down explicitely
every voicing

solution: give solfege the "chord type" and let it "create" the 
different voicing (or let it randomly play a different voicing every time)

solution implementation:
a) how to specify the chord type:
  the chord type is specified by the voices offeset from the root note (
all in one octave, offset in whole tones), e.g.
a min7 b5 chord has : tonic, minor third, flat fifth, and seventh (minor)
since the tonic is always there it's useless to write "0" (difference 
tonic-tonic) so we have
minor third -> 3
flat fifth -> 6
seventh -> 10

so min7 b5 <=> [3,6,10] 
(oh, well, I'm an engeneering, maybe [Eb, Gb, Bb] would make more sense)

7b5b9 (yep, jazzy chords :-)
[1, 4, 6, 10]

these "arrays" would go in the lesson file, together with the chord name

b) how to play a random voicing:
just randomly add a couple of octaves (+ and -) to the voices
for v in voices:
   voices_out.append(v+rand*12)

where -3<rand<3
 

INTERFACE:
the user would have to choose between the chord names (min7b5, 7b5b9),
and then specify the voicings. Let's say the chord was a min7b5, the 
voices
are (tonic, minor 3rd, flat 5th, 7th), so 4 combos (<select><option> 
stuff, oh, wait this is html :-) with the 4 voices each would do it.

of course the possible voicing must be shown *after* the user has guessed
the chord type (oterwise they would spoil the solution).


is this better?

keep in mind that
1) I'm an engeneer
2) I play jazz
3) I play guitar

so this stuff is probably just a bunh of useless crap :-)


But, if can put it in solfege, your karma would greatly improve, 
and in your next life (if any) you wouldn't have to do heartly things like
coding computer software :-)


CIAOOOOOO

Giovanni

===================================================================


From seymour@peso.dgim.crc.ca Mon Dec 17 20:06:13 2001

Tom,

First, the program looks very useful since I would like to improve my
musical skills. I had some trouble getting it running on Windows 2000 and
Windows 98, until you made version 1.3.3 with windows installer available.
I am working on getting it running on RedHat 7.2.

Here are a couple of suggestions, but do not consider them urgent.
1) I am having a lot of trouble learning to recognize intervals, chords
etc. by ear. It would be use if there would be an option for auditory
feedback when I select the wrong answer. i.e. I should hear the chord
corresponding to the wrong selection, so I know how far I am off.

2) For multi-users, there should be an option of storing the statistics
for different users in separate files. When you start, you identify
yourself so the correct statistics are updated.

3) For people who develop shoulder, elbow injuries from using the mouse
pointer too much, there should be provision to enter responses on the
computer keyboard. Keys assigned to Next, Give-up etc. and arrow keys
(or hjkl (VI users)) or arrow keys to navigate the selected button.

4) Finally, on your page requesting help from contributers, you should
put a link to your e-mail address.

I wish I could offer more. Though I am a fairly experienced programmer
in Tcl/Tk and C, Python is quite new to me. There were a few spelling
English misspellings. Interval is spelled with one letter l.

The project looks very interesting and I shall be checking your site
regularly.

========================================================================

Date: Mon, 24 Dec 2001 08:41:47 -0500
From: Seymour Shlien <seymour.shlien@crc.ca>
To: Tom Cato Amundsen <tca@gnu.org>
Subject: Re: solfege : more suggestions

[text removed...]

Finally, there is another freeware and similar ear trainer.
Bonera's Absolute Pitch Trainer which can be downloaded at
www.simtelnet/pub/win95/music/apt10b.zip. The program has
some nice features (training and test mode), particularly
for the beginner.

I am a beginner. Though I can play a recorder (flute a bec)
by ear implying that I can unconsciously recognize
pitch and musical intervals, (my fingers seem to automatically)
go to the right notes) learning to recognize intervals
or chords with random starting notes seems very difficult.
I have started with just two intervals, major 3rd and perfect
5 th. I am still making a few errors with descending intervals.

In any case, I find solfege very useful for developing these
skills. I have shown it to an advanced music student who has
spent several years doing ear-training (and is quite proficient).
She was very impressed and plans to use it to improve her
abilities.

Happy Holidays and New Year.
______________________________________________

======================================================================

From: Mark Veltzer <mark@veltzer.org>
Reply-To: mark@veltzer.org
Organization: Meta Ltd.
To: tca@gnu.org
Subject: Thank you, thank you, thank you
Date: Thu, 4 Sep 2003 02:29:25 +0300

Hello!

My name is Mark Veltzer and I'm both a musician and a Free Source hacker.

I would like to thank you in person for your wonderful solfege software.

I use it daily now that I'm studying Jazz and it has improved both my int=
erval=20
recognition capabilities and my harmonic identification abilities.

Again, thank you very much.

Cheers,
=09Mark

P.S. I will write some lesson files if I'll have time for it but I wouldn=
't=20
count on it in the short term since my schedule is quite loaded. I would=20
really like to see rythem repetition exercizes where the computer plays a=
=20
rythm pattern and you need to repeat it by hitting the keyboard or whatev=
er.=20
The computer can do the beat measuring and tell you how close you got. I=20
understand that this will require some sort of metric to determine how cl=
ose=20
are you to the original pattern but that is not that difficult...

Again, thank you very much

Fax: +972-03-5581310
Email: mailto:mark@veltzer.org
Homepage: http://www.veltzer.org
OpenSource: CPAN, user: VELTZER, mailto:veltzer@cpan.org, url:=20
http://search.cpan.org/author/VELTZER/
Public key: http://www.veltzer.org/ascx/public_key.asc, wwwkeys.pgp.net,=20
0xC71E5D38



vim: textwidth=72: foldmethod=indent:
