All entries for November 2007
November 17, 2007
Slightly overdue (I mean overdue in going onto this blog), here's some of the more interesting design work done for the first increment of PSALM.
First, the component/module relationships. Please be aware that this is not in any kind of standard notation, but is actually just a tidied representation of what I have written be hand in my grand A4 pad of joy. The key should at the top-right should explain the crazy colour scheme. The arrows give a basic idea of relationships. So, for example, the GUI (which is circular in the diagram for no real reason other than most operations run through it) calls the DB (database) Bridge component. The little arrows under some of the components just highlight some of the more important functions or sub-components.
I have named these 'components' because they won't necessarily constitute modules. If anything, each block is more like a 'part' of the program. So the external XML database is included on the diagram, as is the Setlist object class. I will also point out at this stage that this design is just a starting point that is likely to need refinement. This first increment is about getting something built that will be functional to stimulate further thought and then work.
Next, we have a plan for the layout of the XML database:
<song title="..." writer="..." date="..." basekey="..." capokey="..." ...>
<verse no="..."> | <chorus> | <prechorus> | <bridge> | <tag>
Lyrics go here, [C] chords go in sqaure brackets [Em]
[D/F#] Sometimes chords mig[G]ht be in awkward places. [C] [G]
</verse> | </chorus> | </prechorus> | </bridge> | </tag>
...insert more songs here!
Hopefully that gives you an idea. Additional imformation can be stored in the song tag, such as theme, quick reference or songbook information. This is not so important for this increment of the program.
For a better example, take a look at this code snippet: songs-nocopyright.xml. You may find it simpler to view this file in a text editor by saving it first rather loading it directly in your browser.
Again, this is just an example, which won't necessarily be used exactly like this in the final implementation.
November 05, 2007
I had an informal discussion with a friend today, Rich Kelly, about how software could help in leading worship. Rich leads worship in my local church, and leads one of our church bands. Our church is currently looking at re-organising the way our music is kept. At the moment, we use large files of paper sheets that aredifficult to keep tidy and up-to-date.
After introducing him to the idea that software could help, I asked what he would require in a program to help lead worshippers and their band. Here is some of what he said (paraphrased), together with comments I have added that lead directly from what Rich said:
- The program - or the user's interaction with the program - must not distract the rest of the church congregation.
- It must be easy to use, as songbooks will often suffice. Using a mouse would be very difficult while playing guitar! Even without a guitar, how would a mouse be used if there is no surface to use a mouse on?
- Practically, could a laptop running the program be mounted on a stand?
- There could be program versions for other members of the band - e.g. one with sheet music displayed for keyboard players, ones without music (lyrics only) for singers.
- Voice recognition for song selection would be very useful. So while playing a set, the user could say the name of a song into a small microphone to select it, rather than having to click buttons.
All this shall be taken into account when designing PSALM.
In other news, here is another idea of what PSALM's GUI could look like:
Basically, the two halves have been swapped around because the left side would be used first, to select the song then displayed on the right. A little more thought has gone into the program's design, which hopefully shows in the functionality implied by this screenshot.
November 03, 2007
Here is a rough idea of what the PSALM program could look like. Please bear in mind that this image is simply a mock-up, nothing is in concrete. Most importantly though, I have not thought much about basic GUI layout prinicples, let alone HCI issues. This screenshot serves only to indicate the kinds of functions that will be required.
The first steps towards increment one have begun. This first increment is aimed at implementing an appropriate database and basic GUI for displaying/finding songs, forming the 'bread and butter' foundations of the program.
Requirements for the first increment are laid out here: reqs.pdf.