{"action":"created","issue":{"url":"https://api.github.com/repos/wbsoft/frescobaldi/issues/771","labels_url":"https://api.github.com/repos/wbsoft/frescobaldi/issues/771/labels{/name}","comments_url":"https://api.github.com/repos/wbsoft/frescobaldi/issues/771/comments","events_url":"https://api.github.com/repos/wbsoft/frescobaldi/issues/771/events","html_url":"https://github.com/wbsoft/frescobaldi/issues/771","id":113232019,"number":771,"title":"separate / join articulation and melody","user":{"login":"jonathan-scholbach","id":13929472,"avatar_url":"https://avatars.githubusercontent.com/u/13929472?v=3","gravatar_id":"","url":"https://api.github.com/users/jonathan-scholbach","html_url":"https://github.com/jonathan-scholbach","followers_url":"https://api.github.com/users/jonathan-scholbach/followers","following_url":"https://api.github.com/users/jonathan-scholbach/following{/other_user}","gists_url":"https://api.github.com/users/jonathan-scholbach/gists{/gist_id}","starred_url":"https://api.github.com/users/jonathan-scholbach/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonathan-scholbach/subscriptions","organizations_url":"https://api.github.com/users/jonathan-scholbach/orgs","repos_url":"https://api.github.com/users/jonathan-scholbach/repos","events_url":"https://api.github.com/users/jonathan-scholbach/events{/privacy}","received_events_url":"https://api.github.com/users/jonathan-scholbach/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/wbsoft/frescobaldi/labels/wish","name":"wish","color":"02e10c"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":11,"created_at":"2015-10-25T15:24:07Z","updated_at":"2015-11-11T20:33:17Z","closed_at":null,"body":"Often different voices in a staff share a big part of articulation and dynamic marks. That's why it is best practice to write the common articulations into a separate variable, for example:\r\n```\r\narticulation = { s4\\pp s\\< s s\\! }\r\nsopranoTune = \\relative c' { c4 d e f }\r\naltoTune = \\relative c' { a4 b c d }\r\n\r\nsopranoVoice = << \r\n  \\articulation\r\n  \\sopranoTune\r\n>>\r\n\r\naltoVoice = << \r\n  \\articulation\r\n  \\altoTune\r\n>>\r\n```\r\nBut sometimes articulation and dynamics of the voices do not equal in every detail. And even if all voices have completely equal articulation, entering articulation in a separate voice is an error-prone pain.\r\n\r\nThat's why it would be nice to have a feature that separates articulation and tune of a given voice. For example, separating\r\n```\r\nvoice = { c4\\pp d\\< e f\\! g^> }\r\n```\r\nwould lead to\r\n```\r\ntune = { c4 d e f g }\r\narticulation = { s4\\pp s\\< s s\\! s^> }\r\n```\r\n\r\nThis would be nicely complemented by a function which *joins* a given tune with a given articulation. This is a bit more complicated, since articulation and tune do not necessarily have the same rhythm, for example, joining\r\n```\r\ntune = { c2 d4 e }\r\narticulation = { s4\\< s4\\> s4\\! s^> }\r\n```\r\nwould be supposed to lead to:\r\n```\r\nvoice = { <<{ c2 } { s4\\< s\\> }>> d4\\! e^> }\r\n```\r\nThe summit of pleasure would be, when these functions would be accessable via shortcuts. I suggest the following shortcuts analogously to the common copy-and-paste-shortcuts: \r\n\r\nStr+Shift+C: copy the articulation of selection to clipboard\r\nStr+Shift+X: cut the articulation of selection to clipboard\r\nStr+Shift+V: join articulation from clipboard with selection"},"comment":{"url":"https://api.github.com/repos/wbsoft/frescobaldi/issues/comments/155902114","html_url":"https://github.com/wbsoft/frescobaldi/issues/771#issuecomment-155902114","issue_url":"https://api.github.com/repos/wbsoft/frescobaldi/issues/771","id":155902114,"user":{"login":"PeterBjuhr","id":355116,"avatar_url":"https://avatars.githubusercontent.com/u/355116?v=3","gravatar_id":"","url":"https://api.github.com/users/PeterBjuhr","html_url":"https://github.com/PeterBjuhr","followers_url":"https://api.github.com/users/PeterBjuhr/followers","following_url":"https://api.github.com/users/PeterBjuhr/following{/other_user}","gists_url":"https://api.github.com/users/PeterBjuhr/gists{/gist_id}","starred_url":"https://api.github.com/users/PeterBjuhr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PeterBjuhr/subscriptions","organizations_url":"https://api.github.com/users/PeterBjuhr/orgs","repos_url":"https://api.github.com/users/PeterBjuhr/repos","events_url":"https://api.github.com/users/PeterBjuhr/events{/privacy}","received_events_url":"https://api.github.com/users/PeterBjuhr/received_events","type":"User","site_admin":false},"created_at":"2015-11-11T20:33:17Z","updated_at":"2015-11-11T20:33:17Z","body":"Maybe I should add that the most useful snippets from that repo could perhaps qualify as built-in snippets or even as integrated functions/modules."}}