> ```
> \version "2.25.18"
>
> foo =
> #(define-music-function () ()
>   #{
>     <<
>       c'4
>       \new Voice { g''4 }
>     >>
>   #})
>
> {
>  \override Staff.NoteColumn.ignore-collision = ##t
>   c'4 \foo \stemUp \foo \stemDown \foo
> }
> ```
>
> As can be seen, the `\new Voice` doesn't react to `\stemUp` and
> `\stemDown`.  Is there a way to fix this, maybe by 'cloning' all
> properties of the `Stem` grob in the current `Voice` context to the
> new one?

I could imagine that a solution looks like this pseudo-code:

```
foo =
#(define-music-function () ()
  (let* ((stem-props (get-props (current-context) 'Stem))
         (stem-direction (assoc-get 'direction stem-props)))
    #{
      <<
        c'4
        \new Voice \with {
          \override Stem.direction = #stem-direction
        } { g''4 }
      >>
    #}))

{
 \override Staff.NoteColumn.ignore-collision = ##t
  c'4 \foo \stemUp \foo \stemDown \foo
}
```

Is there something like `get-props` and `current-context` available?


    Werner

Reply via email to