When Is A Computer?
part two of One Two's custom program
This month we complete the One Two chord chart processor... round of applause for Andy Honeybone and his magic screen. In the September issue we listed out the first part of the program which set up the graphic characters. This final section arranges the chords so you can supply neatly printed charts for the rest of the band, plus instructions. There's more One Two software on the way. In the time being, if you'd be interested in acquiring a cassette of the program (for a reasonable fee) write to us and well see what we can do. Mark the envelope "The Honeybone Appeal".
Software, it is said, expands to fill every available byte and programming hour. Having become heavily overdrawn on the latter I would not disagree. Remember, he who remains calm while all around panic — misunderstands the problem.
The driving force behind this month's listing was the need to produce chord charts by harnessing the BBC-B microcomputer and an Epsom FX-80 dot-matrix printer. The previous article provided definitions for the necessary chord symbols and this chunk presents the 'word processing' software to take care of the bar spacing, line width, title and other layout considerations.
An overview of the system is as follows. Firstly the character sets of both BBC and printer are enlarged to give representations of music graphic symbols. This is achieved by running last month's listing. With the function keys now programmed to give these extra characters, the main formating program is loaded (this month's listing), and the song is entered bar by bar in response to helpful prompts. When a fine symbol is entered after the last chord, the program prints out the piece with all the bar lines lovingly corrected to appear in orderly rows. All your hard work can then be saved on either disk or cassette from which it may be recalled for further copies, editing or transposition (a future addition).
Although hard copy could have been produced using a 'screen dump' ROM package, it was felt that better definition, larger page size and faster output could be achieved by the method described here, and any enthusiast already owning the aforementioned ROM should have no trouble modifying the code to suit.
The 'word processing' program is as 'idiot proof' as space would allow, but it does assume certain conventions such as not placing repeat section symbols in mid-bar. End repeat symbols should appear at the end of a bar and begin repeat symbols at the beginning — sounds fair don't it? A space is expected before an end repeat and after a begin repeat. Normal bar lines are inserted automatically by the program.
By 'directions' the computer is asking for any text/symbols that you want to appear above the chords such as 1st/2nd time bar, coda, pause, obscure Italian tempo markings or words of encouragement to the player.
A more detailed account of the software follows for those interested and for guidance when all else fails.
On receiving a reply to the initial question 'create a new chart?', the software branches accordingly to either a keyboard input routine or a file retrieval. The input routine PROCinput asks first for a title, which will be printed in double width characters at the head of the page, and a comment, which appears at the end of the piece and is suitable for notices of copyright or additional instructions. A prompt then appears giving the current bar number (starting with 1) and the instructions 'Enter chords'. The symbols for begin and end section repeats should also be entered, if applicable, along with the chord symbols, remembering to space them as outlined above.
Pressing return generates the next prompt 'Enter directions' and the entry may be anything you wish to appear above the chord symbols. If no directions are necessary, just hit return. The 'return' at the end of the entry gives the 'Enter chords' prompt for the next bar. This sequence is continued until the last bar is reached and this is signaled by entering a fine symbol (bold line) at the end of the ultimate bar after the last chord.
All this information is held in a two-dimension array (bar$) as string variables (ASCII characters). The procedure PROClongest is then invoked to determine the longest bar and select output format as four or eight bars wide. The functions FNchkbeg, FNchkend and FNchkfine look for the presence of repeat and fine symbols and reduce the accountable bar length accordingly.
The procedure PROCprint interprets each bar and calls other procedures to deal with specific permutations of symbols. The most simple case is where no special characters are present and the previous bar does not finish in an end section repeat sign (endflag =0),
Other checking is performed to see if a particular bar occurs at the end of a line as this requires some different handling. Further coding (fineflag) inhibits empty bars being printed should the length of the piece be such that it does not conveniently finish at the end of a line.
If the answer to the initial question had been that a new chart was not required, then a section of code would have been called to perform a file retrieval. The program checks to see if the BBC has a disk filing system (PROCsys) by means of the OSARGS routine, and this affects the prompts for the required filename. Drive specifications are not required for a cassette system. The file holds data in 'raw' format and so, after loading, the situation is the same as if the data had been entered by the keyboard input routine. The title and comment strings are held at the end of the main array.
Editing is by means of entering the number of the bar for correction and then re-typing the entry. If no change to the existing data is required, then typing a return will leave the values unchanged.
PROCnorm handles this circumstance by printing a bar line and space (d$), the relevant chords and enough trailing spaces to bring the bar length to the calculated maximum. The most awkward case is when the longest bar occurs in conjunction with both begin and end repeat symbols and the previous bar terminates in an end repeat (endflag = 1).
Feature by Andy Honeybone
mu:zines is the result of thousands of hours of effort, and will require many thousands more going forward to reach our goals of getting all this content online.
If you value this resource, you can support this project - it really helps!