File: TODO

package info (click to toggle)
solfege 2.0.4-4
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 3,200 kB
  • ctags: 1,844
  • sloc: python: 12,160; xml: 5,458; ansic: 1,486; makefile: 562; sh: 233
file content (426 lines) | stat: -rw-r--r-- 14,526 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
\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: