David Lewis [Tue, 19 Apr 2011 13:24:53 +0000]
Basic undo implemented for simple operations.
David Lewis [Thu, 3 Feb 2011 14:16:58 +0000]
Time signatures
David Lewis [Tue, 25 Jan 2011 09:09:13 +0000]
Adding more MXML dtds for checking
David Lewis [Fri, 22 Oct 2010 11:17:17 +0000]
Mid-staff clefs
David Lewis [Wed, 1 Sep 2010 15:18:35 +0000]
MXML fixes
David Lewis [Tue, 31 Aug 2010 11:47:13 +0000]
Preparation for the ability to set horizontal spacing. Two types of horizontal positioning -- an offset from the default position (which doesn't affect the flow) and a padding (which does).
Also some package exports.
David Lewis [Thu, 19 Aug 2010 11:08:08 +0000]
Settable inactive colour (to be set, for example, by medium, or based on taste)
David Lewis [Thu, 19 Aug 2010 14:44:54 +0000]
COM-JUMP-TO-HERE and click to move cursor interface
David Lewis [Thu, 19 Aug 2010 14:44:54 +0000]
Basic button support
David Lewis [Fri, 13 Aug 2010 09:28:53 +0000]
Add images/icon buttons for CLIM
David Lewis [Mon, 16 Aug 2010 14:21:41 +0000]
Draw current element now actually draws current element and in
approximately the right place. It's also now calling a
DRAW-CURRENT-ELEMENT generic function so that it can be expanded for
notations and objects other than clusters.
David Lewis [Thu, 12 Aug 2010 08:00:18 +0000]
Zoom functionality (and change of raster changing function names so that COM-ZOOM-IN means what it should)
David Lewis [Wed, 11 Aug 2010 20:18:00 +0000]
Colour current note
David Lewis [Wed, 11 Aug 2010 13:49:38 +0000]
Reversed version of ISTATE-ROTATE-NOTEHEADS, associated with keystrokes #\i #\g
David Lewis [Wed, 11 Aug 2010 10:52:30 +0000]
Spelling error of slipce for slice in cursor.lisp and excess of com-more-sharps in modes.lisp
David Lewis [Tue, 31 Aug 2010 10:25:35 +0000]
File dialog box (new dependency on CLIM-LISTENER)
Christophe Rhodes [Wed, 16 Jun 2010 11:18:47 +0000]
more flexible pagination
New generic function SYSTEMS-PER-PAGE
Christophe Rhodes [Wed, 16 Jun 2010 11:13:50 +0000]
MusicXML fixes
Motivated by use as a webtoy:
* be careful in PCDATA not to take the node-value of something that's not
a node;
* attributes in the wild aren't always the first element in the bar; search
harder for them;
* new function PARSE-MXML-CLEF;
* new function GET-DTD-PATH.
David Lewis [Mon, 25 Jan 2010 21:15:24 +0000]
Rastral size change with + and -
Christophe Rhodes [Wed, 16 Jun 2010 11:11:06 +0000]
Add .gitignore file
Robert Strandh [Mon, 7 Feb 2011 08:46:51 +0000]
Added install instructions using Quicklisp.
Christophe Rhodes [Sun, 17 May 2009 16:11:57 +0000]
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.
David Lewis [Mon, 20 Apr 2009 15:04:47 +0000]
Basic time signature support. Only some sigs supported and spacing is basic.
Key and time signatures now share a staffwise-elements slot in the stave.
Christophe Rhodes [Wed, 19 Nov 2008 16:05:13 +0000]
Export make-key-signature, key-signatures from gsharp-buffer
Christophe Rhodes [Wed, 19 Nov 2008 15:45:46 +0000]
Remove gsharp-buffer:: prefix from key-signature (since it's exported).
Robert Strandh [Mon, 17 Nov 2008 10:45:22 +0000]
Time signature digit 8.
Robert Strandh [Mon, 17 Nov 2008 07:44:00 +0000]
Time signature digit 7.
Robert Strandh [Mon, 17 Nov 2008 06:40:26 +0000]
Time signature digit 6.
Robert Strandh [Mon, 17 Nov 2008 05:49:28 +0000]
Time signature digit 5.
Robert Strandh [Sun, 16 Nov 2008 06:36:03 +0000]
Time signature digit 4.
Robert Strandh [Sat, 15 Nov 2008 18:22:23 +0000]
Time signature digit 3.
Robert Strandh [Sat, 15 Nov 2008 17:20:07 +0000]
Time signature digits 1 and 2.
Robert Strandh [Sat, 15 Nov 2008 17:19:38 +0000]
Make it possible to use cycle after --.
Robert Strandh [Tue, 29 Apr 2008 07:54:24 +0000]
Removed all the :shift modifiers because they are no longer necessary
thanks to Troels Henriksen fixing McCLIM.
Christophe Rhodes [Sat, 9 Feb 2008 18:43:13 +0000]
MusicXML support for staccato and tenuto import and export.
Christophe Rhodes [Sat, 9 Feb 2008 18:21:00 +0000]
One or two more stylistic changes.
Christophe Rhodes [Sat, 9 Feb 2008 18:17:20 +0000]
Minor MusicXML edits.
Christophe Rhodes [Sat, 9 Feb 2008 16:58:35 +0000]
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".
Christophe Rhodes [Sat, 9 Feb 2008 16:54:33 +0000]
Comment fixes in MusicXML code.
David Lewis [Fri, 8 Feb 2008 16:50:57 +0000]
Preserve some stem direction decisions in MusicXML
David Lewis [Fri, 8 Feb 2008 16:48:54 +0000]
Support for layers/staves in MusicXML parts
David Lewis [Fri, 8 Feb 2008 16:47:55 +0000]
Added octave treble support in musicxml import/export
Troels Henriksen [Wed, 30 Jan 2008 09:59:25 +0000]
Added the ESA menus the Gsharp menu.
Christophe Rhodes [Tue, 15 Jan 2008 15:43:52 +0000]
Remove name conflict from gsharp package; now gsharp loads.
(It can't yet handle entering notes; fix in mcclim forthcoming.)
Troels Henriksen [Tue, 15 Jan 2008 07:44:37 +0000]
Fixed name conflict.
Troels Henriksen [Wed, 19 Dec 2007 11:06:03 +0000]
Provide default values for commands expected to accept numeric
arguments.
Robert Strandh [Sun, 2 Dec 2007 05:52:53 +0000]
Patch allowing Gsharp to compile and start on OpenMCL again.
Thanks to David Lichteblau.
Christophe Rhodes [Sun, 25 Nov 2007 14:19:29 +0000]
Fix gsharp-common :new-process t
We need a lexical variable to use inside RUN, which may be called inside
a new thread.
(Also, we might need to have bound *ESA-INSTANCE*, so let's do that
proactively.)
Christophe Rhodes [Thu, 22 Nov 2007 09:33:03 +0000]
Make the Print Buffer To File command output eps if the pathname type is
"eps".
No error-checking for multiple pages or anything sensible like that.
Christophe Rhodes [Wed, 21 Nov 2007 19:22:03 +0000]
Define a method on esa-current-buffer, not frame-current-buffer, after
Troels' reworking.
Also rewrite BUFFERS method so that if the window doesn't yet have a
view nothing bad happens.
This allows writing gsharp:gsharp and gsharp:edit-file in terms of
executing commands on an (adopted) gsharp frame, reducing code
duplication and also fixing a bad bug in gsharp:edit-file, which would
destroy the layer/staff structure if the file's first layer spanned
multiple staves.
Magnus Jonsson [Sat, 27 Oct 2007 02:10:55 +0000]
Implemented play-buffer and made play-layer available in play menu
Robert Strandh [Mon, 22 Oct 2007 11:45:36 +0000]
I moved melody-related functionality from buffer.lisp to a new file.
Robert Strandh [Mon, 22 Oct 2007 10:03:40 +0000]
Got rid of the print-character slot which was used in the old I/O
mechanism.
Robert Strandh [Mon, 22 Oct 2007 09:39:23 +0000]
Factored out lyrics from buffer.lisp to a new file.
Robert Strandh [Mon, 22 Oct 2007 07:13:50 +0000]
Implemented a simplified I/O mechanism with less redundancy.
Magnus Jonsson [Sat, 20 Oct 2007 18:41:25 +0000]
Report an error to the user if the midi-player fails (sbcl only)
Christophe Rhodes [Thu, 18 Oct 2007 15:02:47 +0000]
Add MusicXML support. Initial work from Brian Gruber (funded by
Google's Summer of Code); subsequent development by Christophe Rhodes.
It's far from perfect now, but it needs checking in so that people can
play with it. It adds dependencies (puri and cxml) to gsharp; if this
is a problem, we could make gsharp-mxml a separate system.
Git logs (from git tree at
<http://www-jcsu.jesus.cam.ac.uk/~csr21/git/gsharp-mxml/.git>) follow:
commit
994cd15ec9f480be41515e699f22e7de1687d0ca
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Mon Sep 24 13:19:41 2007 +0100
Add a restart to the same-duration case. It's not good enough, but it allows
interactive fixing key signatures in the middle of the bar.
commit
cdc2098fac5399303e9515bc81ea65020ec8f109
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Wed Sep 19 11:07:28 2007 +0100
Only add durations from rhythmic elements.
commit
acc6cb410cd55dfe59eb30fe608b101a62651ae9
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Wed Sep 19 10:45:12 2007 +0100
Whoops. Fix export of notes with no displayed accidentals (from
overzealous alteration of CASE -> ECASE
commit
dd8d72cac434a8c5a1932aa46db6447e08d9b6ad
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Wed Sep 19 10:41:09 2007 +0100
Support for longs in MusicXML (import and export)
commit
eab440b56b086e766dbd405a3fea44d9976f1a1f
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Wed Sep 19 09:16:07 2007 +0100
Long ("lunga") patch from HEAD
commit
8cb34a4879ebb4dce06d8b99da761dfa6ad24cf9
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Tue Sep 18 15:43:51 2007 +0100
Support semi- and sesqui- accidentals
commit
6ba8208d1f8475552a95f35a5e896248110b0efd
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Tue Sep 18 15:25:16 2007 +0100
Really support breves (and breve rests) -- on output too.
commit
a9c36278de0145c12f34123a29815809030b97c2
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Tue Sep 18 15:17:09 2007 +0100
Slightly batched commit (several changes).
* support :breve noteheads
* better stringcase macro (and use it)
* temporarily hack in "full" = "breve" for Goldsmiths use
* use ECASE in one or two places to remove compiler warnings.
commit
3a3b980576f0d09ddee4de12f6f7b260932a5552
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Tue Sep 18 15:14:54 2007 +0100
Slightly friendlier (with friends like this...) Import and Export commands.
Sets the filepath and name of the buffer on import; sensible export default
pathname.
commit
7d72a2a4a28f9668271189ebaf862518ada34877
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Tue Sep 18 15:13:31 2007 +0100
Whitespace
commit
b497d6f5111f20f5e8ac9a059578d3caaab1b832
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Mon Sep 17 21:33:29 2007 +0100
space requirements fix from HEAD
commit
65d173efbcfa78e5edaf1adb9bceb0f7d619002d
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Mon Sep 17 12:04:08 2007 +0100
Update to Brian Gruber's version of 17th September
commit
91d98d9e2a8d69418edd264ab6293a2f1dbc5a9f
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Mon Sep 17 11:54:53 2007 +0100
Brian Gruber's patch of August 20th
Christophe Rhodes [Tue, 18 Sep 2007 21:19:03 +0000]
Support long ("lunga") notes and rests.
It's a bit weird, because the lunga has the same notehead as a breve,
but also has a stem; so having a NOTEHEAD of :long is a bit of a
misnomer. Hey ho.
Christophe Rhodes [Mon, 17 Sep 2007 20:30:59 +0000]
More likely space requirements handling. (More likely to actually work,
that is. Thanks to Athas and hefner for the ideas and the debugging
patience.)
Christophe Rhodes [Fri, 14 Sep 2007 15:57:21 +0000]
Allow clefs to be put on lines 0 and 8 of a staff. (Necessary for the
Soprano C clef, found in early music). Note that key signature
display code will probably have to be reworked to cater for such
outlandish clefs.
Christophe Rhodes [Fri, 14 Sep 2007 15:52:57 +0000]
Reverse the notehead rotation order for C-r. I apologise if this
destroys someone's finger macros, but the current order is too illogical
in the default state.
Christophe Rhodes [Fri, 14 Sep 2007 15:48:05 +0000]
Support for breves and breve rests.
Robert Strandh [Thu, 30 Aug 2007 03:04:56 +0000]
Fixed the problem with stem direction for a beam group. It was just a
typo: instead of calling bot-note-pos to get the position of the
bottom note of each cluster, top-note-pos was called.
Robert Strandh [Wed, 29 Aug 2007 15:42:57 +0000]
Fixed the first problem reported by Taylor Campbell, namely that the
locations of certain notes compared to the stem are not computed
correctly.
The main problem was that compute-element-parameters was called only
for elements that have been modified. However, those parameters might
change as a result of beaming with other elements, so we need to call
compute-element-parameters on all elements.
While searching for the cause of this problem, I also noticed that a
stem direction that was forced to change as a result of beaming with a
subsequent element (such that the stem direction for the entire beam
group was different from the nominal one for the cluster) did not
return to its nominal stem direction when the subsequent element was
deleted. The reason for this problem was that
compute-final-stem-direction was not called unless any of the elements
of the beam group was marked as modified. When the subsequent element
was removed, none of the remaining elements was marked that way. The
fix was to always call compute-final-stem-direction.
I also discovered another problem from Taylor's example, namely that
sometimes, the stem direction of a beam group in which each cluster
has the same nominal stem direction can be different from the nominal
stem direction of the individual clusters. The reason for this
problem seems to be that the algorithm for computing the stem
direction of a beam group is just wrong. I am still working on this
problem.
Christophe Rhodes [Mon, 20 Aug 2007 08:16:36 +0000]
Mention the need for a separate midi package in INSTALL documentation.
Robert Strandh [Mon, 20 Aug 2007 07:14:35 +0000]
Fixed beam-drawing problem for staff-line distances other than 6.
Christophe Rhodes [Wed, 8 Aug 2007 10:52:55 +0000]
Alter the ending of the humoresque slightly.
Christophe Rhodes [Tue, 7 Aug 2007 14:00:09 +0000]
Better final accidentals:
* look back through the current bar / layer, no further than the
currently active key signature, to find a note on the same staff with
the same pitch: if there is one, and the accidentals are the same,
no need to have an accidental displayed.
Remaining to do:
* more or less any editing action should invalidate the
already-computed final accidentals of the current bar. At present,
final accidentals aren't recomputed often enough.
Christophe Rhodes [Tue, 7 Aug 2007 11:06:09 +0000]
Printing to file.
It's still somewhat hacky, but the worst of it is gone:
* light glyphs ink is taken from the view, so we can construct a dark
ink for light glyphs;
* code to draw a single page is shared between the printing and
screen-drawing routines;
* new-page is called the right number of times;
* the user is prompted for a filename (with a sensible default).
Remaining stuff to do:
* factor out a little bit more shared code between draw-buffer and
print-buffer;
* when creating the view, copy the current view;
* be cleverer about the medium transformation.
Christophe Rhodes [Mon, 6 Aug 2007 19:57:37 +0000]
Move the dot a little bit rightwards. Looks better, to my eye...
Christophe Rhodes [Fri, 27 Jul 2007 22:34:31 +0000]
Make the light glyphs ink a function of the view, allowing for views of
the same class but with all-black printing (e.g. for noninteractive
Postscript or HTML Canvas output.)
Make barlines be drawn at integral coordinates.
Christophe Rhodes [Fri, 27 Jul 2007 22:31:04 +0000]
Better tie drawing:
Tie direction is taken from the final stem direction of the first note.
This is not actually right, but it's incrementally better than ignoring
the stem directions completely.
Draw a stub tie forward if no matching note is found. (This needs to
happen for unpaired backwards ties too, but the way DRAW-TIES is
currently structured makes that mildly tricky.)
Christophe Rhodes [Fri, 27 Jul 2007 22:28:05 +0000]
Fix a minor UI annoyance: when switching layers, prefer the end of a bar
rather than the start to put the cursor, so that the common case of
parallel editing puts the cursor at a sensible insertion point.
Christophe Rhodes [Fri, 27 Jul 2007 16:47:50 +0000]
whitespace
Christophe Rhodes [Fri, 27 Jul 2007 16:34:10 +0000]
refactor DRAW-BUFFER a little bit, potentially making it easier for
other ways of drawing buffers (e.g. to canvas or postscript)
Christophe Rhodes [Sat, 21 Jul 2007 16:49:34 +0000]
Ignore .fasl files
Robert Strandh [Wed, 18 Jul 2007 07:51:54 +0000]
Gave the stealth mixin code the right name.
Removed unused variable to remove a compiler warning.
Christophe Rhodes [Tue, 17 Jul 2007 06:36:32 +0000]
Change convolute -> convolve to go with this morning's
mcclim/bezier.lisp commit.
Christophe Rhodes [Thu, 12 Jul 2007 16:04:49 +0000]
Quick bandage for editing scores with non-fiveline (i.e. lyrics) staves:
don't try to find a key signature. (When the number of staff types
expands, we will need a better protocol...)
Christophe Rhodes [Wed, 11 Jul 2007 15:28:13 +0000]
Remove bezier.lisp, as it's part of mcclim now.
Christophe Rhodes [Fri, 6 Jul 2007 14:16:20 +0000]
Reducing my deviation from upstream, part $n$: M-: support.
Christophe Rhodes [Thu, 5 Jul 2007 21:13:03 +0000]
Alright, let's try this: more correct key signatures, I hope.
The major change to the protocol is that REMOVE-ELEMENT takes as a
required argument the bar as well as the element; this allows more
symmetric methods to be written for the various stealth mixin bits of
functionality.
Key signatures are elements, as before, within a layer. However, they
are also kept on a list sorted by sequence in a slot of the staff, and
KEYSIG is responsible for checking the relevant staff for other key
signature elements. Editing actions or commands are also responsible
for maintaining this list sorted in the right order. New almost-correct
function for testing the temporal-and-logical ordering of elements.
Drawing code now computes the correct key signature for the each staff;
linebreaking is done with a conservative assumption for how wide the key
signature will be.
Please test.
Magnus Jonsson [Sat, 30 Jun 2007 16:50:34 +0000]
Fixed a few typos.
Robert Strandh [Sat, 30 Jun 2007 14:15:26 +0000]
Fixed some unfortunate choice of wording.
Magnus Jonsson [Thu, 28 Jun 2007 14:36:14 +0000]
mcclim bug workaround in key bindings for microsharper/microflatter
Magnus Jonsson [Thu, 28 Jun 2007 13:56:53 +0000]
Completed implementation of quartertone playback for regular temperaments. Fixed keybinding bug for microsharper.
Magnus Jonsson [Thu, 28 Jun 2007 12:58:17 +0000]
Fixed redundancies in play.lisp pointed out by Stas Boukarev
Christophe Rhodes [Thu, 21 Jun 2007 11:14:25 +0000]
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.
Christophe Rhodes [Tue, 19 Jun 2007 10:01:37 +0000]
a above middle c is 69, not 67.
Magnus Jonsson [Mon, 18 Jun 2007 15:18:17 +0000]
Added support for regular temperaments
Magnus Jonsson [Fri, 15 Jun 2007 16:26:14 +0000]
Changed test.mid to /tmp/test.mid in play.lisp, removed code duplication calculating durations of bars
Christophe Rhodes [Sun, 10 Jun 2007 08:15:28 +0000]
select-layer-by-layout commands and keybindings (C-down and C-up for
now)
Christophe Rhodes [Sun, 10 Jun 2007 08:10:03 +0000]
When drawing the gsharp cursor, also scroll the viewport if necessary so
that the cursor remains on the screen.
Currently this is a little ugly in UI, because of slightly nasty
discontinuities in the drawing process, and pretty ugly in the code.
FIXME commentaries are noted
Christophe Rhodes [Thu, 7 Jun 2007 10:21:47 +0000]
Placement of semibreve rests when they are the only element in the bar
(conventionally meaning whole-bar rest): place them in the middle of the
bar. The semantic interpretation (e.g. by Play Segment) is unlikely to
respect this conventional meaning currently (noticeable if you use these
whole-bar rests in a piece in 3/4, say)
Christophe Rhodes [Thu, 7 Jun 2007 09:26:04 +0000]
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.
Christophe Rhodes [Wed, 6 Jun 2007 13:16:02 +0000]
Make things a bit less likely to crash: only do the full readable
printing if *print-circle* is true; otherwise just do a normal
print-unreadable-object (which will handle the *print-readably* correct
behaviour for us).
Christophe Rhodes [Sat, 2 Jun 2007 15:14:40 +0000]
Fix for :name foo being printed before the class name in
print-gsharp-object, reported by Brian Gruber.
Christophe Rhodes [Wed, 31 Jan 2007 15:25:04 +0000]
Depend on external version of midi.lisp rather than bundling it.
Christophe Rhodes [Sat, 20 Jan 2007 17:09:36 +0000]
New McCLIM release; no longer need ESA from climacs.
Robert Strandh [Wed, 17 Jan 2007 12:21:01 +0000]
Added a few comments