I have made a new release of Toadflax. There are a number of internal changes to improve the code, but the main change is that Tcairodraw now supports positioning of text around a note using "^text above" "_text below" "<text left" and ">text right".
I have made a new release today. There are a number of internal changes so that the interface between the parser (parseabc.c) and the backend code is much closer to using the same function names as abc2midiu.
I have made a new release today. The main changes is to show "invisible" rests correctly. i.e. not show them!
I have made a new release of Toadflax. There are a number of minor changes to try to align the contents of the utils files with those in the abc2midiu release.
I have made a new release of Toadflax today. I noticed that after upgrading my version of Linux,
py_toadflax was not compiling because it was trying to use the wrong version of the python
library. I have changed this and the Makefile should be future-proofed so that It always uses
the current version of python.
Today (4 July 2024) I have made a new release of toadflax and related programs. The main changes are that
octave=N is now supported correctly in the V: and K: fields. I have also re-organized the way the V: and K:
fields are handled to make it easier to support features proposed in abc 2.2 .
Today (26 Apr 2024) I have made a new release of toadflax. The changes are relatively minor. I have introduced some logic to handle setting spaces in 12/8 time tunes correctly. I have also changed the parser to handle %% (pseudo-comments) and I: (instruction field) in the same way.
On 28 Mar 2024 I made a new release. The main change is that the abc source file may appear anywhere within the list of arguments provided it ends in .abc . This applies to both Tabctoabc (utility for transpose and various other abc manipulations) and Tcairodraw (utility to generate images).
Today (16 March 2024) I have made a new Toadflax release. The main change is that when just a number
appears in the Q: field, that number is printed as the tempo, so no default rule is applied to decide what
note value the number applies to.
Today (4 Feb 2024) I have made a new Toadflax release. The main change is to support
||: as a variant of |: (start repeat).
The abc language uses the standard ASCII character set, which is all that
is required for recording the music itself. However, the notator may want
to record a title or composer written in a language which uses characters
outside the standard ASCII set. There is support for a good range of
special characters in the abc specification by means of mnemonics,
named html entities and fixed width unicode. Also, toadflax supports utf-8,
which allows the encoding of unicode characters within a byte stream, but
the ordinary ASCII characters are still recognized as normal. The unicode
specification covers all the characters that you are likely to require
in normal circumstances.... read more
I have released a new version of Tabctoabc which introduces a -f option to find the best key signature to use for a tune. The idea is that the best key signature will be the one that minimizes the number of accidentals required to represent the tune. If you are expecting a change in key signature part way through the tune, then you will need to split the tune into its component parts before using this option and separately analyse each part. In this context, the key signature is assumed to the number of sharps or flates (e.g. 5 flats, 3 sharps). There is no attempt to find the best mode (major, minor, dorian, mixolydian etc.)
I have today made a new release of Toadflax and Tabctoabc that allows you to re-notate a tune in a different key signature. The notes stay the same, so it is only the key signature itself which changes. This is different to doing a transposition, which also has the effect of changing the key signature but moves all the notes up or down by a certain number of semitones.
Today I have created a new sourceforge project fl_toadflax which contains a version of
Toadflax re-written to use the FLTK windowing toolkit instead of GTK. Although it uses
much of the same code as Toadflax, I have created it as a separate project to avoid
making the Toadflax directory structure too complicated. fl_toadflax also uses the
abcCairo code (derived from abcm2ps) to display the tunes.
I have made a new release today (30 Mar 2023). The main changes are some re-organization of the code,
so users are unlikely to notice any difference. However, I have also built Tabctoabc.exe using wine and
put it in the Files section. This is a clone of abc2abc for Windows, but using the source code for Toadflax
rather than the code in abcMIDI.
I have made a new release today (8 Feb 2023). The main change is an option to select compact abc notation where c/2 is replaced with c/ . I also spotted an error in one of my scripts which will have meant that Toadflax2 will not have been working because I packaged it with the wrong executable. This should now be fixed.
I have made a new release today (20 Jan 2023). The main change is an improvement to the way
symbol redefines with U: work. The mechanism now allows symbols to be defined as text
strings, following the 2.2 standard. I have also corrected the checking on what may be refined
so that h-w, H-W and ~ are all accepted as in the 2.2 standard. I notice that the '.' character is
anomalous as it is one of the pre-defined single character abbreviations but you cannot
redefine it whereas you can redefine all the others.
I have today added a small utility program called Tcairodraw. This is a
standalone program which can generate PS, SVG, PNG or PDF files
from abc, one tune per file. This is mainly for testing purposes at the
moment, but it could be developed into utility program similar to
yaps. The main limitation of this version is that this program writes
to a fixed size region or "canvas". As with all music layout programs,
you have to do most of the work of creating a trial layout first in order
to know how big a region the layout will take up. Using a fixed size
target region simplifies things.
I discovered that the version of Toadflax that I uploaded on 8 June 2022 had a bug which meant that
the transpose options were incorrectly displayed. I did not get to the bottom of this, but it seemed to
go away when I re-compiled the code, so I have uploaded a new version today (13 June 2022) which
looks to have fixed this.
By default, programs that turn abc notation into stave music will turn
one line of abc notes into one line of stave music.
However, if a line of abc notes ends with '\', (generally called "the
continuation character"), then a single line of the stave music is
generated from the abc notes in the first line followed by the abc notes
in the second line.
The '\' continuation character may be familiar to a programmer who writes
bash scripts or Makefiles, in which it is used to indicate that conceptually
the next line is to be concatenated to the end of the current line before
being further processed. However, in abc notation it is slightly different
because the concatenation occurs in going from the line of abc notes to a
line of stave music. For simple cases, just joining together the text of the
two abc lines would produce the correct output, but if there are intervening
fields, for example an M: meter change as in the example below, then the
joining cannot be done.... read more
Toadflax and Tabctoabc (clone of abc2abc) now report where an error
has occurred in a line of music by printing out the line with *** inserted
at the point where the error was detected together with the error
message. This should make it easier to find and fix problems in the abc,
I have added the source code for Toadflax 2 to the code repository, so that you can
build either the original Toadflax with "make toadflax" or Toadflax 2 with "make toadflax2".
Toadflax 2 is a rewrite of the graphical part of the code so that it uses the python tkinter
library to produce the graphical user interface rather than GTK. The main reason for doing
this is to make Toadflax easier to port to other operating systems. I have also used the
port of abcm2ps from the abcCairo project to render music. As in the original Toadflax,
it is possible to display just the music without the abc-editing window. Also as in the original
Toadflax, there is a range of options for scaling up or down the displayed music.... read more
I have added a new feature to Toadflax and also Tabctoabc, the clone
of abc2abc built around the Toadflax version of the abc2abc code. The
new feature is the ability to complete repeats. It is selected by a -R flag
in Tabctoabc and uses a fairly simple algorithm. If it finds a start repeat
with no matching end repeat, it tries to add the end repeat. Likewise, if
it finds an end repeat with a missing start repeat, it tries to add a
start repeat. This deals with the most common problems seen in abc
and in notated music. Inevitably there will be cases where the program
encounters a repeat problem that it cannot fix or where the fix will not
be what a musician familiar with the genre might have expected; the
aim is to be helpful in most cases rather than providing a definitive
correction.... read more
Toadflax is built using GTK+3, a widget toolkit. There are a number of widget toolkits available. I chose GTK+3 because it supports the Cairo graphics library, because it as a C interface and because it claimed to be portable to other systems (the most important ones being Microsoft Windows and Apple Mac). I had hoped that other people would be able to port it to other systems without too much difficulty. However, two people have attempted the port to Microsoft Windows without success, so it appears that porting the code is harder than I had hoped. There are other programs using GTK+ that have been ported to Windows, notably GIMP, but the details I found on the internet indicate that it relies at least partly on the older GTK+2. The GTK+ toolkit is being continually developed and I am hoping that when the ported version of GTK+ for Windows catches up with the version used by Toadflax, the port will work and be a simple operation. For anyone who wants to have a go at doing the port to Windows, the recommended route is to use MSYS2 https://www.msys2.org/ .
Over time, I have attempted to re-structure the code so that as much
of it as practically possible is arranged into modules. The goal is that
a module is a re-usable bit of code, or at least a chunk of code that
can be examined and understood without too much difficulty. The term "module"
does not have a precise formal definition, but by "module" in the context
of the toadflax source, I mean a piece of code with the following properties:... read more