From 5d1d044e7477459682f16baa549257ebf26c65c0 Mon Sep 17 00:00:00 2001
From: Frederic Bron <frederic.bron@m4x.org>
Date: Thu, 15 Oct 2009 23:00:30 +0200
Subject: [PATCH] added new automatic accidental behaviours: neo-modern-voice and
 neo-modern-voice-cautionary

---
 Documentation/de/notation/pitches.itely |  243 ++++++++++++++++++++++-------
 Documentation/es/notation/pitches.itely |  236 +++++++++++++++++++++-------
 Documentation/fr/notation/pitches.itely |  255 +++++++++++++++++++++++--------
 Documentation/notation/pitches.itely    |  251 +++++++++++++++++++++++-------
 scm/music-functions.scm                 |   23 +++
 5 files changed, 767 insertions(+), 241 deletions(-)

diff --git a/Documentation/de/notation/pitches.itely b/Documentation/de/notation/pitches.itely
index 228b0d2..35358d1 100644
--- a/Documentation/de/notation/pitches.itely
+++ b/Documentation/de/notation/pitches.itely
@@ -1291,13 +1291,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1372,13 +1373,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1448,13 +1450,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1511,13 +1514,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1572,13 +1576,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1638,13 +1643,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1698,13 +1704,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1761,13 +1768,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1818,13 +1826,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1876,13 +1885,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1933,13 +1943,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1961,6 +1972,114 @@ musicB = {
 @end lilypond
 
 
+@item neo-modern-voice (neo-modern für Stimmeen)
+
+@funindex neo-modern-voice
+
+@cindex neo-moderner Versetzungszeichenstil pro Stimme
+@cindex Versetzungszeichenstil, neo-modern-voice
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>8 <fis a cis>
+      \change Staff = up
+      cis' cis
+      \change Staff = down
+      <fis, a> <fis a>
+      \showStaffSwitch
+      \change Staff = up
+      dis'4 |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'neo-modern-voice)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'neo-modern-voice)
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
+@item neo-modern-voice-cautionary
+
+@funindex neo-modern-voice-cautionary
+
+@cindex neo-moderner Versetzungszeichenstil pro Stimme mit Warnungen
+@cindex Versetzungszeichenstil, neo-modern-voice-cautionary
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>8 <fis a cis>
+      \change Staff = up
+      cis' cis
+      \change Staff = down
+      <fis, a> <fis a>
+      \showStaffSwitch
+      \change Staff = up
+      dis'4 |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'neo-modern-voice-cautionary)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'neo-modern-voice-cautionary)
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
 @item dodecaphonic (Zwölftonmusik)
 
 @funindex dodecaphonic
@@ -1993,13 +2112,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -2053,13 +2173,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -2113,13 +2234,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -2173,13 +2295,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
diff --git a/Documentation/es/notation/pitches.itely b/Documentation/es/notation/pitches.itely
index 03544ce..ac48d90 100644
--- a/Documentation/es/notation/pitches.itely
+++ b/Documentation/es/notation/pitches.itely
@@ -1267,13 +1267,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1347,13 +1348,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1420,13 +1422,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1481,13 +1484,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1543,13 +1547,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1607,13 +1612,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1667,13 +1673,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1730,13 +1737,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1789,13 +1797,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1845,13 +1854,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1901,13 +1911,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1928,6 +1939,107 @@ musicB = {
 }
 @end lilypond
 
+@item neo-modern-voice
+
+@funindex neo-modern-voice
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>8 <fis a cis>
+      \change Staff = up
+      cis' cis
+      \change Staff = down
+      <fis, a> <fis a>
+      \showStaffSwitch
+      \change Staff = up
+      dis'4 |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'neo-modern-voice)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'neo-modern-voice)
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
+@item neo-modern-voice-cautionary
+
+@funindex neo-modern-voice-cautionary
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>8 <fis a cis>
+      \change Staff = up
+      cis' cis
+      \change Staff = down
+      <fis, a> <fis a>
+      \showStaffSwitch
+      \change Staff = up
+      dis'4 |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'neo-modern-voice-cautionary)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'neo-modern-voice-cautionary)
+      \musicB
+    }
+  >>
+}
+@end lilypond
 
 @item dodecaphonic
 
@@ -1960,13 +2072,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -2020,13 +2133,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -2079,13 +2193,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -2138,13 +2253,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
diff --git a/Documentation/fr/notation/pitches.itely b/Documentation/fr/notation/pitches.itely
index e50c477..52955e2 100644
--- a/Documentation/fr/notation/pitches.itely
+++ b/Documentation/fr/notation/pitches.itely
@@ -1218,13 +1218,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1298,13 +1299,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1369,13 +1371,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1434,13 +1437,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1495,13 +1499,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1528,7 +1533,7 @@ musicB = {
 @cindex style d'altération @emph{modern}
 @cindex altérations multivoix
 @cindex modern accidental style
-@cindex voix pultiples et altérations
+@cindex voix multiples et altérations
 @cindex multivoix, altérations
 
 @funindex modern-voice
@@ -1561,13 +1566,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1620,13 +1626,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1682,13 +1689,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1738,13 +1746,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1795,13 +1804,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1851,13 +1861,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1878,6 +1889,124 @@ musicB = {
 }
 @end lilypond
 
+@item neo-modern-voice
+
+@cindex @emph{neo-modern-voice}, style d'altération
+@cindex style d'altération @emph{neo-modern-voice}
+@cindex altérations multivoix
+@cindex neo-modern-voice accidental style
+@cindex voix multiples et altérations
+@cindex multivoix, altérations
+
+@funindex neo-modern-voice
+
+Cette règle sert aux altérations dans de la musique polyphonique destinée
+autant à des musiciens différents qu'à quelqu'un qui lirait l'ensemble
+des voix.  Les altérations sont imprimées voix par voix comme avec le style
+@code{neo-modern} mais les autres voix dans le même contexte @code{Staff}
+en tiennent aussi compte.
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>8 <fis a cis>
+      \change Staff = up
+      cis' cis
+      \change Staff = down
+      <fis, a> <fis a>
+      \showStaffSwitch
+      \change Staff = up
+      dis'4 |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'neo-modern-voice)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'neo-modern-voice)
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
+@item neo-modern-voice-cautionary
+
+@funindex neo-modern-voice-cautionary
+
+Cette règle est indentique à @code{neo-modern-voice},
+mais les altérations de précautions sont imprimées,
+soit entre parenthèses (par défaut), soit en plus petit.
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>8 <fis a cis>
+      \change Staff = up
+      cis' cis
+      \change Staff = down
+      <fis, a> <fis a>
+      \showStaffSwitch
+      \change Staff = up
+      dis'4 |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'neo-modern-voice-cautionary)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'neo-modern-voice-cautionary)
+      \musicB
+    }
+  >>
+}
+@end lilypond
 
 @item dodecaphonic
 
@@ -1910,13 +2039,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1970,13 +2100,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -2028,13 +2159,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -2087,13 +2219,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
diff --git a/Documentation/notation/pitches.itely b/Documentation/notation/pitches.itely
index 7104785..3ffa528 100644
--- a/Documentation/notation/pitches.itely
+++ b/Documentation/notation/pitches.itely
@@ -1308,13 +1308,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1390,13 +1391,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1462,13 +1464,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1524,13 +1527,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1587,13 +1591,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1653,13 +1658,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1713,13 +1719,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1777,13 +1784,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1836,13 +1844,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1894,13 +1903,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1950,13 +1960,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -1978,6 +1989,122 @@ musicB = {
 @end lilypond
 
 
+@item neo-modern-voice
+
+@cindex neo-modern-voice accidental style
+@cindex accidental style, neo-modern-voice
+
+@funindex neo-modern-voice
+
+This rule is used for multivoice accidentals to be read both by
+musicians playing one voice and musicians playing all voices.
+Accidentals are typeset for each voice as with @code{neo-modern},
+but they are canceled across voices in the same @code{Staff}.
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>8 <fis a cis>
+      \change Staff = up
+      cis' cis
+      \change Staff = down
+      <fis, a> <fis a>
+      \showStaffSwitch
+      \change Staff = up
+      dis'4 |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'neo-modern-voice)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'neo-modern-voice)
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
+@item neo-modern-voice-cautionary
+
+@cindex neo-modern-voice-cautionary accidental style
+@cindex accidental style, neo-modern-voice-cautionary
+
+@funindex neo-modern-voice-cautionary
+
+This rule is similar to @code{neo-modern-voice}, but the extra
+accidentals are printed as cautionary accidentals.
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>8 <fis a cis>
+      \change Staff = up
+      cis' cis
+      \change Staff = down
+      <fis, a> <fis a>
+      \showStaffSwitch
+      \change Staff = up
+      dis'4 |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'neo-modern-voice-cautionary)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'neo-modern-voice-cautionary)
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
 @item dodecaphonic
 
 @cindex dodecaphonic accidental style
@@ -2010,13 +2137,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -2070,13 +2198,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -2130,13 +2259,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
@@ -2189,13 +2319,14 @@ musicB = {
   \clef bass
   \new Voice {
     \voiceTwo \relative c' {
-      <fis, a cis>4
+      <fis, a cis>8 <fis a cis>
       \change Staff = up
-      cis'
+      cis' cis
       \change Staff = down
-      <fis, a>
+      <fis, a> <fis a>
+      \showStaffSwitch
       \change Staff = up
-      dis' |
+      dis'4 |
       \change Staff = down
       <fis, a cis>4 gis <f a d>2 |
     }
diff --git a/scm/music-functions.scm b/scm/music-functions.scm
index 324e5aa..b2db3d2 100644
--- a/scm/music-functions.scm
+++ b/scm/music-functions.scm
@@ -1293,6 +1293,29 @@ use GrandStaff as a context. "
 					   ,(make-accidental-rule 'same-octave 1)
 				           ,neo-modern-accidental-rule)
 				   context))
+      ((equal? style 'neo-modern-voice)
+       (set-accidentals-properties #f
+				   `(Voice ,(make-accidental-rule 'same-octave 0)
+					   ,(make-accidental-rule 'any-octave 0)
+					   ,(make-accidental-rule 'same-octave 1)
+					   ,neo-modern-accidental-rule
+				     Staff ,(make-accidental-rule 'same-octave 0)
+					   ,(make-accidental-rule 'any-octave 0)
+					   ,(make-accidental-rule 'same-octave 1)
+				      ,neo-modern-accidental-rule)
+				   '()
+				   context))
+      ((equal? style 'neo-modern-voice-cautionary)
+       (set-accidentals-properties #f
+				   `(Voice ,(make-accidental-rule 'same-octave 0))
+				   `(Voice ,(make-accidental-rule 'any-octave 0)
+					   ,(make-accidental-rule 'same-octave 1)
+					   ,neo-modern-accidental-rule
+				     Staff ,(make-accidental-rule 'same-octave 0)
+					   ,(make-accidental-rule 'any-octave 0)
+					   ,(make-accidental-rule 'same-octave 1)
+					   ,neo-modern-accidental-rule)
+				   context))
       ;; Accidentals as they were common in dodecaphonic music with no tonality.
       ;; Each note gets one accidental.
       ((equal? style 'dodecaphonic)
-- 
1.6.0.4

