Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
Slightly rudimentary support for view/buffer handling (C-x b and C-x k) The major thing that needs fixing is being currently unable to name and refer to views with a sensible (unique) string name.
Removed all the :shift modifiers because they are no longer necessary thanks to Troels Henriksen fixing McCLIM.
Work-in-progress hooks for drawing routines, used for now for tenuto and staccato articulation marks. The quality of the graphical rendering of the marks is not really up to scratch; horizontal placement seems to be off by somewhere between half and one pixel, and of course a note with both marks on at once gets an ugly graphical clash. As I say, "work in progress".
Reducing my deviation from upstream, part $n$: M-: support.
mcclim bug workaround in key bindings for microsharper/microflatter
Completed implementation of quartertone playback for regular temperaments. Fixed keybinding bug for microsharper.
Support for semi/sesqui sharp/flat. * don't declare the type of the accidentals slot any more; we can put that back in a little, after we work out a declarative way of defining all properties of accidentals. * microsharpen and microflatten commands and functions; define sharpen and flatten in terms of those (and knowing which accidentals are the tonal ones). Keybindings for the commands. * a more declarative table-based system for kerning accidentals, along with the ability to specify a per-glyph default (and a default default). Choose a sensible default default; also alter the :sharp/:sharp table when +4 steps away, as the previous value was colliding a little too much. * support for playing the semi accidentals in equal temperament. No support in linear temperament, as I don't know what they mean. * glyphs defined with a little too much liberal cut'n'paste. Some FIXMEs note the essential differences between the related glyphs.
select-layer-by-layout commands and keybindings (C-down and C-up for now)
Somewhat hacky motion-by-layout commands (line- and page-based). These was by far the most annoying motion commands to be lacking when actually editing scores, in my opinion; C-a and C-e are absolutely wired into my fingers. Future candidates for inclusion: motion by layer (ideally in a way that's related to the layout, so that in the common case where there is one layer per staff the Right Thing happens); motion by note-in-associated-layer (lyrics). Also remove C-h binding for delete-current-element, and put Backspace in instead; this lets the ESA help bindings work.
Make sure the file ends with a newline. Also, untabify to make it easier to edit with Climacs.
Implemented a name change suggested by Magnus Johansson: Insert Measure Bar -> Insert Barline
Merge keysigN patch, with all its attendant horribleness.
New commands: com-octave-up and com-octave-down that work for clusters, bound to Meta-U and Meta-D. They move the current note up/down by an entire octave. These commands are useful when the automatic pitch follower gets it wrong.
Make com-up and com-down work for rests as well.
Implemented commands to go to the beginning and to the end of the score, bound to M-< and M-> respectively.
Fix M-h in lyrics mode
Make the Measure menu work again; have only one definition of com-forward/backward-measure. Document one or two commands; make com-erase-element take a numeric prefix parameter.
Movement by measure, bound to M-C-f and M-C-b.
Use the ESA help table. (Note that since we define a command for C-h, the default esa bindings are shadowed. The extended commands work, though.)
Introduced a new command table `rhythmic-table' that contains commands that are common for all rhythmic elements. `cluster-table' and `lyrics-table' now inherit from `rhythmic-table'. Moved some key bindings around to more appropriate command tables.
Cleaned up some dead code.
Added a new package and a new file ESA-BUFFER allowing buffers to be named, to be associated with a file name, and to have a `needs-saving' and a `read-only' flag. Added a new package and a new file ESA-IO containing application-independent functionality to create buffers from files, and to save buffers to files. This package also supplies filename completion. Most of the code was adapted from Climacs. Abstracted out all Gsharp-specific I/O to ESA-IO. In particular, this means that we now have commands such as C-x C-s, and C-x C-w, which we didn't before. The old I/O code is still there. Cleanup is next.
Reorganized the command tables so that there are command tables that are specific to element types. Implemented find-applicable-gsharp-command-table that determines a command table based on the layer the cursor is in and (if any) the current element. Added `tie-left' and `tie-right' accessors to notes and lyrics elements and commands for modifying the ties. Ties are not rendered yet.
Allow capital letters in lyrics.
Fixed a bug in esa.lisp that made numeric arguments not work. Error messages are now displayed in the minibuffer. Some commands like forward-element, backward-element, and delete-element now accept numeric arguments. Prepared for incremental redisplay by changing inheritance of pixmap records. This is nontrivial, though, and will require some more thinking about. The best thing would be to fix McCLIM, but that looks nontrivial as well.
fixed some minor problems
Climacs is now an ESA (Emacs-style application) using the new package that was abstracted out of Climacs.
Lyrics input now allows for accents, provided that your keyboard is capable of generating dead keys for these accents. It only works for X11 at the moment, I would think. The way I do it is not great, since now I get messages about missing commands for the control keys. I have to think of a better way of doing it. Loading a file now calls select-layer so that the appropriate mode is selected. Loading the bach score with lyrics now immediately lets you edit the lyrics.
Gsharp definitely has lyrics. When a lyrics layer is selected, the ordinary alphabetic keys append characters to the preceding lyrics element. use C-Space to insert a new lyrics element. Use C-h to erase the last character of a lyrics element. It's a bit clunky, but it works. I seriously doubt the full power of Goatee is needed to edit lyrics. I noticed that (probably unintentionally) McCLIM can handle Unicode texts in the form of vectors of integers to draw-text. It probably just passes them on to the port-specific functions, and it happens to work with clx. It probably won't work on all backends, but it would be nice if it did. The default font on my machine can probably only do character codes up to 255, but with a good font, it should be able to do up to 65535. But right now, I can get the German national characters, which are needed for Bach. Check out the new file Scores/bach181-lyrics.gsh. In it, you will also notice that there is one place in which words overlap. To fix that (which is not just a lyrics problem, but also happens with clusters with many accidentals) Gsharp must learn to compute how much extra room an element might need, and adjust spacing accordingly, Unfortunately McCLIM does not handle input from a US-international keyboard, so I actually had to put in the ü's manually, but it should work for others. With lyrics, MIDI file generation is most likely broken, but I haven't checked that yet. It should just skip lyrics layers.
These current modifications are not in a good state yet. Some of them are terribly kludgy, but I do not think anything is broken. New files: modes.lisp containing key bindings sequence-dico.lisp: a dictionary that searches for objects associated with sequences (lists really). Utilities: Added some horribly kludgy Unicode support. Buffer: New types: lyrics-staff, melody-element, lyrics-element, melody-bar, lyrics-bar, melody-layer, lyrics-layer Layers are no longer ordered. Cursor: Removed functionality that used layer ordering. Gui: Removed commands that used layer ordering. Added new commands to navigate, insert, and delete layers. Factored out and improved command processing. Some menus in menu bar work better. Added new presentation methods and types. Still no support for typing lyrics, but you can see them if they are already in a .gsh file. Input state: It no longer contains the staff. Instead the current staff is the first in the list of staves in the current layer. Drawing: We can now draw lyrics. Score pane: Now has a lyrics-staff presentation type.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|