Sjekk opp bruk av ${python:Depends} i control når vi bruker dh_python.
Sjekk opp .postinst .prerm .rules og control

Sjekk opp easybuild patch.
\u24b3 is a triangle

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

Single qouted strings can contain line breaks.

Rc-file:
	Starting with version 2.0.0, Solfege stores configuration data
	in $HOME/.solfegerc and not in versioned directories. The
	config variable 'app/rcfileversion' will be used to ensure that
	Solfege will not load a rcfile created by a newer release with
	incompatible rcfile. And it will also make it possible for newer
	releases to safely convert older rc-files. 'app/rcfileversion' 1
	is the version used in Solfege 2.0.0

	To make this work, every change to the rcfile, this mean every
	new config variable, must be evaluated carefully.

Statistics:
	Starting with version 2.0, Solfege stores statistics in
	$HOME/.solfege and not in versioned directories. The file
	$HOME/.solfege/statistics_version will contain the version
	number for the statistics. Version 1 is the version used by
	Solfege 2.0.0, and this version number should only be increased
	when incompatible changes occour.

	If Solfege starts and find that the statistics is stored in a
	newer format than what it knows about, it should not load or
	store any statistics to disk.
	

We can set 3 types of tempo in the preferences window. But not all
exercsises use these tempos.

Source rpm of regular tarball is ok. Fix for solfege-easybuild tarball.

TextViewHtmlWidget:
        support links in TABLE

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


Solfege 2.0 lessonfile format changes:
        -It is recommended to write include("filename") and not
         include(filename) when you include a file. Using the old format
	 will display a warning.


gtk.gdk.pixbuf_new_from_file(filename.png)
istedet for
im=gtk.Image()
im.set_from_file
im.get_pixbuf()

WEB:
	Validate the site.

Solfege 2.2 (or 2.4):
	Remove support for include(filename), require include("filename")
	Don't read older rc files if ~/.solfegerc dont exist.

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?

	Do @prefix@ instead of $(prefix) in all makefiles, and let configure
	generate them from Makefile.in?

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 bør 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å spørsmålet 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 spørsmål til diktat, der
		hvor navnet vil gjøre 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
		skjønner hva som har skjedd, hvis vi ikke får det med oss med en
		gang?

	rhythm
		Ubekreftet: En god del med sensitivity og hva som står 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
	Teacher.new_question should create a new question, but not play it.
	
	Når selectlessonfilewidget velger en lessonfile som ikke lar seg
	parse, så skal vi prøve å 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 får mere runde kanter. Kan dette også gjøres 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. Gjør 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, avgjør om andre tone er
	høyere 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.
______________________________________________
vim: textwidth=72: foldmethod=indent:
