From strandh at labri.fr Wed Mar 1 00:06:21 2006 From: strandh at labri.fr (Robert Strandh) Date: Wed, 1 Mar 2006 01:06:21 +0100 Subject: [gsharp-devel] rotate-notehead on rests In-Reply-To: References: Message-ID: <17412.58749.750742.654667@serveur5.labri.fr> Christophe Rhodes writes: > > People might also be interested to compare a screenshot I took this > morning, , > with the opening of the lilypond score I produced a few years ago, > . > Entering the notes for this was a true breeze; the lyric entry mode > needs some more work (and so does lyrics display, actually), but > overall I think it's promising. It is indeed, especially since the Lilypond version has numerous rendering flaws, such as stems that are not properly attached to their corresponding note heads, notes heads that are not positioned the same way on different staff steps, ugly `bumps' in some ties (despite the higher resolution), etc. -- Robert Strandh --------------------------------------------------------------------- Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp. --------------------------------------------------------------------- From strandh at labri.fr Wed Mar 1 00:16:38 2006 From: strandh at labri.fr (Robert Strandh) Date: Wed, 1 Mar 2006 01:16:38 +0100 Subject: [gsharp-devel] rotate-notehead on rests In-Reply-To: References: Message-ID: <17412.59366.564540.803459@serveur5.labri.fr> Christophe Rhodes writes: > > At some point in the reorganization, C-r stopped working on rests. > Attached is a patch which gets it working again. (My tree is > otherwise mutant from too many key signatures, so please apply :-) Patch applied. Thanks! -- Robert Strandh --------------------------------------------------------------------- Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp. --------------------------------------------------------------------- From csr21 at cam.ac.uk Wed Mar 1 10:16:31 2006 From: csr21 at cam.ac.uk (Christophe Rhodes) Date: Wed, 01 Mar 2006 10:16:31 +0000 Subject: [gsharp-devel] 8va treble clef In-Reply-To: (Christophe Rhodes's message of "Tue, 28 Feb 2006 17:11:38 +0000") References: Message-ID: Christophe Rhodes writes: > Attached is a patch implementing a treble8 clef (which is a treble > clef with implicit octaviation). I'm not really proposing this for > direct inclusion; I haven't designed a glyph for it, for a start. Apart from the glyph problem, which can be finessed for now (because in at least some versions of music typesetting an octave-treble clef is set using the same glyph as the normal treble clef, and it is left to context for the readers to work out that the octave needs to be adjusted), I'm happy with this (attached) patch. It introduces three new functions: F-POSITION, B-POSITION and BOTTOM-LINE, of which the first two aren't in fact quite general enough but simply replicate the current functionality. I would be wary of documenting these functions, as I suspect that a final clef protocol will look slightly different. If these caveats are acceptable, please apply :-) -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: treble8-2.diff URL: -------------- next part -------------- Cheers, Christophe From csr21 at cam.ac.uk Wed Mar 1 10:42:31 2006 From: csr21 at cam.ac.uk (Christophe Rhodes) Date: Wed, 01 Mar 2006 10:42:31 +0000 Subject: [gsharp-devel] make tempo a segment attribute Message-ID: Hi, Les Cris de Paris, as I notate it, is taken at a tempo of approximately 80 semibreves per minute -- about four times faster than the default playback setting in gsharp. So I implemented (attached) setting the tempo for playback on a per-segment basis, which I think fits in with the notion of segments as large-scale musical objects. I haven't implemented a user interface beyond the simple command; eventually, a tempo marking might be displayed as a metronome mark or (for the second and subsequent segments) as a tempo relationship. -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: tempo.diff URL: -------------- next part -------------- Cheers, Christophe From azervopoulos at gmail.com Wed Mar 22 17:34:19 2006 From: azervopoulos at gmail.com (Thanassis Zervopoulos) Date: Wed, 22 Mar 2006 19:34:19 +0200 Subject: [gsharp-devel] Can I import *.midi or *.mid or a sequence from CM in gsharp Message-ID: Hi, I've tried to save some notes and I saw that the format wasn't midi or mid and I have some music recorded with CM (portmidi-record),I'm not sure if I can pass a seq or even a midi,mid file directly to gsharp Thanx in advance -------------- next part -------------- An HTML attachment was scrubbed... URL: From strandh at labri.fr Thu Mar 23 01:28:26 2006 From: strandh at labri.fr (Robert Strandh) Date: Thu, 23 Mar 2006 02:28:26 +0100 Subject: [gsharp-devel] Can I import *.midi or *.mid or a sequence from CM in gsharp In-Reply-To: References: Message-ID: <17441.63930.564407.224105@serveur5.labri.fr> Hello, Thanassis Zervopoulos writes: > I've tried to save some notes and I saw that the format wasn't midi or mid > and I have some music recorded with CM (portmidi-record),I'm not sure if I > can pass a seq or even a midi,mid file directly to gsharp No you can't. The simple reason is that MIDI is both more general and less general than classic music notation. It is more general in that it encodes performance aspects that are typically not encoded in the written score (such as short pauses between notes or, on the contrary, short overlaps between two adjacent notes). It is less general in that it cannot distinguish between a sharp note and a flat version of one note higher and many other aspects of traditional music notation. -- Robert Strandh --------------------------------------------------------------------- Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp. --------------------------------------------------------------------- From csr21 at cam.ac.uk Thu Mar 23 09:22:27 2006 From: csr21 at cam.ac.uk (Christophe Rhodes) Date: Thu, 23 Mar 2006 09:22:27 +0000 Subject: [gsharp-devel] Can I import *.midi or *.mid or a sequence from CM in gsharp In-Reply-To: (Thanassis Zervopoulos's message of "Wed, 22 Mar 2006 19:34:19 +0200") References: Message-ID: "Thanassis Zervopoulos" writes: > ? I've tried to save some notes and I saw that the format wasn't > midi or mid and I have some music recorded with CM > (portmidi-record),I'm not sure if I can pass a seq or even a > midi,mid file directly to gsharp Not without doing some work. (And automatic conversion is unlikely ever to be fully satisfactory, for reasons detailed in Robert's reply). However, writing (for want of a better term) import filters into gsharp (and export, though we have export to MIDI already) is clearly important for all sorts of reasons, even if the results of the filter need to be touched afterwards. As it happens, I was discussing just two days ago about what would need to be done to write an "interpreter" for OPND files, which are a sequence of (Onset, PitchName, Duration) triples. This is one step closer than a MIDI importer, as the "spelling" of the notes is included in the OPND format, whereas it isn't in MIDI: a C-sharp and a D-flat have the same MIDI pitch representation, whereas on a score they are noticeably different. Just to get you started, though, here is a toy example: consider a music notation encoding which can represent one voice of crotchets (quarter notes) the white notes between a4 and g5: the opening of Tallis' second lamentation might be represented in this format as the string "aabcdeea". (I hope that everyone realises that this format is not a particularly good one :-). Then code to convert/import/interpret this representation within gsharp is: (in-package :gsharp) (define-gsharp-command (interpret-string :name t) ((s 'string)) ;; no error checking (dotimes (i (length s)) (let ((pitch (+ 23 (digit-char-p (char s i) 36)))) (insert-note pitch (if (upper-case-p (char s i)) *current-cluster* (insert-cluster)))))) and indeed this code includes some extra bonus easter egg features! Generalizing this to OPND files is relatively straightforward; generating OPND representations from MIDI files involves a certain amount more research, but there are some algorithms which perform quite well, so getting pitch names is possible. I believe that performing acceptable voicing from arbitrary MIDI files is quite hard. Cheers, Christophe