{"action":"created","issue":{"url":"https://api.github.com/repos/wbsoft/python-ly/issues/14","labels_url":"https://api.github.com/repos/wbsoft/python-ly/issues/14/labels{/name}","comments_url":"https://api.github.com/repos/wbsoft/python-ly/issues/14/comments","events_url":"https://api.github.com/repos/wbsoft/python-ly/issues/14/events","html_url":"https://github.com/wbsoft/python-ly/issues/14","id":59834621,"number":14,"title":"Support for multiple tuplets from one command","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},"labels":[{"url":"https://api.github.com/repos/wbsoft/python-ly/labels/musicxml%20export","name":"musicxml export","color":"d4c5f9"}],"state":"open","locked":false,"assignee":{"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},"milestone":null,"comments":5,"created_at":"2015-03-04T17:49:57Z","updated_at":"2015-03-04T19:16:55Z","closed_at":null,"body":"From the LilyPond documentation:\r\n\r\n>Entering several tuplets using only one \\tuplet command\r\n\r\n>The property tupletSpannerDuration sets how long each of the tuplets contained within the brackets after \\tuplet should last. Many consecutive tuplets can then be placed within a single \\tuplet expression, thus saving typing.\r\n\r\n>There are several ways to set tupletSpannerDuration. The command \\tupletSpan sets it to a given duration, and clears it when instead of a duration \\default is specified. Another way is to use an optional argument with \\tuplet.\r\n\r\nThis should of course ultimately be supported by the musicXML export.\r\n\r\nThe tricky part is knowing where to end the different tuplets only from the `tupletSpannerDuration` property. You have to calculate the durations inside the tuplets."},"comment":{"url":"https://api.github.com/repos/wbsoft/python-ly/issues/comments/77225327","html_url":"https://github.com/wbsoft/python-ly/issues/14#issuecomment-77225327","issue_url":"https://api.github.com/repos/wbsoft/python-ly/issues/14","id":77225327,"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-03-04T19:16:55Z","updated_at":"2015-03-04T19:16:55Z","body":"Let's say that the `tupletSpannerDuration` is set in such a way that we end up with a duration element in the tree. And let's say that the duration is `4.`. \r\n\r\nMy idea is then to convert this to a fraction '3/8'. And by adding the (duration) fractions in the tuplet see when the tuplet spanner duration gets reached.\r\n\r\nIn `ly.music.read` duration (or length) tokens are converted to base/scaling fractions (or is it somewhere else?), but I haven't found any usable function for this conversion. "}}