Fast Access


Chord Directory

Chord Directory

Files:
DIRECT - BASIC program
G-Files - data file

A possible hole in the educational software market?

I could always depend on my BBC, as being a machine served with every kind of educational software you could possibly need. It seemed the tiniest of holes in the educational software market had been creatively filled by the most imaginative of software designers. In view of this perhaps understandably excellent track record for good quality and reasonably priced educational software, you won't be surprised to hear that I wholeheartedly advised a music teacher friend of mine to buy a BBC microcomputer - which was on very special offer I might add. She asked me such questions as:

'Will I be able to upgrade it to a musical keyboard', 'Will I be able to get musical learning aids like keyboard and guitar tutors', 'Will I be able to get a guitar chord directory?"

I naturally replied 'yes', 'sure', 'without doubt' to these banal questions.

Anyway three weeks passed by, when she called me up to say she had in fact found a hole in the educational software market. Initially I was sceptical about her claim, but on closer scrutiny I was soon to find verification. I suppose, to most software designers this would have come as music to their ears, but in these circumstances I felt quite guilty, after all I had advised her to buy the machine.

And as for the hole? You see, my friend teaches guitar, not only at pimary school but also in the evenings, and it seemed what she really needed was a guitar chord directory that could be programmed to store a number of chords - a great number of chords as it turned out.

Without trying to cajole her into making a compromise I first brought her attention to a chord tutor I had once layed my hands on, that stored 144 guitar chord shapes and played chord sequences. No, this wasn't what she was looking for at all, she wanted a programmable chord directory into which students could program newly discovered chord shapes - a kind of chord database I suppose. She then wanted the program to be capable of sounding and displaying all chord shapes. And as for the number of chords she wanted it to store: 'about four hundred would do,' she calmly replied.

I must admit, at this stage I did think of telling her there and then, that I very much doubted such a package existed - not for the BBC at any rate.

Nevertheless, I told her I would look round and call her back in a few days time. The few days quickly became a week. But not wishing to let my good friend down, and my reputation, I decided I would write such a program myself. So armed with the sort of musical skills that once led to the designation 'guitarist', I felt confident I could produce the sort of program she wanted - still, I was a little doubtful about the 400 chords bit.

Algorithm Angles

Where to begin? As Rodnay Zaks pointed out in one of his many brilliant books, 'it is observed that 10% of the programming population can write a program successfully without having to flowchart. Unfortunately, it has also been observed that 90% of the same population believe they are in that 10%'.

This almost satirical statistical dilemma has always amused me, but also being a person who feels flowcharts are procrastinating exercise for students, perhaps I too fall neatly into that large percentage of programmers who feel they can program without flowcharts, but obviously can't.

Setting aside such thoughts, I decided to get machine-specific, and jot down some useful high-level pointers:

Firstly, the teletext mode would have to be used owing to the large number of chords that would have to be stored. But what about the graphics? I don't know, MODE 7 graphics aren't too bad - well Ceefax graphics look quite good. There again MODE 7 might be a bit crude; but it's colourful, which'll make for a clear and attractive presentation.

But what about the chords, stored in memory or on disk? Well seeing as the directory was to be programmable, some would have be stored on a disk file. But just to get the program up and running, and useful from the word go, I thought I'd store a hundred or so chords within the program itself.

Gradually, the program began to take shape, using a large array to store all chord shapes; notes were then calculated according to the graphical finger positions displayed on screen. I used a coding technique to compress the chords into concise number sequences - a technique comparable with text compression used in almost all adventure games.

The net result is the most powerful guitar chord directory in the world. Yes, that's quite a claim. Do you know better?

Pointers

Like always, I've attempted to write a program that is easy to use. My maxim being like that of the writers of so many US military manuals, upon which - if you haven't had the pleasure - is boldly inscribed, 'Written by an idiot for idiots'. No disrespect intended!

Subsequently, little need be said about operating the program, but perhaps some hints and tips wouldn't go a miss:

When entering chords, you must remember not to use a chord title more than once, as the program searches through the array in one direction only, and as would be expected selects the first chord which corresponds to an entered chord string. So if you would like to store a number of individual A chords - which is quite likely - then remember to call them different names like A-1, A-2 and so on, or perhaps something similar. It is also worth pointing out that, when you list stored chords, only the first 4 characters of the title are shown, so if you don't want to loose a chord for ever within the program, you'd be well advised to stick to chord names not exceeding 4 characters. Whilst that won't always be possible, an effort should be made.

Stored in the program's DATA statements are a number of common chords of a popular structure, so before you start storing chords, it's perhaps worth checking them out in order to avoid unnecessary duplication.

Verdict

The program proved to be exactly what my friend was looking for, and she was duly thankfull. But she did wonder if I could then write another program that would store around a thousand chords. You see she's not the most computer orientated of individuals, and like all such persons, think that writing a program takes up twenty minutes of a free evening. I tactfully - I think - advised her to see how she got along with this program. And the last I heard, the program and her were getting along just fine.

As for how many chords can be stored, well it seems to vary between 350 and 500 which I think is quite enough - and meets most people's requirements.

Francis Botto