Re: eps/svg export
Yes, SVG seems ok, but EPS still have some issues. > On 24 Feb 2024, at 11:37, Martin Tarenskeen wrote: > > Have you tried opening them in any other application with/without problems> > > Op zaterdag 24 februari 2024 om 09:02:23 +01:00:00 schreef > corde...@disroot.org: >> Hi everyone, >> >> I'm encountering an issue while attempting to separate a LilyPond EPS/SVG >> file and import it into Affinity Publisher. >> >> I'm having trouble opening the SVG or EPS formats, as both seem to be >> corrupted. I suspect that Affinity Publisher might be contributing to the >> problem. Has anyone else experienced this issue or found a resolution? >> >> I use this code: >> lilypond -duse-paper-size-for-page=#f -dno-gs-load-fonts -dinclude-eps-fonts >> --eps input.ly >> >> Your insights and suggestions would be greatly appreciated. >> >> Thank you, >> >> >>
Re: eps/svg export
Have you tried opening them in any other application with/without problems> Op zaterdag 24 februari 2024 om 09:02:23 +01:00:00 schreef corde...@disroot.org: Hi everyone, I'm encountering an issue while attempting to separate a LilyPond EPS/SVG file and import it into Affinity Publisher. I'm having trouble opening the SVG or EPS formats, as both seem to be corrupted. I suspect that Affinity Publisher might be contributing to the problem. Has anyone else experienced this issue or found a resolution? I use this code: lilypond -duse-paper-size-for-page=#f -dno-gs-load-fonts -dinclude-eps-fonts --eps input.ly Your insights and suggestions would be greatly appreciated. Thank you,
eps/svg export
Hi everyone, I'm encountering an issue while attempting to separate a LilyPond EPS/SVG file and import it into Affinity Publisher. I'm having trouble opening the SVG or EPS formats, as both seem to be corrupted. I suspect that Affinity Publisher might be contributing to the problem. Has anyone else experienced this issue or found a resolution? I use this code: lilypond -duse-paper-size-for-page=#f -dno-gs-load-fonts -dinclude-eps-fonts --eps input.ly Your insights and suggestions would be greatly appreciated. Thank you,
Re: tspan in SVG export
Hi Johannes, On Thu, Nov 23, 2023 at 10:37 AM Johannes Keller wrote: > thank you! I tried this, but got "fatal error: compiled without > CAIRO_BACKEND". Does this mean that I need to compile Lilypond myself, > or is there an easier way? I work on Arch Linux, using the official > "lilypond" package (which ships Lilypond 2.24.2 at the moment). > I'm on KUbuntu myself. There are pre-made binary tarballs on the Lilypond site you can use. Go to http://lilypond.org/index.html and on the right side of the page are two download links - one for the current stable release (currently 2.24.3) and one for the current development version (currently 2.25.10). Follow whichever one you want, download the tar.gz and unpack it into the directory of your choice. It'll then be pretty much ready to use. I've got a lilypond directory in my home directory I unpack them into, but really you can put them pretty much wherever you want. -- Michael
Re: tspan in SVG export
Hi Johannes, Am 23.11.2023 um 15:26 schrieb Johannes Keller: I tried this, but got "fatal error: compiled without CAIRO_BACKEND". Does this mean that I need to compile Lilypond myself, or is there an easier way? I work on Arch Linux, using the official "lilypond" package (which ships Lilypond 2.24.2 at the moment). being a Windows user, I cannot be much of help. In another thread I heard that it should be sufficent to get the official binaries: https://www.mail-archive.com/lilypond-user@gnu.org/msg151471.html As an alternative, you can get the same results by converting your PDF file to SVG with the pdf2svg command. Install the "pdf2svg" package via your package manager or in the terminal with: sudo apt-get install pdf2svg Does that help? Cheers, Klaus
Re: tspan in SVG export
Hi Klaus thank you! I tried this, but got "fatal error: compiled without CAIRO_BACKEND". Does this mean that I need to compile Lilypond myself, or is there an easier way? I work on Arch Linux, using the official "lilypond" package (which ships Lilypond 2.24.2 at the moment). Best, Johannes "K. Blum" writes: > Hi Johannes, > > Am 22.11.2023 um 18:01 schrieb lilypond-user-requ...@gnu.org: >> On most browsers there is a large gap between 'of' and 'terza'. I noticed >> that lilypond exports such a situation as individual elements >> with absolute coordinates (as in ). >> >> Is there a way to let lilypond combine these words into a single >> element, using elements to define the formatting? > > I don't know how to achieve this, but you could have your output > produced by the Cairo backend. > (Add '--svg' and '-dbackend=cairo' as command line options, see > https://www.mail-archive.com/lilypond-devel@gnu.org/msg77712.html ) > > This should look the same with any browser. > Drawback: It is graphical output and doesn't contain searchable text. > > Cheers, > Klaus
Re: tspan in SVG export
Hi Johannes, Am 22.11.2023 um 18:01 schrieb lilypond-user-requ...@gnu.org: On most browsers there is a large gap between 'of' and 'terza'. I noticed that lilypond exports such a situation as individual elements with absolute coordinates (as in ). Is there a way to let lilypond combine these words into a single element, using elements to define the formatting? I don't know how to achieve this, but you could have your output produced by the Cairo backend. (Add '--svg' and '-dbackend=cairo' as command line options, see https://www.mail-archive.com/lilypond-devel@gnu.org/msg77712.html ) This should look the same with any browser. Drawback: It is graphical output and doesn't contain searchable text. Cheers, Klaus
tspan in SVG export
Hello! I use lilypond with the "-dbackend=svg" option. The text in the resulting SVG files looks very different depending on the browser used to render it. This concerns text elements with a mix of normal and italic text, for example: step of _terza minore_ ('terza minore' in italics) On most browsers there is a large gap between 'of' and 'terza'. I noticed that lilypond exports such a situation as individual elements with absolute coordinates (as in ). Is there a way to let lilypond combine these words into a single element, using elements to define the formatting? Below I include an excerpts of an original SVG file and a solution that would solve the problem. Thank you! Johannes Lilypond source: \left-align { \concat { \normal-text "step of " \italic "terza minore" } } Original Lilypond export: step of terza minore Solution: step of terza minore
Re: Export to XML
Le 30/08/2022 à 12:55, nitra...@posteo.net a écrit : A MusicXML export integrated into LilyPond has been discussed repeatedly, and everybody agrees that it is desirable, but it has not been implemented so far because, well, it's quite easier said than done. In a free (libre) / open source project, the only way to be sure something will get done is to do it yourself. I didn't want to sound like complaining! I understand it should be a lot of work to provide. I wasn't sure it was not implemented for technical or ethical reasons. I understand. I would say it is unimplemented not for ethical reasons, nor even for technical reasons, but simply resource reasons — unlike most of the other problems that are discussed frequently (grace synchronization, cross-voice spanners), it isn't made hard by the way LilyPond is designed, it's just a big chunk of work that needs people with all of time, motivation and competence to tackle it.
Re: Export to XML
> A MusicXML export integrated into LilyPond has been discussed repeatedly, > and everybody agrees that it is desirable, but it has not been implemented > so far because, well, it's quite easier said than done. In a free (libre) > / open source project, the only way to be sure something will get done > is to do it yourself. I didn't want to sound like complaining! I understand it should be a lot of work to provide. I wasn't sure it was not implemented for technical or ethical reasons.
Re: Export to XML
Le 30/08/2022 à 11:59, nitra...@posteo.net a écrit : Dear all, [...] 2) I tried the OpenLilylib package. I wasn't familiar with that tool and had to struggle a bit with the installation. But still, with the export-example.ly seen in the manual, I get this error message: | GNU LilyPond 2.22.2 | Traitement de « export-example.ly » | Analyse... | | oll-core: library infrastructure successfully loaded. | Interprétation en cours de la musique... | init exportHumdrum: "export-example.krn" | init Staff 1 | init Voice 1/1 (1) | init Voice 1/2 (2) | init Staff 2 | init Voice 1/ (3) | init Voice 2/ (1) | init Voice 2/mel (2)/home/remy/.config/lilypond/openlilylib/lilypond-export/api.scm:278:48: In _expression_ (ly:grob-properties grob): | /home/remy/.config/lilypond/openlilylib/lilypond-export/api.scm:278:48: Unbound variable: ly:grob-properties And I only get the PDF as an output. I don't know what I missed here? This sounds like this OLL package has not been updated for LilyPond version 2.22. 6) Last point: I made some month ago, a short presentation and introduction to LilyPond for my colleagues in my music institution. Beyond the fact it was quite a challenge to try and convince them of the utility to take some time and learn that great tool, I received that question I couldn't answer at the time: is it possible to import or export in XML? I haven't have a use for that kind of feature until now, and I don't know how the commercial softwares handle that, but still, wouldn't that be a great argument to convince the people to go for it? Final thought, I don't know how Urs did manage to convince publishers about LilyPond and what responses he got (I would be curious though), but I am pretty sure that kind of limitation in importing/exporting in XML would be nowdays a dealbreaker for publishing companies, don't you agree? A MusicXML export integrated into LilyPond has been discussed repeatedly, and everybody agrees that it is desirable, but it has not been implemented so far because, well, it's quite easier said than done. In a free (libre) / open source project, the only way to be sure something will get done is to do it yourself. Regards, Jean
Re: Export to XML
Dear all, Thank you for your comments about that situation. I tried what Jean suggested : 1) The XML export in Frescobaldi did work but the result was very unsatisfactory. I even tried to simplify as much as I could (erased all tweaks, custom commands, fingerings) and only kept the music notes. But still, the result when imported in Finale (2014) was terrible (some voices were displaced!). 2) I tried the OpenLilylib package. I wasn't familiar with that tool and had to struggle a bit with the installation. But still, with the export-example.ly seen in the manual, I get this error message: | GNU LilyPond 2.22.2 | Traitement de « export-example.ly » | Analyse... | | oll-core: library infrastructure successfully loaded. | Interprétation en cours de la musique... | init exportHumdrum: "export-example.krn" | init Staff 1 | init Voice 1/1 (1) | init Voice 1/2 (2) | init Staff 2 | init Voice 1/ (3) | init Voice 2/ (1) | init Voice 2/mel (2)/home/remy/.config/lilypond/openlilylib/lilypond-export/api.scm:278:48: In expression (ly:grob-properties grob): | /home/remy/.config/lilypond/openlilylib/lilypond-export/api.scm:278:48: Unbound variable: ly:grob-properties And I only get the PDF as an output. I don't know what I missed here? 3) I tried in the same old Finale version to import my PDF and I have to admit the result was for now the most satisfactory... I am pretty convinced now that Schott uses Sibelius as I read those fonts in some PDF examples they put online (maybe this will be of interest for some of you): | SchottMusicSibeliusStandard | SchottMusicSibeliusText | CenturySchoolbook-Bold | TimesNewRoman | OpusText | OpusFiguredBassStd | LinotypeSyntaxCom-Regular 4) I don't know if the fact I could not provide a workable file for them would be a deal breaker... I hope not as I "imagined" the work of a publishing company to be able to engrave from scratch any score... I could also mimic their own house styling in LilyPond, but I would be very surprised they ask for that and agree with Andrew, something would be wrong if so. So if I can't export in XML, my best bet would be for them to typeset from scratch, or to import the PDF in their own software and see if that can provide a good initial base... 5) To answer Andrew about the copyright and financial deal, I haven't received a concrete proposal yet and cannot say how it would appear. I know the incomes won't be very substantial, but still I see that as on opportunity to reach more people. But I would be curious to know what you meant by self-publishing? I, for sure, like to buy my scores on paper and that is an aspect I like in those old publishing companies... 6) Last point: I made some month ago, a short presentation and introduction to LilyPond for my colleagues in my music institution. Beyond the fact it was quite a challenge to try and convince them of the utility to take some time and learn that great tool, I received that question I couldn't answer at the time: is it possible to import or export in XML? I haven't have a use for that kind of feature until now, and I don't know how the commercial softwares handle that, but still, wouldn't that be a great argument to convince the people to go for it? Final thought, I don't know how Urs did manage to convince publishers about LilyPond and what responses he got (I would be curious though), but I am pretty sure that kind of limitation in importing/exporting in XML would be nowdays a dealbreaker for publishing companies, don't you agree?
Re: Export to XML
Hello Andrew, > In your workflow, why the double export? if the result is fine from Lilypond > why then export from MuseScore? I’d say it is to refine the score with MuseScore to fix the imperfect Lily->MusicXML export. JM
Re: Export to XML
I thought the musicxml export is only experimental/preliminary. How developed is it exactly? The OP seems to have tuned and tweaked his engraving extensively for the best appearance (OP to confirm...). Is this tool capable of capturing all such fine tweaks? Or is this beyond MusicXML anyway? In your workflow, why the double export? if the result is fine from Lilypond why then export from MuseScore? Musescore simply refuses to install or uninstall earlier version on my Windows 11 Insider Preview, FWIW. Just mentioning (not very happy about that!) Andrew On 26/08/2022 6:30 pm, m.tarensk...@kpnmail.nl wrote: This is what I would do, using only Open Source software: - convert my lilypond files to musicxml using python-ly (or frescobaldi, which uses python-ly) - load the result in Musesscore to check if the conversion succeeded (sometimes it fails comlletely), and/or if errors can easily be corrected. - use Musescore to export the result again to musicxml - Let the people who insist using Sibelius/Finale import the musicxml file and apply their preferred housestyles to it.
Re: Export to XML
From: Andrew Bernard Subject: Re: Export to XML Unless they accept a PDF from you and print that or reset from scratch I think you are stuck. My son is arranging the publication of the remaining works of a recently deceased composer, and the republication properly typeset of some works already published in MS form. The publisher is Novello (Wise group), and they are accepting PDFs for print. I have done a couple of works using LilyPond - another person has done some using Finale; my son has prompted us to bring our styles as reasonably close as we can to the style used by Novello in the works they have previously typeset, within the limitations of each of our software (basically I have changed the music font, and the thicknesses of some lines), and Novello have not asked for more. Paul
Re: Export to XML
This is what I would do, using only Open Source software:- convert my lilypond files to musicxml using python-ly (or frescobaldi, which uses python-ly)- load the result in Musesscore to check if the conversion succeeded (sometimes it fails comlletely), and/or if errors can easily be corrected.- use Musescore to export the result again to musicxml- Let the people who insist using Sibelius/Finale import the musicxml file and apply their preferred housestyles to it.MTVerzonden vanaf mijn Huawei mobiele telefoon Oorspronkelijk bericht Onderwerp: Re: Export to XMLVan: Jean Abou Samra Aan: nitra...@posteo.net,lilypond-user@gnu.orgCc: Jacques Menu ,Andrew Bernard Le 25/08/2022 à 14:43, nitra...@posteo.net a écrit :> Dear LilyPond users,>> I used to post questions on the LilyPond forums few years back when it was> possible to post and edit messages directly online (on nabble.com if I> recall correctly). But since it was closed, I didn't take the time to> subscribe to the mailing list and haven't try that way. I somehow managed> to find answers to my questions myself, but today I would need some advice.>> I used to be an intense Finale then Sibelius user and I learnt LilyPond> back in 2017. Since then, it is my only tool to engrave my scores and I have> moved progressively my workflow on Linux. Hence I cannot (and doesn't want) to> go back on those proprietary software and it also changed my use of LilyPond (I> replaced frescobaldi by vim, I use a lot of separate folders for each> projects and program some Makefiles to link everything smoothly, ...).>> I received some good news recently. A big music publisher (Schott Music Group),> is interested in publishing some of my compositions I made for my piano students> and it should be released in a near future. I engraved my score with great care,> and as I said, using a Makefile and some unix architecture for that particular> project. However, as you might guess, they want to engrave it with their own> editorial chart and within their music software (I am not sure of which one they> are using yet).>> I proposed to send them my LilyPond files but I have been confirmed yesterday> that they cannot process those... They told me an XML file might help them> though. I looked if it was possible to export in XML but I read the result was> bad and LilyPond wasn't made for that task... So here's my question: what would> you suggest I could do to export my scores and help them prepare the album?>> Thanks for the advices!>Frescobaldi has an experimental feature to export LilyPond codeto MusicXML. Check "Enable experimental features" in the settingsand (after restarting Frescobaldi) you get a button File > Export > Export to MusicXML.There is experimental openLilyLib package:https://github.com/openlilylib/lilypond-exportBoth are experimental, but maybe one of them will work reasonablyfor you.Best,Jean
Re: Export to XML
Le 25/08/2022 à 14:43, nitra...@posteo.net a écrit : Dear LilyPond users, I used to post questions on the LilyPond forums few years back when it was possible to post and edit messages directly online (on nabble.com if I recall correctly). But since it was closed, I didn't take the time to subscribe to the mailing list and haven't try that way. I somehow managed to find answers to my questions myself, but today I would need some advice. I used to be an intense Finale then Sibelius user and I learnt LilyPond back in 2017. Since then, it is my only tool to engrave my scores and I have moved progressively my workflow on Linux. Hence I cannot (and doesn't want) to go back on those proprietary software and it also changed my use of LilyPond (I replaced frescobaldi by vim, I use a lot of separate folders for each projects and program some Makefiles to link everything smoothly, ...). I received some good news recently. A big music publisher (Schott Music Group), is interested in publishing some of my compositions I made for my piano students and it should be released in a near future. I engraved my score with great care, and as I said, using a Makefile and some unix architecture for that particular project. However, as you might guess, they want to engrave it with their own editorial chart and within their music software (I am not sure of which one they are using yet). I proposed to send them my LilyPond files but I have been confirmed yesterday that they cannot process those... They told me an XML file might help them though. I looked if it was possible to export in XML but I read the result was bad and LilyPond wasn't made for that task... So here's my question: what would you suggest I could do to export my scores and help them prepare the album? Thanks for the advices! Frescobaldi has an experimental feature to export LilyPond code to MusicXML. Check "Enable experimental features" in the settings and (after restarting Frescobaldi) you get a button File > Export > Export to MusicXML. There is experimental openLilyLib package: https://github.com/openlilylib/lilypond-export Both are experimental, but maybe one of them will work reasonably for you. Best, Jean
Re: Export to XML
People have made styles and fonts for Finale and Sibelius that mimic quite closely Henle Verlag and Barenreiter. But it's a huge amount of work, and only because they like it, not for submission. Surely Schott is not expecting you to create a complete house style in an entirely different program. Something is wrong if so. And, Schott will own the copyright and you will earn a pittance. Is it really worth it? There are so many ways to self publish now. If you do have an especially favorable financial deal with Schott you may have to ditch all your fine work and reset in Finale or Sibelius, whatever. Some time ago Urs Liska started a sort of campaign drive to convince major publishers to at least accept Lilypond, if not convert to it. But sadly that did not seem to gain any traction. On 26/08/2022 5:45 pm, Jacques Menu wrote: Maybe one way could be to mimic this publishers look as much as possible, supposing that’s OK for them… I did that once for a very small company : for our own performance needs, I had already typeset the score we were to play from their original, handwritten by the composer, in the first place.
Re: Export to XML
Hello, Maybe one way could be to mimic this publishers look as much as possible, supposing that’s OK for them… I did that once for a very small company : for our own performance needs, I had already typeset the score we were to play from their original, handwritten by the composer, in the first place. JM > Le 26 août 2022 à 08:59, Andrew Bernard a écrit : > > I have no idea what software Schott Music Group uses for engraving, but it's > disappointing nowadays that many of the larger publisher are demanding that > composers do their work for them and requesting finished work, at least > finished to the point they can apply their house style. I don't think any of > the big names use Lilypond, and as far as I recall various efforts to get > Lilypond to export MusicXML (with all its limitations) have not come to any > fruition. Unless they accept a PDF from you and print that or reset from > scratch I think you are stuck. Sorry. I think the silence on the list re your > question is also confirmation that there is not an answer to this. I may be > wrong! > > Andrew > > > On 25/08/2022 10:43 pm, nitra...@posteo.net wrote: >> I proposed to send them my LilyPond files but I have been confirmed yesterday >> that they cannot process those... They told me an XML file might help them >> though. I looked if it was possible to export in XML but I read the result >> was >> bad and LilyPond wasn't made for that task... So here's my question: what >> would >> you suggest I could do to export my scores and help them prepare the album? >> >> Thanks for the advices! >> >
Re: Export to XML
I have no idea what software Schott Music Group uses for engraving, but it's disappointing nowadays that many of the larger publisher are demanding that composers do their work for them and requesting finished work, at least finished to the point they can apply their house style. I don't think any of the big names use Lilypond, and as far as I recall various efforts to get Lilypond to export MusicXML (with all its limitations) have not come to any fruition. Unless they accept a PDF from you and print that or reset from scratch I think you are stuck. Sorry. I think the silence on the list re your question is also confirmation that there is not an answer to this. I may be wrong! Andrew On 25/08/2022 10:43 pm, nitra...@posteo.net wrote: I proposed to send them my LilyPond files but I have been confirmed yesterday that they cannot process those... They told me an XML file might help them though. I looked if it was possible to export in XML but I read the result was bad and LilyPond wasn't made for that task... So here's my question: what would you suggest I could do to export my scores and help them prepare the album? Thanks for the advices!
Export to XML
Dear LilyPond users, I used to post questions on the LilyPond forums few years back when it was possible to post and edit messages directly online (on nabble.com if I recall correctly). But since it was closed, I didn't take the time to subscribe to the mailing list and haven't try that way. I somehow managed to find answers to my questions myself, but today I would need some advice. I used to be an intense Finale then Sibelius user and I learnt LilyPond back in 2017. Since then, it is my only tool to engrave my scores and I have moved progressively my workflow on Linux. Hence I cannot (and doesn't want) to go back on those proprietary software and it also changed my use of LilyPond (I replaced frescobaldi by vim, I use a lot of separate folders for each projects and program some Makefiles to link everything smoothly, ...). I received some good news recently. A big music publisher (Schott Music Group), is interested in publishing some of my compositions I made for my piano students and it should be released in a near future. I engraved my score with great care, and as I said, using a Makefile and some unix architecture for that particular project. However, as you might guess, they want to engrave it with their own editorial chart and within their music software (I am not sure of which one they are using yet). I proposed to send them my LilyPond files but I have been confirmed yesterday that they cannot process those... They told me an XML file might help them though. I looked if it was possible to export in XML but I read the result was bad and LilyPond wasn't made for that task... So here's my question: what would you suggest I could do to export my scores and help them prepare the album? Thanks for the advices!
Re: question about arranger.ly, export notes as text.
Le 2022-08-01 20:08, Eef Weenink a écrit : I could solve my issue with the workaround: \displayLilyMusic { \viola } Yes. arranger.ly uses display-lily-music which is the scheme version of \displayLilyMusic but has an additionnal parameter : the port which can be a file #(let ((port (open-file ))) (display-lily-music viola port) (close-port port)) display-lily-music makes a line break when the music has a BarCheck | arranger.ly adds a BarCheck after each bars, being careful however, not to cut for example a multiMeasureRest R1*8 into R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 ) -- Gilles
Re: question about arranger.ly, export notes as text.
Merci beaucoup!! > Op 1 aug. 2022, om 21:13 heeft Gilles Thibault het > volgende geschreven: > > Le 2022-07-30 22:46, Eef Weenink a écrit : >> It gives error; > > Ah yes damn, the latest version of arranger.ly has a bug on line 112. [(= n > 0) crashes when n is not a number)] > I had reorganized this portion of code but I did not see this error because > it only impacts a very small number of functions (including > export-instruments!). > Sorry about that. > I uploaded the new version (see link below). As only arranger.ly is concerned > here is the direct link for this file. > > http://gillesth.free.fr/Lilypond/arranger.ly > > I also very slightly modified your code so that it can adapt to arranger.ly > Everything should be fine now > > Good reception. > > Links > %%% > > Github > https://github.com/gilles-th/arranger.ly > > Direct access : > http://gillesth.free.fr/Lilypond/arranger-GIT-copy/arranger.ly.zip > > %%% > > export-instruments test > %%% > \version "2.22.0" > > \include "arranger.ly" > > \header { > title = "Romance Oubliée" > composer = "Liszt, Ferenc (1880)" > tagline = "Arrangement Eef Weenink" > } > > \paper { > #(set-paper-size "a4") > } > > \layout { > \context { >\Voice >\consists "Melody_engraver" >\override Stem #'neutral-direction = #'() > } > } > > global = { > \key e \minor > % This function below does not yet exist in my version 2.22.0 > %\twoCompoundMeters #'(9 8) #'(3 4) % uncomment please > \time 9/8 > \partial 4. s4. > s4.*3*18 > %\twoCompoundMeters #'(6 8) #'(2 4) > \time 6/8 > s4.*2*71 > \bar "|." > } > > #(init '(viola)) % you have to call init before using other function ! (see > doc) > > #(rm 'viola '(1 -4.) #{ \relative c' { > c8\downbow_( \mf ^\markup {\italic "Andante malinconico"} b a > e'4. \< f2. \! ) | % 1 > r2.c8_( b a | % 2 > f'4. \< fis2. \! ) | % 3 > r2. fis,8\downbow ( e dis | % 4 > a' g fis ) c' (b a g fis a )| % 5 > c (b a) dis\upbow (c b a b c) | % 6 > dis ( e eis fis4 ) r8 g\upbow_"espr." ( fis e) | % 7 > b'4.~ b8 b( c b \acciaccatura { d16 } c8 b) | % 8 > b4.\> ( fis4) \! r8 fis( g \acciaccatura { b16 } a8) | % 9 > c,4.~ c8 b( \acciaccatura { d16} c8 b4 g'8) | % 10 > fis4.( e4) r8 g\upbow( fis e) | % 11 > b'4.~ b8 b( c b \acciaccatura { d16 } c8 b) | % 12 > b4.( e,4->) r8 es( b' a ) | % 13 > a4. d,4 ( e!8 fis4 \tuplet 3/2 { e16 fis g) } | % 14 > fis4( e8 fis4) r8 es( b' a ) | % 15 > a4. d,4 ( e!8 fis4 \tuplet 3/2 { e16_"dim." fis g) } | % 16 > fis4 \>( e8 fis2.) \! | % 17 > R4.*3 | % 18 > > R2. | % 19 > r4 r8 \p \ fis8 e dis) a'4. \> ^~ ^( % 21 > a8 [ g fis]) fis^-- \! r8 r > f4.\downbow( \acciaccatura { a16} g4 fis8) % 22 > %verder met pagina 3 > } #}) > > #(export-instruments '(global viola) "exported-file.ly" #t) > > % > > \score { > \new Staff \with { >instrumentName = "Altviool" >shortInstrumentName = "Avl." >\consists "Merge_rests_engraver" >printPartCombineTexts = ##f > } > << \clef alto \global \viola >> > \layout { } > } > > > > > -- > Gilles
Re: question about arranger.ly, export notes as text.
Le 2022-07-30 22:46, Eef Weenink a écrit : It gives error; Ah yes damn, the latest version of arranger.ly has a bug on line 112. [(= n 0) crashes when n is not a number)] I had reorganized this portion of code but I did not see this error because it only impacts a very small number of functions (including export-instruments!). Sorry about that. I uploaded the new version (see link below). As only arranger.ly is concerned here is the direct link for this file. http://gillesth.free.fr/Lilypond/arranger.ly I also very slightly modified your code so that it can adapt to arranger.ly Everything should be fine now Good reception. Links %%% Github https://github.com/gilles-th/arranger.ly Direct access : http://gillesth.free.fr/Lilypond/arranger-GIT-copy/arranger.ly.zip %%% export-instruments test %%% \version "2.22.0" \include "arranger.ly" \header { title = "Romance Oubliée" composer = "Liszt, Ferenc (1880)" tagline = "Arrangement Eef Weenink" } \paper { #(set-paper-size "a4") } \layout { \context { \Voice \consists "Melody_engraver" \override Stem #'neutral-direction = #'() } } global = { \key e \minor % This function below does not yet exist in my version 2.22.0 %\twoCompoundMeters #'(9 8) #'(3 4) % uncomment please \time 9/8 \partial 4. s4. s4.*3*18 %\twoCompoundMeters #'(6 8) #'(2 4) \time 6/8 s4.*2*71 \bar "|." } #(init '(viola)) % you have to call init before using other function ! (see doc) #(rm 'viola '(1 -4.) #{ \relative c' { c8\downbow_( \mf ^\markup {\italic "Andante malinconico"} b a e'4. \< f2. \! ) | % 1 r2.c8_( b a | % 2 f'4. \< fis2. \! ) | % 3 r2. fis,8\downbow ( e dis | % 4 a' g fis ) c' (b a g fis a )| % 5 c (b a) dis\upbow (c b a b c) | % 6 dis ( e eis fis4 ) r8 g\upbow_"espr." ( fis e) | % 7 b'4.~ b8 b( c b \acciaccatura { d16 } c8 b) | % 8 b4.\> ( fis4) \! r8 fis( g \acciaccatura { b16 } a8) | % 9 c,4.~ c8 b( \acciaccatura { d16} c8 b4 g'8) | % 10 fis4.( e4) r8 g\upbow( fis e) | % 11 b'4.~ b8 b( c b \acciaccatura { d16 } c8 b) | % 12 b4.( e,4->) r8 es( b' a ) | % 13 a4. d,4 ( e!8 fis4 \tuplet 3/2 { e16 fis g) } | % 14 fis4( e8 fis4) r8 es( b' a ) | % 15 a4. d,4 ( e!8 fis4 \tuplet 3/2 { e16_"dim." fis g) } | % 16 fis4 \>( e8 fis2.) \! | % 17 R4.*3 | % 18 R2. | % 19 r4 r8 \p \ ^~ ^( % 21 a8 [ g fis]) fis^-- \! r8 r f4.\downbow( \acciaccatura { a16} g4 fis8) % 22 %verder met pagina 3 } #}) #(export-instruments '(global viola) "exported-file.ly" #t) % \score { \new Staff \with { instrumentName = "Altviool" shortInstrumentName = "Avl." \consists "Merge_rests_engraver" printPartCombineTexts = ##f } << \clef alto \global \viola >> \layout { } } -- Gilles
Re: question about arranger.ly, export notes as text.
I could solve my issue with the workaround: \displayLilyMusic { \viola } and later copy paste the viola part from the logfile into my score again. regards, Eef Op 30 jul. 2022, om 22:46 heeft Eef Weenink mailto:h.e.ween...@de-erve.nl>> het volgende geschreven: It gives error; "72:2: fout: GUILE signaleerde een fout voor de hier beginnende expressie" makes a file: in file is only: %%%%%% instruments export : za 30 jul 22:36:19 2022 %% I tried it with this file: ( a bit long ... but should be) \version "2.22.2" \include "arranger.ly<http://arranger.ly/>" \header { title = "Romance Oubliée" composer = "Liszt, Ferenc (1880)" tagline = "Arrangement Eef Weenink" } \paper { #(set-paper-size "a4") } \layout { \context { \Voice \consists "Melody_engraver" \override Stem #'neutral-direction = #'() } } global = { \key e \minor % \twoCompoundMeters #'(9 8) #'(3 4) \time 9/8 \partial 8*3 s8*3 s4. *3 *18 %\twoCompoundMeters #'(6 8) #'(2 4) \time 6/8 s4.*2*71 \bar "|." } viola = \relative c' { \partial 8*3 c8\downbow_( \mf ^\markup {\italic "Andante malinconico"} b a e'4. \< f2. \! ) | % 1 r2.c8_( b a | % 2 f'4. \< fis2. \! ) | % 3 r2. fis,8\downbow ( e dis | % 4 a' g fis ) c' (b a g fis a )| % 5 c (b a) dis\upbow (c b a b c) | % 6 dis ( e eis fis4 ) r8 g\upbow_"espr." ( fis e) | % 7 b'4.~ b8 b( c b \acciaccatura { d16 } c8 b) | % 8 b4.\> ( fis4) \! r8 fis( g \acciaccatura { b16 } a8) | % 9 c,4.~ c8 b( \acciaccatura { d16} c8 b4 g'8) | % 10 fis4.( e4) r8 g\upbow( fis e) | % 11 b'4.~ b8 b( c b \acciaccatura { d16 } c8 b) | % 12 b4.( e,4->) r8 es( b' a ) | % 13 a4. d,4 ( e!8 fis4 \tuplet 3/2 { e16 fis g) } | % 14 fis4( e8 fis4) r8 es( b' a ) | % 15 a4. d,4 ( e!8 fis4 \tuplet 3/2 { e16_"dim." fis g) } | % 16 fis4 \>( e8 fis2.) \! | % 17 R4.*3 | % 18 R2. | % 19 r4 r8 \p \ ^~ ^( % 21 a8 [ g fis]) fis^-- \! r8 r f4.\downbow( \acciaccatura { a16} g4 fis8) % 22 %verder met pagina 3 } #(begin (export-instruments 'viola "exported-file.ly<http://exported-file.ly/>" #t) ) \score { \new Staff \with { instrumentName = "Altviool" shortInstrumentName = "Avl." \consists "Merge_rests_engraver" printPartCombineTexts = ##f } { \clef alto \partCombine \global \viola } \layout { } }
Re: question about arranger.ly, export notes as text.
It gives error; "72:2<0>: fout: GUILE signaleerde een fout voor de hier beginnende expressie" makes a file: in file is only: %%%%%% instruments export : za 30 jul 22:36:19 2022 %% I tried it with this file: ( a bit long ... but should be) \version "2.22.2" \include "arranger.ly<http://arranger.ly>" \header { title = "Romance Oubliée" composer = "Liszt, Ferenc (1880)" tagline = "Arrangement Eef Weenink" } \paper { #(set-paper-size "a4") } \layout { \context { \Voice \consists "Melody_engraver" \override Stem #'neutral-direction = #'() } } global = { \key e \minor % \twoCompoundMeters #'(9 8) #'(3 4) \time 9/8 \partial 8*3 s8*3 s4. *3 *18 %\twoCompoundMeters #'(6 8) #'(2 4) \time 6/8 s4.*2*71 \bar "|." } viola = \relative c' { \partial 8*3 c8\downbow_( \mf ^\markup {\italic "Andante malinconico"} b a e'4. \< f2. \! ) | % 1 r2.c8_( b a | % 2 f'4. \< fis2. \! ) | % 3 r2. fis,8\downbow ( e dis | % 4 a' g fis ) c' (b a g fis a )| % 5 c (b a) dis\upbow (c b a b c) | % 6 dis ( e eis fis4 ) r8 g\upbow_"espr." ( fis e) | % 7 b'4.~ b8 b( c b \acciaccatura { d16 } c8 b) | % 8 b4.\> ( fis4) \! r8 fis( g \acciaccatura { b16 } a8) | % 9 c,4.~ c8 b( \acciaccatura { d16} c8 b4 g'8) | % 10 fis4.( e4) r8 g\upbow( fis e) | % 11 b'4.~ b8 b( c b \acciaccatura { d16 } c8 b) | % 12 b4.( e,4->) r8 es( b' a ) | % 13 a4. d,4 ( e!8 fis4 \tuplet 3/2 { e16 fis g) } | % 14 fis4( e8 fis4) r8 es( b' a ) | % 15 a4. d,4 ( e!8 fis4 \tuplet 3/2 { e16_"dim." fis g) } | % 16 fis4 \>( e8 fis2.) \! | % 17 R4.*3 | % 18 R2. | % 19 r4 r8 \p \ ^~ ^( % 21 a8 [ g fis]) fis^-- \! r8 r f4.\downbow( \acciaccatura { a16} g4 fis8) % 22 %verder met pagina 3 } #(begin (export-instruments 'viola "exported-file.ly<http://exported-file.ly>" #t) ) \score { \new Staff \with { instrumentName = "Altviool" shortInstrumentName = "Avl." \consists "Merge_rests_engraver" printPartCombineTexts = ##f } { \clef alto \partCombine \global \viola } \layout { } }
Re: question about arranger.ly, export notes as text.
In the manual is says" " Once the arrangement is finished, it can be exported to usual LilyPond source: flute = {...} clar = {...} From arrangerDoc.pdf : export-instruments syntax (export-instruments instruments filename #:optional overwrite?) So something like (export-instruments '(flute clar...) "exported-file.ly" #f) should produce in the current directory, a file called "exported-file.ly", with the definition of flute and clar. Is this the case ? It's a problem if not ! -- Gilles
question about arranger.ly, export notes as text.
OK, my arrangement is finished, now I want to export it to make a nice, clean original. So I am searching for a way to transfer the score (per instrument) to a text file or export in logfile etcetera, so I can use that. But no luck yet. In the manual is says" " Once the arrangement is finished, it can be exported to usual LilyPond source: flute = {...} clar = {...} " And also there is mentioned export-instruments. I did get a lot or errors, and a file with only a description of the instument, but no "notes" Did seach in archives on "export" "text", but not a result I could use. Anybody an idea on how to get this done? Regards, Eef
Re: Export from LilyPond to MusicXML (Thomas Morley)
> Am 08.10.2021 um 12:04 schrieb David Kastrup : > > Jan-Peter Voigt writes: > >> Hi all, >> >> probably what I am writing now is not new to most of you. About a year >> ago there was a discussion regarding the license of Lilypond, triggered >> by Urs' question about the future of OLL. Again and again the >> documentation was referred to, which says that Lilypond is a compiler >> that translates the source code into a PDF. For God's sake, I don't want >> to discuss the licensing consequences again, but I want to point out >> that this representation is not exactly complete. In fact, each source >> file is translated into a Lilypond internal executable, the execution of >> which then generates the PDF. > > Uh, no? Calling LilyPond's internal representation of music an > "executable" is nonsensical since it does not imply any actions but is a > structural representation of music. Ok, my designation as internal executable is certainly not a good picture. My point is that this process is not a pure translation language A to language B. Whatsoever, this is not the topic I want to discuss. > There never is any linear > representation being "executed", and source files are interpreted rather > than compiled, with no file-level representation ever being explicit. Well at least a (Scheme) Engraver can be used to instruct that a note head be painted red if it is the third moment in the measure. Alternatively, this information can be given to each affected notehead via override. The source file is interpreted, as you write, and not compiled, as written in the documentation. (https://lilypond.org/windows.html, https://lilypond.org/macos-x.html, https://lilypond.org/unix.html: "Compiling a file") > That's not an academic difference since it is a non-trivial question > just what the structure of a MusicXML file is supposed to represent from > a given LilyPond input file. Yes, that is essentially what I wanted to say. Jan-Peter
Re: Export from LilyPond to MusicXML (Thomas Morley)
Jan-Peter Voigt writes: > Hi all, > > probably what I am writing now is not new to most of you. About a year > ago there was a discussion regarding the license of Lilypond, triggered > by Urs' question about the future of OLL. Again and again the > documentation was referred to, which says that Lilypond is a compiler > that translates the source code into a PDF. For God's sake, I don't want > to discuss the licensing consequences again, but I want to point out > that this representation is not exactly complete. In fact, each source > file is translated into a Lilypond internal executable, the execution of > which then generates the PDF. Uh, no? Calling LilyPond's internal representation of music an "executable" is nonsensical since it does not imply any actions but is a structural representation of music. There never is any linear representation being "executed", and source files are interpreted rather than compiled, with no file-level representation ever being explicit. That's not an academic difference since it is a non-trivial question just what the structure of a MusicXML file is supposed to represent from a given LilyPond input file. -- David Kastrup
Re: Export from LilyPond to MusicXML (Thomas Morley)
Hi all, probably what I am writing now is not new to most of you. About a year ago there was a discussion regarding the license of Lilypond, triggered by Urs' question about the future of OLL. Again and again the documentation was referred to, which says that Lilypond is a compiler that translates the source code into a PDF. For God's sake, I don't want to discuss the licensing consequences again, but I want to point out that this representation is not exactly complete. In fact, each source file is translated into a Lilypond internal executable, the execution of which then generates the PDF. This architecture is representable in XML, if it is possible at all, only with extensions to MEI or MusicXML. So the goal should only be to implement the graphical representation accordingly. But this also means that structures that serve a better organization of the lilypond source code will most likely be lost during export and re-import. Several solutions for the export have now been mentioned. Behind these are three concepts, all of which have their justification: 1. convert source-based (python-ly accessible through frescobaldi). 2. lilypond internal generation of an intermediate code 3. scheme based generation of an intermediate code If the sources comply, i.e. do not contain Scheme, then the python-ly solution is quite charming, fast and batchable. But I would find the internal generation of an intermediate code, as envisioned and developed by Jacques, the nicest. The Scheme based solution I started from the pragmatic consideration that if it works, it can be quickly adapted and deployed in different environments. I'm very glad to see this discussion revisited. Maybe something more can be developed together in this direction. For this reason, I am also pushing the discussion to the devel list. ;-) I'll be on the road for the next week, but I plan to get back to the topic after that. Cheers, Jan-Peter Am 07.10.21 um 22:51 schrieb Thomas Morley: > Am Do., 7. Okt. 2021 um 13:32 Uhr schrieb Jean Abou Samra > : >> >> Harm, >> >> Le 07/10/2021 à 11:46, Thomas Morley a écrit : >>> Not sure Jan-Peter's approach is the best method ... >> >> What makes you think so? >> >> Best, >> Jean > > Maybe my wording was misleading. > > I tested ly->musicxml with > (1) openlilylib, i.e. Jan-Peter > (2) python-ly > (3) Frescobaldi > (4) https://github.com/de-wolff/lilypond.git > > Then tried reimporting the resulting xml-file via > (a) musicxml2ly > (b) xml2ly > > All results were terrible. Here I stopped frustrated. > I did not look into any code, thus I simply don't know which one is > the most promising approach. > > Cheers, > Harm >
Re: Export from LilyPond to MusicXML (Thomas Morley)
Hello Peter, and all, I spotted the problem with the OLL export-solution in 2.22+: In api.scm ll. 278,279 the call to ly:grob-properties fails. In that acknowledger block the stem direction is recorded. I'll look how to fix that later. If you like to try it out, you can temporarily just delete or comment that block (ll. 274-281). Cheers, Jan-Peter Am 07.10.21 um 11:49 schrieb Jan-Peter Voigt: > Hello Peter, > > yes, I still receive the messages from the list, but since I have > changed jobs, my commitment to Lilypond has fallen behind a bit. > But I hope to curate and update my code soon so that it can serve as a > starting point for further development. Of course, Jacque's work should > not be lost sight of, as native support would be nice. But maybe the > scheme-engraver based solution can push the issue a bit. > This topic has been on my mind for quite some time. Since Lilypond does > not offer XML export, its use is problematic in many areas. If I want to > offer something to a publisher, I can't get anywhere with Lilypond in > most cases. If I want to archive the notes in a structured way, I can > come up with 1001 solutions in Scheme that fill a database. But if I > have curated data in MEI format (or MusicXML), I can systematically feed > a database (e.g. eXist) with it and provide a REST API afterwards to > build fancy Webapps. > > Best regards, > > Jan-Peter > > > > Am 07.10.21 um 11:30 schrieb Peter Toye: >> The potential need has gone away now - my Sibelius user has told me that >> he uses ScoreMuse to export the PDF into a suitable format for Sibelius. >> Looks to me like an expensive way of doing it, but if he can afford >> Sibelius he can probably afford ScoreMuse as well. >> >> >> >> I agree that exchanging music information between different engravers is >> an extremely complex problem and I don't underestimate the difficulty. >> >> >> >> I tried Jan-Peter's code on Github, but it seems to be broken on recent >> versions of LilyPond. I'm told it works on 19.0 but I don't have >> that version any more. And I don't have a contact for him to ask - is he >> on this mailing list? >> >> >> Best regards, >> >> >> Peter >> >> mailto:lilyp...@ptoye.com <mailto:lilyp...@ptoye.com> >> >> www.ptoye.com <https://www.ptoye.com> >> >> >> - >> >> Wednesday, October 6, 2021, 8:05:12 PM, Jean Abou Samra wrote: >> >> >> Le 05/10/2021 à 13:08, Peter Toye a écrit : >> >> >> Sorry - edited subject to get the linking correct >> >> >> Harm, >> >> >> >> https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706 >> >> <https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706> >> > >> >> <https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706 >> >> <https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706>> >> has >> > a discussion about this as well. I've started looking at > >> the OpenLilyLib solution at the bottom of the thread but it >> doesn't > work on later versions of LilyPond. >> >> >> It would seem to me that using LP's parsing mechanisms is the >> right > way to go about it, and I'd offer to help if my health >> allowed. Is > there anyone on this mailing list who knows about it? >> >> >> >> >> About the parsing? Certainly, but the potentiel >> project spans many different areas of LilyPond. >> And he design space is vast. >> >> >> With Jacques Menu, we some had private discussions >> about this. It may be feasible to implement XML export >> by utilizing Jacque's musicformats library (see >> his post). So far I only have rough ideas about >> the LilyPond part, and it is not my current priority. >> >> >> I think the most advanced solution so far is Jan-Peter's >> https://github.com/openlilylib/lilypond-export >> <https://github.com/openlilylib/lilypond-export> >> https://lists.gnu.org/archive/html/lilypond-devel/2018-10/msg00068.html >> <https://lists.gnu.org/archive/html/lilypond-devel/2018-10/msg00068.html> >> (CCing him). One could start off from that. >> >> >> It's something I will probably need soon. >> >> >> >> >> By do means do try to help out, but don't >> hold your breathe for it. It is a large >> endeavor. >> >> >> Best, >> Jean >> > >
Re: Export from LilyPond to MusicXML (Thomas Morley)
Hello Thomas, > Le 7 oct. 2021 à 22:51, Thomas Morley a écrit : > > Am Do., 7. Okt. 2021 um 13:32 Uhr schrieb Jean Abou Samra > : >> >> Harm, >> >> Le 07/10/2021 à 11:46, Thomas Morley a écrit : >>> Not sure Jan-Peter's approach is the best method ... >> >> What makes you think so? >> >> Best, >> Jean > > Maybe my wording was misleading. > > I tested ly->musicxml with > (1) openlilylib, i.e. Jan-Peter > (2) python-ly > (3) Frescobaldi > (4) https://github.com/de-wolff/lilypond.git > > Then tried reimporting the resulting xml-file via > (a) musicxml2ly > (b) xml2ly > > All results were terrible. Here I stopped frustrated. > I did not look into any code, thus I simply don't know which one is > the most promising approach. Were the bad results due to 1-4 essentially, or were a and b part of the quality problem? JM
Re: Export from LilyPond to MusicXML (Thomas Morley)
Le 07/10/2021 à 22:51, Thomas Morley a écrit : Am Do., 7. Okt. 2021 um 13:32 Uhr schrieb Jean Abou Samra : Harm, Le 07/10/2021 à 11:46, Thomas Morley a écrit : Not sure Jan-Peter's approach is the best method ... What makes you think so? Best, Jean Maybe my wording was misleading. I tested ly->musicxml with (1) openlilylib, i.e. Jan-Peter (2) python-ly (3) Frescobaldi I thought these two were equivalent — aren't they? (4) https://github.com/de-wolff/lilypond.git Then tried reimporting the resulting xml-file via (a) musicxml2ly (b) xml2ly All results were terrible. Here I stopped frustrated. I did not look into any code, thus I simply don't know which one is the most promising approach. If you want my take: Jan-Peter's. Translators are the only reliable way to get all special timing right (lyrics, quoted music, combined parts, etc.) without a lot of code duplication with iterators. Best, Jean
Re: Export from LilyPond to MusicXML (Thomas Morley)
Am Do., 7. Okt. 2021 um 13:32 Uhr schrieb Jean Abou Samra : > > Harm, > > Le 07/10/2021 à 11:46, Thomas Morley a écrit : > > Not sure Jan-Peter's approach is the best method ... > > What makes you think so? > > Best, > Jean Maybe my wording was misleading. I tested ly->musicxml with (1) openlilylib, i.e. Jan-Peter (2) python-ly (3) Frescobaldi (4) https://github.com/de-wolff/lilypond.git Then tried reimporting the resulting xml-file via (a) musicxml2ly (b) xml2ly All results were terrible. Here I stopped frustrated. I did not look into any code, thus I simply don't know which one is the most promising approach. Cheers, Harm
Re: Export from LilyPond to MusicXML (Thomas Morley)
Harm, Le 07/10/2021 à 11:46, Thomas Morley a écrit : Not sure Jan-Peter's approach is the best method ... What makes you think so? Best, Jean
Re: Export from LilyPond to MusicXML (Thomas Morley)
Thanks very much Harm, but as I no longer need it, I shan't go ahead. If I need it later I'll resurrect this thread. The reason I like Jan-Peter's approach is that it appears to abstract the music from the details of presentation. But I've not looked into it much. Best regards, Peter mailto:lilyp...@ptoye.com www.ptoye.com - Thursday, October 7, 2021, 10:46:44 AM, Thomas Morley wrote: > Am Do., 7. Okt. 2021 um 11:30 Uhr schrieb Peter Toye : >> The potential need has gone away now - my Sibelius user has told me that he >> uses ScoreMuse to export the PDF into a suitable format for Sibelius. Looks >> to me like an expensive way of doing it, but if he can afford Sibelius he >> can probably afford ScoreMuse as well. >> I agree that exchanging music information between different engravers is an >> extremely complex problem and I don't underestimate the difficulty. >> I tried Jan-Peter's code on Github, but it seems to be broken on recent >> versions of LilyPond. I'm told it works on 19.0 but I don't have that >> version any more. And I don't have a contact for him to ask - is he on this >> mailing list? > Not sure Jan-Peter's approach is the best method ... > Anyway, applying the following diff makes it work with recent versions > (although you'll get a bunch of messages): > ~/openlilylib/lilypond-export (master)$ git diff > diff --git a/api.scm b/api.scm > index 8307dc5..3bfa69a 100644 > --- a/api.scm > +++ b/api.scm > @@ -275,8 +275,8 @@ > (let ((musicstep (ly:context-property context ctprop::export-step)) > (staff-id (ly:context-property context ctprop::staff-id)) > (voice-id (ly:context-property context ctprop::voice-id))) > - (ly:message "stem info ~A" (map car (ly:grob-properties grob))) > - (tree-set! musicstep `(,staff-id ,voice-id stem dir) > (ly:grob-properties grob)) ;(ly:stem::calc-direction grob)) > + (ly:message "stem info ~A" (map car > (ly:grob-basic-properties grob))) > + (tree-set! musicstep `(,staff-id ,voice-id stem dir) > (ly:grob-basic-properties grob)) ;(ly:stem::calc-direction grob)) > )) > ) > Cheers, > Harm
Re: Export from LilyPond to MusicXML (Thomas Morley)
Hello Jan-Peter, As I wrote, my personal immediate need has now gone away. Everyone seems to agree that some form of exchange mechanism between music engravers is needed, but there are many different exchange formats and with such a complex subject writing an exporter is a really heavy task. I can only admire and thank you for your work and hope it can continue. Let's hope that it can be done without too many people pulling in different directions. I wish I were able to help. Best regards, Peter mailto:lilyp...@ptoye.com www.ptoye.com - > Message: 2 > Date: Thu, 7 Oct 2021 11:49:29 +0200 > From: Jan-Peter Voigt > To: lilypond-user@gnu.org > Subject: Re: Export from LilyPond to MusicXML (Thomas Morley) > Message-ID: > Content-Type: text/plain; charset=utf-8 > Hello Peter, > yes, I still receive the messages from the list, but since I have > changed jobs, my commitment to Lilypond has fallen behind a bit. > But I hope to curate and update my code soon so that it can serve as a > starting point for further development. Of course, Jacque's work should > not be lost sight of, as native support would be nice. But maybe the > scheme-engraver based solution can push the issue a bit. > This topic has been on my mind for quite some time. Since Lilypond does > not offer XML export, its use is problematic in many areas. If I want to > offer something to a publisher, I can't get anywhere with Lilypond in > most cases. If I want to archive the notes in a structured way, I can > come up with 1001 solutions in Scheme that fill a database. But if I > have curated data in MEI format (or MusicXML), I can systematically feed > a database (e.g. eXist) with it and provide a REST API afterwards to > build fancy Webapps. > Best regards, > Jan-Peter > Am 07.10.21 um 11:30 schrieb Peter Toye: >> The potential need has gone away now - my Sibelius user has told me that >> he uses ScoreMuse to export the PDF into a suitable format for Sibelius. >> Looks to me like an expensive way of doing it, but if he can afford >> Sibelius he can probably afford ScoreMuse as well. >> >> I agree that exchanging music information between different engravers is >> an extremely complex problem and I don't underestimate the difficulty. >> >> I tried Jan-Peter's code on Github, but it seems to be broken on recent >> versions of LilyPond. I'm told it works on 19.0 but I don't have >> that version any more. And I don't have a contact for him to ask - is he >> on this mailing list? >> Best regards, >> Peter >> mailto:lilyp...@ptoye.com <mailto:lilyp...@ptoye.com> >> www.ptoye.com <https://www.ptoye.com> >> - >> Wednesday, October 6, 2021, 8:05:12 PM, Jean Abou Samra wrote: >> Le 05/10/2021 à 13:08, Peter Toye a écrit : >> Sorry - edited subject to get the linking correct >> Harm, >> >> https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706 >> >> <https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706> >> > >> >> <https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706 >> >> <https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706>> >> has >> > a discussion about this as well. I've started looking at > >> the OpenLilyLib solution at the bottom of the thread but it >> doesn't > work on later versions of LilyPond. >> It would seem to me that using LP's parsing mechanisms is the >> right > way to go about it, and I'd offer to help if my health >> allowed. Is > there anyone on this mailing list who knows about it? >> About the parsing? Certainly, but the potentiel >> project spans many different areas of LilyPond. >> And he design space is vast. >> With Jacques Menu, we some had private discussions >> about this. It may be feasible to implement XML export >> by utilizing Jacque's musicformats library (see >> his post). So far I only have rough ideas about >> the LilyPond part, and it is not my current priority. >> I think the most advanced solution so far is Jan-Peter's >> https://github.com/openlilylib/lilypond-export >> <https://github.com/openlilylib/lilypond-export> >> https://lists.gnu.org/archive/html/lilypond-devel/2018-10/msg00068.html >> <https://lists.gnu.org/archive/html/lilypond-devel/2018-10/msg00068.html> >> (CCing him). One could start off from that. >> It's something I will probably need soon. >> By do means do try to help out, but don't >> hold your breathe for it. It is a large >> endeavor. >> Best, >> Jean > --
Re: Export from LilyPond to MusicXML (Thomas Morley)
Hello Peter, yes, I still receive the messages from the list, but since I have changed jobs, my commitment to Lilypond has fallen behind a bit. But I hope to curate and update my code soon so that it can serve as a starting point for further development. Of course, Jacque's work should not be lost sight of, as native support would be nice. But maybe the scheme-engraver based solution can push the issue a bit. This topic has been on my mind for quite some time. Since Lilypond does not offer XML export, its use is problematic in many areas. If I want to offer something to a publisher, I can't get anywhere with Lilypond in most cases. If I want to archive the notes in a structured way, I can come up with 1001 solutions in Scheme that fill a database. But if I have curated data in MEI format (or MusicXML), I can systematically feed a database (e.g. eXist) with it and provide a REST API afterwards to build fancy Webapps. Best regards, Jan-Peter Am 07.10.21 um 11:30 schrieb Peter Toye: > The potential need has gone away now - my Sibelius user has told me that > he uses ScoreMuse to export the PDF into a suitable format for Sibelius. > Looks to me like an expensive way of doing it, but if he can afford > Sibelius he can probably afford ScoreMuse as well. > > > > I agree that exchanging music information between different engravers is > an extremely complex problem and I don't underestimate the difficulty. > > > > I tried Jan-Peter's code on Github, but it seems to be broken on recent > versions of LilyPond. I'm told it works on 19.0 but I don't have > that version any more. And I don't have a contact for him to ask - is he > on this mailing list? > > > Best regards, > > > Peter > > mailto:lilyp...@ptoye.com <mailto:lilyp...@ptoye.com> > > www.ptoye.com <https://www.ptoye.com> > > > - > > Wednesday, October 6, 2021, 8:05:12 PM, Jean Abou Samra wrote: > > > Le 05/10/2021 à 13:08, Peter Toye a écrit : > > > Sorry - edited subject to get the linking correct > > > Harm, > > > > https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706 > > <https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706> > > > > <https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706 > > <https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706>> > has > > a discussion about this as well. I've started looking at > > the OpenLilyLib solution at the bottom of the thread but it > doesn't > work on later versions of LilyPond. > > > It would seem to me that using LP's parsing mechanisms is the > right > way to go about it, and I'd offer to help if my health > allowed. Is > there anyone on this mailing list who knows about it? > > > > > About the parsing? Certainly, but the potentiel > project spans many different areas of LilyPond. > And he design space is vast. > > > With Jacques Menu, we some had private discussions > about this. It may be feasible to implement XML export > by utilizing Jacque's musicformats library (see > his post). So far I only have rough ideas about > the LilyPond part, and it is not my current priority. > > > I think the most advanced solution so far is Jan-Peter's > https://github.com/openlilylib/lilypond-export > <https://github.com/openlilylib/lilypond-export> > https://lists.gnu.org/archive/html/lilypond-devel/2018-10/msg00068.html > <https://lists.gnu.org/archive/html/lilypond-devel/2018-10/msg00068.html> > (CCing him). One could start off from that. > > > It's something I will probably need soon. > > > > > By do means do try to help out, but don't > hold your breathe for it. It is a large > endeavor. > > > Best, > Jean >
Re: Export from LilyPond to MusicXML (Thomas Morley)
Am Do., 7. Okt. 2021 um 11:30 Uhr schrieb Peter Toye : > > The potential need has gone away now - my Sibelius user has told me that he > uses ScoreMuse to export the PDF into a suitable format for Sibelius. Looks > to me like an expensive way of doing it, but if he can afford Sibelius he can > probably afford ScoreMuse as well. > > > > I agree that exchanging music information between different engravers is an > extremely complex problem and I don't underestimate the difficulty. > > > > I tried Jan-Peter's code on Github, but it seems to be broken on recent > versions of LilyPond. I'm told it works on 19.0 but I don't have that > version any more. And I don't have a contact for him to ask - is he on this > mailing list? Not sure Jan-Peter's approach is the best method ... Anyway, applying the following diff makes it work with recent versions (although you'll get a bunch of messages): ~/openlilylib/lilypond-export (master)$ git diff diff --git a/api.scm b/api.scm index 8307dc5..3bfa69a 100644 --- a/api.scm +++ b/api.scm @@ -275,8 +275,8 @@ (let ((musicstep (ly:context-property context ctprop::export-step)) (staff-id (ly:context-property context ctprop::staff-id)) (voice-id (ly:context-property context ctprop::voice-id))) - (ly:message "stem info ~A" (map car (ly:grob-properties grob))) - (tree-set! musicstep `(,staff-id ,voice-id stem dir) (ly:grob-properties grob)) ;(ly:stem::calc-direction grob)) + (ly:message "stem info ~A" (map car (ly:grob-basic-properties grob))) + (tree-set! musicstep `(,staff-id ,voice-id stem dir) (ly:grob-basic-properties grob)) ;(ly:stem::calc-direction grob)) )) ) Cheers, Harm
Re: Export from LilyPond to MusicXML (Thomas Morley)
The potential need has gone away now - my Sibelius user has told me that he uses ScoreMuse to export the PDF into a suitable format for Sibelius. Looks to me like an expensive way of doing it, but if he can afford Sibelius he can probably afford ScoreMuse as well. I agree that exchanging music information between different engravers is an extremely complex problem and I don't underestimate the difficulty. I tried Jan-Peter's code on Github, but it seems to be broken on recent versions of LilyPond. I'm told it works on 19.0 but I don't have that version any more. And I don't have a contact for him to ask - is he on this mailing list? Best regards, Peter mailto:lilyp...@ptoye.com www.ptoye.com - Wednesday, October 6, 2021, 8:05:12 PM, Jean Abou Samra wrote: > Le 05/10/2021 à 13:08, Peter Toye a écrit : >> Sorry - edited subject to get the linking correct >> Harm, >> https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706 >> > >> <https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706> >> has > a discussion about this as well. I've started looking at > the >> OpenLilyLib solution at the bottom of the thread but it doesn't > work on >> later versions of LilyPond. >> It would seem to me that using LP's parsing mechanisms is the right > way to >> go about it, and I'd offer to help if my health allowed. Is > there anyone >> on this mailing list who knows about it? > About the parsing? Certainly, but the potentiel > project spans many different areas of LilyPond. > And he design space is vast. > With Jacques Menu, we some had private discussions > about this. It may be feasible to implement XML export > by utilizing Jacque's musicformats library (see > his post). So far I only have rough ideas about > the LilyPond part, and it is not my current priority. > I think the most advanced solution so far is Jan-Peter's > https://github.com/openlilylib/lilypond-export > https://lists.gnu.org/archive/html/lilypond-devel/2018-10/msg00068.html > (CCing him). One could start off from that. >> It's something I will probably need soon. > By do means do try to help out, but don't > hold your breathe for it. It is a large > endeavor. > Best, > Jean
Re: Export from LilyPond to MusicXML (Thomas Morley)
Le 05/10/2021 à 13:08, Peter Toye a écrit : Sorry - edited subject to get the linking correct Harm, https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706 <https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706> has a discussion about this as well. I've started looking at the OpenLilyLib solution at the bottom of the thread but it doesn't work on later versions of LilyPond. It would seem to me that using LP's parsing mechanisms is the right way to go about it, and I'd offer to help if my health allowed. Is there anyone on this mailing list who knows about it? About the parsing? Certainly, but the potentiel project spans many different areas of LilyPond. And he design space is vast. With Jacques Menu, we some had private discussions about this. It may be feasible to implement XML export by utilizing Jacque's musicformats library (see his post). So far I only have rough ideas about the LilyPond part, and it is not my current priority. I think the most advanced solution so far is Jan-Peter's https://github.com/openlilylib/lilypond-export https://lists.gnu.org/archive/html/lilypond-devel/2018-10/msg00068.html (CCing him). One could start off from that. It's something I will probably need soon. By do means do try to help out, but don't hold your breathe for it. It is a large endeavor. Best, Jean
Re: Export from LilyPond to MusicXML (Thomas Morley)
Agreed, but it's possible that someone here might know more about this project and now it's getting on. Best regards, Peter mailto:lilyp...@ptoye.com www.ptoye.com - Tuesday, October 5, 2021, 12:53:43 PM, m.tarensk...@kpnmail.nl wrote: > lilypond-to-musicxml export is a frequentlly asked, but easier said than > done, feature request, that pops up from time to time. And everytime it > doesn't reach a point beyond discussions and experimental or quite incomplete > implementations. Apparently both MusicXML and LilyPond are complex beasts - I > am not complaining. > MT > Verzonden vanaf mijn Huawei mobiele telefoon
Re: Export from LilyPond to MusicXML (Thomas Morley)
lilypond-to-musicxml export is a frequentlly asked, but easier said than done, feature request, that pops up from time to time. And everytime it doesn't reach a point beyond discussions and experimental or quite incomplete implementations. Apparently both MusicXML and LilyPond are complex beasts - I am not complaining.MTVerzonden vanaf mijn Huawei mobiele telefoon
Re: Export from LilyPond to MusicXML (Thomas Morley)
Sorry - edited subject to get the linking correct Harm, https://music.stackexchange.com/questions/42315/lilypond-to-musicxml-to-sibelius#73706 has a discussion about this as well. I've started looking at the OpenLilyLib solution at the bottom of the thread but it doesn't work on later versions of LilyPond. It would seem to me that using LP's parsing mechanisms is the right way to go about it, and I'd offer to help if my health allowed. Is there anyone on this mailing list who knows about it? It's something I will probably need soon. Best regards, Peter mailto:lilyp...@ptoye.com www.ptoye.com - Tuesday, September 28, 2021, 6:58:40 AM, lilypond-user-requ...@gnu.org wrote: > -- > Message: 2 > Date: Tue, 28 Sep 2021 00:53:16 +0200 > From: Thomas Morley > To: Jacques Menu > Cc: "lilypond-user Mailing List (lilypond-user@gnu.org)" > , Dominique Fober > Subject: Re: Export from LilyPond to MusicXML > Message-ID: > > Content-Type: text/plain; charset="UTF-8" > Hi Jacques, > Am Mo., 27. Sept. 2021 um 00:48 Uhr schrieb Jacques Menu > : >> Hello folks, >> The recent posts on this subject show there is interest in the matter. Sorry >> for the length of this one... > Tbh, most of the mor detailed stuff is way over my head.. >> My work was initially homed by Grame’s libmusicxml2 library as an example of >> what it could be used for, in the lilypond branch at >> https://github.com/grame-cncm/libmusicxml/tree/lilypond. >> Dom Fober, the author and maintainer of libmusicxml2, and I decided some >> time ago to separate things for practical reasons, and I now push to the >> GitHub repository I created at https://github.com/jacques-menu/musicformats. > Good to know. >> I’m currenly finalizing version 1.0.0, which explains why the test and >> master branches are not up to date - only the dev branch is currently. >> The musicformats library is structured along the lines shown at page 16 in >> https://github.com/jacques-menu/musicformats/blob/dev/doc/maintainersGuideToMusicFormats/maintainersGuideToMusicformats.pdf >> (the users’s guide is not yet ‘usable’, sorry). >> The central component of musicformats is MSR (Music Score Representation), >> from which various formats can be obtained. >> In this picture, we see that we could create MusicXML output from within the >> LilyPond implementation going along the LilyPond - LPSR - MSR - MXSR - >> MusicMXL path. The missing part would be the creation of an LPSR (LilyPond >> Score Representation), the others already exist. >> As an example, the LPSR representation and LilyPond output produced by: >> xml2ly basic/HelloWorld.xml -display-lpsr > LPSR_contents.txt 2>&1 >> are in the attached LPSR_contents.txt file. >> The resulting score is: >> Jean and I have had discussions as to how the export to MusicXML could be >> tackled on the LilyPond side, but nothing concrete yet. Some of the >> information needed is readily accessible inside LilyPond, but grabbing the >> remaining part is not easy. >> The musicformats repository contains examples using the library to create >> scores in C++ applications, among them: >> jacquesmenu@macmini: ~/musicformats-git-dev/files/musicxml > >> Mikrokosmos3Wandering -a >> What Mikrokosmos3Wandering does: >> This multi-pass generator creates a textual representation >> of Zoltán Kodály's Mikrokosmos III Wandering score. >> It performs various passes depending on the output generated. >> Other passes are performed according to the options, such as >> displaying views of the internal data or printing a summary of the score. >> The activity log and warning/error messages go to standard error. >> jacquesmenu@macmini: ~/musicformats-git-dev/files/musicxml > >> Mikrokosmos3Wandering -apropos generate >> --- Help for atom "generate" in subgroup "Generated output" >> -generate, -gen GENERATED_OUTPUT_KIND >> Generate GENERATED_OUTPUT_KIND code to the output. >> The 5 generated output kinds available are: >> braille, guido, lilypond, midi and musicxml. >> The default is 'LilyPond output'. >> (midi output is actually not yet available, though) >> For example, one can run: >> jacquesmenu@macmini: ~/musicformats-git-dev/files/musicxml > >> Mikrokosmos3Wandering -generate musicxml -o Mikrokosmos3Wandering.xml >> -trace=passes >> %-- >> Pass 1: Creating the MSR score
Re: Export from LilyPond to MusicXML
Hi Jacques, Am Mo., 27. Sept. 2021 um 00:48 Uhr schrieb Jacques Menu : > > Hello folks, > > The recent posts on this subject show there is interest in the matter. Sorry > for the length of this one... Tbh, most of the mor detailed stuff is way over my head.. > > My work was initially homed by Grame’s libmusicxml2 library as an example of > what it could be used for, in the lilypond branch at > https://github.com/grame-cncm/libmusicxml/tree/lilypond. > > Dom Fober, the author and maintainer of libmusicxml2, and I decided some time > ago to separate things for practical reasons, and I now push to the GitHub > repository I created at https://github.com/jacques-menu/musicformats. Good to know. > I’m currenly finalizing version 1.0.0, which explains why the test and master > branches are not up to date - only the dev branch is currently. > > The musicformats library is structured along the lines shown at page 16 in > https://github.com/jacques-menu/musicformats/blob/dev/doc/maintainersGuideToMusicFormats/maintainersGuideToMusicformats.pdf > (the users’s guide is not yet ‘usable’, sorry). > > The central component of musicformats is MSR (Music Score Representation), > from which various formats can be obtained. > > In this picture, we see that we could create MusicXML output from within the > LilyPond implementation going along the LilyPond - LPSR - MSR - MXSR - > MusicMXL path. The missing part would be the creation of an LPSR (LilyPond > Score Representation), the others already exist. > > As an example, the LPSR representation and LilyPond output produced by: > > xml2ly basic/HelloWorld.xml -display-lpsr > LPSR_contents.txt 2>&1 > > are in the attached LPSR_contents.txt file. > > The resulting score is: > > > Jean and I have had discussions as to how the export to MusicXML could be > tackled on the LilyPond side, but nothing concrete yet. Some of the > information needed is readily accessible inside LilyPond, but grabbing the > remaining part is not easy. > > The musicformats repository contains examples using the library to create > scores in C++ applications, among them: > > jacquesmenu@macmini: ~/musicformats-git-dev/files/musicxml > > Mikrokosmos3Wandering -a > What Mikrokosmos3Wandering does: > > This multi-pass generator creates a textual representation > of Zoltán Kodály's Mikrokosmos III Wandering score. > It performs various passes depending on the output generated. > > Other passes are performed according to the options, such as > displaying views of the internal data or printing a summary of the score. > > The activity log and warning/error messages go to standard error. > > jacquesmenu@macmini: ~/musicformats-git-dev/files/musicxml > > Mikrokosmos3Wandering -apropos generate > --- Help for atom "generate" in subgroup "Generated output" > -generate, -gen GENERATED_OUTPUT_KIND > Generate GENERATED_OUTPUT_KIND code to the output. > The 5 generated output kinds available are: > braille, guido, lilypond, midi and musicxml. > The default is 'LilyPond output'. > > (midi output is actually not yet available, though) > > For example, one can run: > > jacquesmenu@macmini: ~/musicformats-git-dev/files/musicxml > > Mikrokosmos3Wandering -generate musicxml -o Mikrokosmos3Wandering.xml > -trace=passes > > %-- > Pass 1: Creating the MSR score with the functions > %-- > *** MusicXML warning *** :91: The staffMeasuresSlicesSequence of staff > "Part_OnlyPart_Staff_One" is null > *** MusicXML warning *** :91: The staffMeasuresSlicesSequence of staff > "Part_OnlyPart_Staff_Two" is null > > %-- > Pass 2: Convert the MSR score into a second MSR > %-- > > %-- > Pass 3: Translating the MSR into an MXSR > %-- > > %-- > Pass 4: Convert the MXSR into MusicXML text > %-- > > Opening file 'Mikrokosmos3Wandering.xml' for writing > Warning message(s) were issued for input line 91 > > > This creates file Mikrokosmos3Wandering.xml, attached. > > > The functionality of musicformats is available as API C++ functions. For > example, conversion from MusicXML data to LilyPond
Export from LilyPond to MusicXML
Hello folks,The recent posts on this subject show there is interest in the matter. Sorry for the length of this one...My work was initially homed by Grame’s libmusicxml2 library as an example of what it could be used for, in the lilypond branch at https://github.com/grame-cncm/libmusicxml/tree/lilypond.Dom Fober, the author and maintainer of libmusicxml2, and I decided some time ago to separate things for practical reasons, and I now push to the GitHub repository I created at https://github.com/jacques-menu/musicformats.I’m currenly finalizing version 1.0.0, which explains why the test and master branches are not up to date - only the dev branch is currently.The musicformats library is structured along the lines shown at page 16 in https://github.com/jacques-menu/musicformats/blob/dev/doc/maintainersGuideToMusicFormats/maintainersGuideToMusicformats.pdf (the users’s guide is not yet ‘usable’, sorry).The central component of musicformats is MSR (Music Score Representation), from which various formats can be obtained.In this picture, we see that we could create MusicXML output from within the LilyPond implementation going along the LilyPond - LPSR - MSR - MXSR - MusicMXL path. The missing part would be the creation of an LPSR (LilyPond Score Representation), the others already exist.As an example, the LPSR representation and LilyPond output produced by: xml2ly basic/HelloWorld.xml -display-lpsr > LPSR_contents.txt 2>&1are in the attached LPSR_contents.txt file. The resulting score is:Jean and I have had discussions as to how the export to MusicXML could be tackled on the LilyPond side, but nothing concrete yet. Some of the information needed is readily accessible inside LilyPond, but grabbing the remaining part is not easy. The musicformats repository contains examples using the library to create scores in C++ applications, among them:jacquesmenu@macmini: ~/musicformats-git-dev/files/musicxml > Mikrokosmos3Wandering -aWhat Mikrokosmos3Wandering does: This multi-pass generator creates a textual representation of Zoltán Kodály's Mikrokosmos III Wandering score. It performs various passes depending on the output generated. Other passes are performed according to the options, such as displaying views of the internal data or printing a summary of the score. The activity log and warning/error messages go to standard error.jacquesmenu@macmini: ~/musicformats-git-dev/files/musicxml > Mikrokosmos3Wandering -apropos generate--- Help for atom "generate" in subgroup "Generated output" -generate, -gen GENERATED_OUTPUT_KIND Generate GENERATED_OUTPUT_KIND code to the output. The 5 generated output kinds available are: braille, guido, lilypond, midi and musicxml. The default is 'LilyPond output'.(midi output is actually not yet available, though)For example, one can run:jacquesmenu@macmini: ~/musicformats-git-dev/files/musicxml > Mikrokosmos3Wandering -generate musicxml -o Mikrokosmos3Wandering.xml -trace=passes%-- Pass 1: Creating the MSR score with the functions%--*** MusicXML warning *** :91: The staffMeasuresSlicesSequence of staff "Part_OnlyPart_Staff_One" is null*** MusicXML warning *** :91: The staffMeasuresSlicesSequence of staff "Part_OnlyPart_Staff_Two" is null%-- Pass 2: Convert the MSR score into a second MSR%--%-- Pass 3: Translating the MSR into an MXSR%--%-- Pass 4: Convert the MXSR into MusicXML text%--Opening file 'Mikrokosmos3Wandering.xml' for writingWarning message(s) were issued for input line 91This creates file Mikrokosmos3Wandering.xml, attached.The functionality of musicformats is available as API C++ functions. For example, conversion from MusicXML data to LilyPond, as used by xml2ly and Grame’s experimental web site at https://libmusicxml.grame.fr, is available through these functions:/*! \brief Converts a MusicXML representation to the LilyPond format. \param file a file name \param out the output stream \return an error code (\c musicFormatsError::k_NoError when success)*/EXP musicFormatsError musicxmlfile2lilypond ( const char *file, const optionsVector& options, std::ostream& out, std::ostream& err);/*! \brief Converts a MusicXML representation to the LilyPond format. \param fd a file descriptor \param out the output stream \return an error code (\c musicFormatsError::k_NoError when success)*/EXP musicFormatsError musicxmlfd2lilypond ( FILE* fd, const optionsVector& opt
Re: SVG export - how might you add classes for all graphical objects?
That's quite handy to know, thanks for your response Carl. Cheers, Matt. On Wed, Jun 30, 2021 at 2:35 AM Carl Sorensen wrote: > > > > On 6/29/21, 2:43 AM, "lilypond-user on behalf of Matt Hood" > mattho...@gmail.com> wrote: > > Hi everyone, > > I'm working with lilypond output in the browser, using its SVG export > function. Lilypond permits attaching attributes to particular kinds of > grobs, e.g.: > > { > \override NoteHead.output-attributes = > #'((class . "NoteHead")) > c > } > > The above will cause all NoteHead objects to have the following SVG: > > > ...NoteHead grob SVG elements... > > > My question is: how can I make it so that all graphical objects have > their name in the class attribute? > > I've tried using the following scheme function: > > #(define (add-class grob grob-origin context) > (let (name (cdr (assoc 'name > (ly:grob-property grob 'meta > (set! (ly:grob-property grob 'output-attributes) '((class > . name) > > This successfully (I believe) extracts the correct name, and assigns > it to the output-attributes field. As per the instructions in the > lilypond documentation, I then attempted to use \applyOutput Score > #add-class to apply this function to all graphical objects, but it > didn't supply all of the required objects. My attempted code is below: > > \applyOutput Score #add-class > \score { > \new RhythmicStaff { > c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' } > } > } > > If I add a print call to the add-class function, I can see that it was > called for the objects with the following names from which crucial > objects such as NoteHead are missing: > > NonMusicalPaperColumn > PaperColumn > Clef > TimeSignature > LedgerLineSpanner > StaffSymbol > VerticalAxisGroup > SystemStartBar > SpacingSpanner > VerticalAlignment > StaffSpacing > BreakAlignment > LeftEdge > BreakAlignGroup > BreakAlignGroup > BreakAlignGroup > > Matt, I'm not an expert on \applyOutput, but it appears to me these are all > grobs created by engravers that live in the Score context by default. > > You may wish to try \applyOutput to Staff and Voice as well. > > Haven't tried it, and don't know if it will work, but it's an idea. > > HTH, > > Carl > >
Fwd: SVG export - how might you add classes for all graphical objects?
On Wed, Jun 30, 2021 at 3:32 AM Aaron Hill wrote: > > On 2021-06-29 9:43 am, Jean Abou Samra wrote: > > However, this problem can be solved by writing > > an engraver (those are the powerful tools that > > \applyOutput uses under the hood). > > > > \version "2.22.0" > > > > \layout { > > \context { > > \Score > > \consists > > #(lambda (context) > > (make-engraver > >(acknowledgers > > ((grob-interface engraver grob source-engraver) > > (set! (ly:grob-property grob 'output-attributes) > > `((class . ,(grob::name grob > > } > > } > > > > << > > { c d e f } > > \\ > > { g a b c' } > >>> > > NOTE: You might want this engraver to *append* to the class attribute, > so you can still specify classes on an individual basis: > > > \version "2.22.0" > > SvgAddClassName = > #(lambda (ctxt) >(define (add-class-name grob) > (let* ((attribs (ly:grob-property grob 'output-attributes '())) >(class (ly:assoc-get 'class attribs '())) >(name (grob::name grob))) > (set! class (if (null? class) name (format #f "~a ~a" class name))) > (set! attribs (assoc-set! attribs 'class class)) > (ly:grob-set-property! grob 'output-attributes attribs))) >(make-engraver > (acknowledgers > ((grob-interface engraver grob source) > (add-class-name grob) > > \layout { \context { \Score \consists \SvgAddClassName } } > > { \tweak output-attributes #'((class . foo)) b'4 } > > > > -- Aaron Hill Hi Aaron, thanks for your response and solution. I just tried it out and it works an absolute treat! Thanks for taking the time to put it together, I really appreciate it. Cheers, Matt.
Re: SVG export - how might you add classes for all graphical objects?
P.S. (Sorry to be spamming the list!) > Out of curiosity: what tool is this for? A browser-based rhythm game I'm putting together, which makes use of Lilypond's fantastic proportional notation feature. The addition of classes is used to separate moving objects (NoteHead, Stem, BarLine, etc) from non-moving objects (StaffLine, Clef, TimeSignature). Cheers, Matt. On Wed, Jun 30, 2021 at 2:43 AM Jean Abou Samra wrote: > > Hello, > > > Le 29/06/2021 10:42, Matt Hood a écrit : > > > > > > Hi everyone, > > > > I'm working with lilypond output in the browser, using its SVG export > > function. Lilypond permits attaching attributes to particular kinds of > > grobs, e.g.: > > > > { > > \override NoteHead.output-attributes = > > #'((class . "NoteHead")) > > c > > } > > > > The above will cause all NoteHead objects to have the following SVG: > > > > > > ...NoteHead grob SVG elements... > > > > > > My question is: how can I make it so that all graphical objects have > > their name in the class attribute? > > > > I've tried using the following scheme function: > > > > #(define (add-class grob grob-origin context) > > (let (name (cdr (assoc 'name > > This lacks a pair of parentheses around the > bindings. You might have posted the wrong > version of your code. > > > (ly:grob-property grob 'meta > > (set! (ly:grob-property grob 'output-attributes) '((class > > . name) > > '((class . name)) is literally a list containing a > list of the symbols 'class and 'name, which is not > very useful ;-) You rather want quasiquoting: > `((class . ,name)). > > > > > This successfully (I believe) extracts the correct name, and assigns > > it to the output-attributes field. As per the instructions in the > > lilypond documentation, I then attempted to use \applyOutput Score > > #add-class to apply this function to all graphical objects, but it > > didn't supply all of the required objects. My attempted code is below: > > > > \applyOutput Score #add-class > > \score { > > \new RhythmicStaff { > > c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' } > > } > > } > > > > If I add a print call to the add-class function, I can see that it was > > called for the objects with the following names from which crucial > > objects such as NoteHead are missing: > > > > NonMusicalPaperColumn > > PaperColumn > > Clef > > TimeSignature > > LedgerLineSpanner > > StaffSymbol > > VerticalAxisGroup > > SystemStartBar > > SpacingSpanner > > VerticalAlignment > > StaffSpacing > > BreakAlignment > > LeftEdge > > BreakAlignGroup > > BreakAlignGroup > > BreakAlignGroup > > I'm not sure how you got this output. The way > the code is written, the \applyOutput is separate > from the main \score, so it is a score of its own > containing no actual music. If you move it to > the beginning of the music, you should get at > least one NoteHead, as illustrated here: > > \version "2.22.0" > > { > \applyOutput Score > #(lambda (grob origin context) >(ly:message "~s" grob) >(set! (ly:grob-property grob 'color) > red)) > << > { c d e f } > \\ > { g a b c' } > >> > } > > This also shows the reason why \applyOutput > isn't working as you are expecting. \applyOutput > applies to one single time step. Think of it > as a \once \override. I don't think there > currently exists an equivalent of \applyOutput > for the whole score (perhaps because there were > not many use cases before output-attributes). > > However, this problem can be solved by writing > an engraver (those are the powerful tools that > \applyOutput uses under the hood). > > \version "2.22.0" > > \layout { > \context { > \Score > \consists > #(lambda (context) > (make-engraver >(acknowledgers > ((grob-interface engraver grob source-engraver) > (set! (ly:grob-property grob 'output-attributes) > `((class . ,(grob::name grob > } > } > > << > { c d e f } > \\ > { g a b c' } > >> > > > Out of curiosity: what tool is this for? > > Best, > Jean
Re: SVG export - how might you add classes for all graphical objects?
On Wed, Jun 30, 2021 at 2:43 AM Jean Abou Samra wrote: > > Hello, > >... > > I'm not sure how you got this output. The way > the code is written, the \applyOutput is separate > from the main \score, so it is a score of its own > containing no actual music. If you move it to > the beginning of the music, you should get at > least one NoteHead, as illustrated here: > > \version "2.22.0" > > { > \applyOutput Score > #(lambda (grob origin context) >(ly:message "~s" grob) >(set! (ly:grob-property grob 'color) > red)) > << > { c d e f } > \\ > { g a b c' } > >> > } > > This also shows the reason why \applyOutput > isn't working as you are expecting. \applyOutput > applies to one single time step. Think of it > as a \once \override. I don't think there > currently exists an equivalent of \applyOutput > for the whole score (perhaps because there were > not many use cases before output-attributes). > > However, this problem can be solved by writing > an engraver (those are the powerful tools that > \applyOutput uses under the hood). > > \version "2.22.0" > > \layout { > \context { > \Score > \consists > #(lambda (context) > (make-engraver >(acknowledgers > ((grob-interface engraver grob source-engraver) > (set! (ly:grob-property grob 'output-attributes) > `((class . ,(grob::name grob > } > } > > << > { c d e f } > \\ > { g a b c' } > >> > > > Out of curiosity: what tool is this for? > > Best, > Jean Thanks for picking up on those errors in the scheme function, Jean. I may have been a little cavelier in copying over the minimal code examples, and I hadn't picked up the quoting error. The output came from inserting (display name "\n"), to observe the output in the compilation process. I tried a variety of locations to place \applyOutput Score #add-class and this one gave me the most objects. Thanks for getting the ball rolling with the suggestion of a custom engraver - it looks like I have some documentation to read! They seem wonderfully useful. I really appreciate your response - thank you again. Cheers, Matt.
Re: SVG export - how might you add classes for all graphical objects?
> Le 29/06/2021 23:42, Jean Abou Samra a écrit : > > That being said, I'm not sure I would want to see something > along the lines of publicizing nested_property_alist. We already > use ly:assoc-get nearly everywhere (through the alias assoc-get), > and while more convenient thanks to the optional default value > parameter, it is not as efficient as assq-ref when, as is often > the case, the keys are symbols, which can be cheaply compared > with eq?. My concern is that code may then be written that > copies the data n times if doing n insertions instead of just > working on a copy made once. So this would warrant some thinking > and perhaps a structure of our own. The challenge will be in > trying to make it work more or less seamlessly with standard > Guile libraries. And of course I forgot to say what had triggered the reply in the first place: I think it would be more useful to support callbacks for subproperties. Jean
Re: SVG export - how might you add classes for all graphical objects?
> Le 29/06/2021 22:45, David Kastrup a écrit : > > > Aaron Hill writes: > > > On 2021-06-29 1:20 pm, David Kastrup wrote: > > >> > > >> \version "2.22.0" > > >> SvgAddClassName = > > >> #(lambda (ctxt) > > >> (define (add-class-name grob) > > >> (let* ((attribs (ly:grob-property grob 'output-attributes '())) > > >> (class (ly:assoc-get 'class attribs '())) > > >> (name (grob::name grob))) > > >> (set! class (if (null? class) name (format #f "~a ~a" class > > >> name))) > > >> (set! attribs (assoc-set! attribs 'class class)) > > >> (ly:grob-set-property! grob 'output-attributes attribs))) > > >> (make-engraver > > >> (acknowledgers > > >> ((grob-interface engraver grob source) > > >> (add-class-name grob) > > > That assoc-set! looks like a stinker. Doesn't it mess with shared > > > data > > > structures? > > Hrm... would it be better to explicitly alist-copy the result from > > ly:assoc-get? Actually, I guess you could do: > > > > (alist-cons 'class ... (alist-delete 'class attribs)) > > > Either that or not even bother about deleting the other entry. > > > ...since the SRFI says that alist-delete does not modify the original > > structure, only that it might return an alist with a common tail. > > And on this point, should LilyPond provide an ly:assoc-set to pair > > with ly:assoc-get that avoids potential issues with shared structures? > I am not sure that we'd want our own modifiers for basic data > structures. Though there may be a point in unifying hash tables, > association lists, vectors into a common data structure and provide > caching accessors for that. > > I mean, stuff like notename languages and drum tables and so are already > an awkward mixture. My single biggest annoyance and hair pulling source with Guile is its lack of good data structures. We use alists almost ubiquitously, going against all rules of computational complexity, but hash tables are much less convenient to create for a user, and much more complicated to work on with all standard functional primitives like map, filter, filter-map, fold, reduce, partition, etc. etc. etc. (they might also be less memory-efficient if I recall correctly). The use of alists is pervasive enough that switching to better structures might yield speedups. For example, a different storage for prob and grob properties (I think you had something based on vectors at some point?). There is a similar hiatus between arrays of grobs and lists of grobs due to the differing programming styles in C++ and Scheme. Recent Guile has something called "VLists" that could help here: https://www.gnu.org/software/guile/manual/html_node/VLists.html I have no idea about the extent to which this could match our use cases. The implementation is Scheme-only, and it would be ironic if switching to algorithms with better complexity led to a performance degradation (see the caveat about vlist-cons in the documentation page). To address Aaron's question more specifically and with shorter-term perspectives, one could add a Scheme interface for nested_property_alist in nested-property.cc (I *think* it has no side effects, too late to check today). It wouldn't exactly match this case, however: attrs = #'((name . NAME) (class . CLASS) (whatever . WHATEVER)) #(define (printit grob) (ly:message "~a" (ly:grob-property grob 'output-attributes))) { \override NoteHead.output-attributes = #attrs \override NoteHead.output-attributes.class = #'NEWCLASS \override NoteHead.after-line-breaking = #printit c } We might be able to make it set the value, though (again, I'm not looking hard at the code). That being said, I'm not sure I would want to see something along the lines of publicizing nested_property_alist. We already use ly:assoc-get nearly everywhere (through the alias assoc-get), and while more convenient thanks to the optional default value parameter, it is not as efficient as assq-ref when, as is often the case, the keys are symbols, which can be cheaply compared with eq?. My concern is that code may then be written that copies the data n times if doing n insertions instead of just working on a copy made once. So this would warrant some thinking and perhaps a structure of our own. The challenge will be in trying to make it work more or less seamlessly with standard Guile libraries. My 2 cents, Jean
Re: SVG export - how might you add classes for all graphical objects?
Aaron Hill writes: > On 2021-06-29 1:45 pm, David Kastrup wrote: >> Aaron Hill writes: >>> Hrm... would it be better to explicitly alist-copy the result from >>> ly:assoc-get? Actually, I guess you could do: >>> >>> (alist-cons 'class ... (alist-delete 'class attribs)) >>> >> Either that or not even bother about deleting the other entry. > > If you don't remove the old entry, then the SVG looks like this: > > > > I am fairly certain that it is not valid to have the same attribute > name twice in an element in SGML. Uh, ok. I was thinking of an alist as a canonical data structure and there overriding at the front is permissable. But if it is used in that manner... -- David Kastrup
Re: SVG export - how might you add classes for all graphical objects?
On 6/29/21, 2:55 PM, "lilypond-user on behalf of Aaron Hill" wrote: On 2021-06-29 1:45 pm, David Kastrup wrote: > Aaron Hill writes: >> Hrm... would it be better to explicitly alist-copy the result from >> ly:assoc-get? Actually, I guess you could do: >> >> >> (alist-cons 'class ... (alist-delete 'class attribs)) >> > > Either that or not even bother about deleting the other entry. If you don't remove the old entry, then the SVG looks like this: I am fairly certain that it is not valid to have the same attribute name twice in an element in SGML. You could do alist-copy, then assoc-set! on the copy. Carl -- Aaron Hill
Re: SVG export - how might you add classes for all graphical objects?
On 2021-06-29 1:45 pm, David Kastrup wrote: Aaron Hill writes: Hrm... would it be better to explicitly alist-copy the result from ly:assoc-get? Actually, I guess you could do: (alist-cons 'class ... (alist-delete 'class attribs)) Either that or not even bother about deleting the other entry. If you don't remove the old entry, then the SVG looks like this: I am fairly certain that it is not valid to have the same attribute name twice in an element in SGML. -- Aaron Hill
Re: SVG export - how might you add classes for all graphical objects?
Aaron Hill writes: > On 2021-06-29 1:20 pm, David Kastrup wrote: >>> >>> \version "2.22.0" >>> SvgAddClassName = >>> #(lambda (ctxt) >>> (define (add-class-name grob) >>>(let* ((attribs (ly:grob-property grob 'output-attributes '())) >>> (class (ly:assoc-get 'class attribs '())) >>> (name (grob::name grob))) >>> (set! class (if (null? class) name (format #f "~a ~a" class >>> name))) >>> (set! attribs (assoc-set! attribs 'class class)) >>> (ly:grob-set-property! grob 'output-attributes attribs))) >>> (make-engraver >>>(acknowledgers >>> ((grob-interface engraver grob source) >>> (add-class-name grob) >> That assoc-set! looks like a stinker. Doesn't it mess with shared >> data >> structures? > > Hrm... would it be better to explicitly alist-copy the result from > ly:assoc-get? Actually, I guess you could do: > > > (alist-cons 'class ... (alist-delete 'class attribs)) > Either that or not even bother about deleting the other entry. > ...since the SRFI says that alist-delete does not modify the original > structure, only that it might return an alist with a common tail. > > And on this point, should LilyPond provide an ly:assoc-set to pair > with ly:assoc-get that avoids potential issues with shared structures? I am not sure that we'd want our own modifiers for basic data structures. Though there may be a point in unifying hash tables, association lists, vectors into a common data structure and provide caching accessors for that. I mean, stuff like notename languages and drum tables and so are already an awkward mixture. -- David Kastrup
Re: SVG export - how might you add classes for all graphical objects?
On 2021-06-29 1:20 pm, David Kastrup wrote: \version "2.22.0" SvgAddClassName = #(lambda (ctxt) (define (add-class-name grob) (let* ((attribs (ly:grob-property grob 'output-attributes '())) (class (ly:assoc-get 'class attribs '())) (name (grob::name grob))) (set! class (if (null? class) name (format #f "~a ~a" class name))) (set! attribs (assoc-set! attribs 'class class)) (ly:grob-set-property! grob 'output-attributes attribs))) (make-engraver (acknowledgers ((grob-interface engraver grob source) (add-class-name grob) That assoc-set! looks like a stinker. Doesn't it mess with shared data structures? Hrm... would it be better to explicitly alist-copy the result from ly:assoc-get? Actually, I guess you could do: (alist-cons 'class ... (alist-delete 'class attribs)) ...since the SRFI says that alist-delete does not modify the original structure, only that it might return an alist with a common tail. And on this point, should LilyPond provide an ly:assoc-set to pair with ly:assoc-get that avoids potential issues with shared structures? -- Aaron Hill
Re: SVG export - how might you add classes for all graphical objects?
On 6/29/21, 2:14 PM, "Aaron Hill" wrote: On 2021-06-29 12:45 pm, Carl Sorensen wrote: > I believe that the logical implications of side-effects are not very > concerning when local variables are set!, so there's probably very > little or no downside to the set!s in Aaron's code. In fact, it's > possible that Aaron's code will use less heap space by re-using class > instead of adding a new variable grob-class-name. But I can't help > myself; I want to avoid the grief Sussman would give me over two > unneeded set! calls. I prefer that pattern of set! calls because it helps you avoid nesting S-expressions too deeply, which I feel greatly improves readability and maintainability. It is the same reason I bothered to define the add-class-name procedure, so that it would not be nested within the engraver definition itself, better separating concerns. Additionally, I have taken flack for pushing some of the more functional elements of Scheme programming. (Mention the word "lambda" once, and everyone assumes you are a pure functional zealot.) Regardless, I have tended to favor a more imperative approach lately, something that is likely to be more consumable for users of LilyPond. I don't disagree with your assessment. Thanks, Carl
Re: SVG export - how might you add classes for all graphical objects?
Aaron Hill writes: > On 2021-06-29 9:43 am, Jean Abou Samra wrote: >> However, this problem can be solved by writing >> an engraver (those are the powerful tools that >> \applyOutput uses under the hood). >> \version "2.22.0" >> \layout { >> \context { >> \Score >> \consists >> #(lambda (context) >> (make-engraver >>(acknowledgers >> ((grob-interface engraver grob source-engraver) >> (set! (ly:grob-property grob 'output-attributes) >> `((class . ,(grob::name grob >> } >> } >> << >> { c d e f } >> \\ >> { g a b c' } > > NOTE: You might want this engraver to *append* to the class attribute, > so you can still specify classes on an individual basis: > > > \version "2.22.0" > > SvgAddClassName = > #(lambda (ctxt) > (define (add-class-name grob) >(let* ((attribs (ly:grob-property grob 'output-attributes '())) > (class (ly:assoc-get 'class attribs '())) > (name (grob::name grob))) > (set! class (if (null? class) name (format #f "~a ~a" class name))) > (set! attribs (assoc-set! attribs 'class class)) > (ly:grob-set-property! grob 'output-attributes attribs))) > (make-engraver >(acknowledgers > ((grob-interface engraver grob source) > (add-class-name grob) That assoc-set! looks like a stinker. Doesn't it mess with shared data structures? > > \layout { \context { \Score \consists \SvgAddClassName } } > > { \tweak output-attributes #'((class . foo)) b'4 } > > > > -- Aaron Hill > > -- David Kastrup
Re: SVG export - how might you add classes for all graphical objects?
On 2021-06-29 12:45 pm, Carl Sorensen wrote: I believe that the logical implications of side-effects are not very concerning when local variables are set!, so there's probably very little or no downside to the set!s in Aaron's code. In fact, it's possible that Aaron's code will use less heap space by re-using class instead of adding a new variable grob-class-name. But I can't help myself; I want to avoid the grief Sussman would give me over two unneeded set! calls. I prefer that pattern of set! calls because it helps you avoid nesting S-expressions too deeply, which I feel greatly improves readability and maintainability. It is the same reason I bothered to define the add-class-name procedure, so that it would not be nested within the engraver definition itself, better separating concerns. Additionally, I have taken flack for pushing some of the more functional elements of Scheme programming. (Mention the word "lambda" once, and everyone assumes you are a pure functional zealot.) Regardless, I have tended to favor a more imperative approach lately, something that is likely to be more consumable for users of LilyPond. -- Aaron Hill
Re: SVG export - how might you add classes for all graphical objects?
On 6/29/21, 11:33 AM, "lilypond-user on behalf of Aaron Hill" wrote: On 2021-06-29 9:43 am, Jean Abou Samra wrote: > However, this problem can be solved by writing > an engraver (those are the powerful tools that > \applyOutput uses under the hood). > > \version "2.22.0" > > \layout { > \context { > \Score > \consists > #(lambda (context) > (make-engraver >(acknowledgers > ((grob-interface engraver grob source-engraver) > (set! (ly:grob-property grob 'output-attributes) > `((class . ,(grob::name grob > } > } > > << > { c d e f } > \\ > { g a b c' } >>> NOTE: You might want this engraver to *append* to the class attribute, so you can still specify classes on an individual basis: Great idea, and nice implementation, Aaron! \version "2.22.0" SvgAddClassName = #(lambda (ctxt) (define (add-class-name grob) (let* ((attribs (ly:grob-property grob 'output-attributes '())) (class (ly:assoc-get 'class attribs '())) (name (grob::name grob))) (set! class (if (null? class) name (format #f "~a ~a" class name))) (set! attribs (assoc-set! attribs 'class class)) (ly:grob-set-property! grob 'output-attributes attribs))) (make-engraver (acknowledgers ((grob-interface engraver grob source) (add-class-name grob) \layout { \context { \Score \consists \SvgAddClassName } } { \tweak output-attributes #'((class . foo)) b'4 } When I learned Scheme 36 years ago from the CS guys at MIT, they really frowned on using set! (side-effects of code were avoided as much as possible). So I rewrote the code using only the necessary set! functions \version "2.20.0" SvgAddClassName = #(lambda (ctxt) (define (add-class-name grob) (let* ((attribs (ly:grob-property grob 'output-attributes '())) (class (ly:assoc-get 'class attribs '())) (name (grob::name grob)) (grob-class-name (if (null? class) name (format #f "~a ~a" class name (ly:grob-set-property! grob 'output-attributes (assoc-set! attribs 'class grob-class-name (make-engraver (acknowledgers ((grob-interface engraver grob source) (add-class-name grob) \layout { \context { \Score \consists \SvgAddClassName } } { \tweak output-attributes #'((class . foo)) b'4 } I believe that the logical implications of side-effects are not very concerning when local variables are set!, so there's probably very little or no downside to the set!s in Aaron's code. In fact, it's possible that Aaron's code will use less heap space by re-using class instead of adding a new variable grob-class-name. But I can't help myself; I want to avoid the grief Sussman would give me over two unneeded set! calls. Carl
Re: SVG export - how might you add classes for all graphical objects?
On 2021-06-29 9:43 am, Jean Abou Samra wrote: However, this problem can be solved by writing an engraver (those are the powerful tools that \applyOutput uses under the hood). \version "2.22.0" \layout { \context { \Score \consists #(lambda (context) (make-engraver (acknowledgers ((grob-interface engraver grob source-engraver) (set! (ly:grob-property grob 'output-attributes) `((class . ,(grob::name grob } } << { c d e f } \\ { g a b c' } NOTE: You might want this engraver to *append* to the class attribute, so you can still specify classes on an individual basis: \version "2.22.0" SvgAddClassName = #(lambda (ctxt) (define (add-class-name grob) (let* ((attribs (ly:grob-property grob 'output-attributes '())) (class (ly:assoc-get 'class attribs '())) (name (grob::name grob))) (set! class (if (null? class) name (format #f "~a ~a" class name))) (set! attribs (assoc-set! attribs 'class class)) (ly:grob-set-property! grob 'output-attributes attribs))) (make-engraver (acknowledgers ((grob-interface engraver grob source) (add-class-name grob) \layout { \context { \Score \consists \SvgAddClassName } } { \tweak output-attributes #'((class . foo)) b'4 } -- Aaron Hill
Re: SVG export - how might you add classes for all graphical objects?
Hello, > Le 29/06/2021 10:42, Matt Hood a écrit : > > > Hi everyone, > > I'm working with lilypond output in the browser, using its SVG export > function. Lilypond permits attaching attributes to particular kinds of > grobs, e.g.: > > { > \override NoteHead.output-attributes = > #'((class . "NoteHead")) > c > } > > The above will cause all NoteHead objects to have the following SVG: > > > ...NoteHead grob SVG elements... > > > My question is: how can I make it so that all graphical objects have > their name in the class attribute? > > I've tried using the following scheme function: > > #(define (add-class grob grob-origin context) > (let (name (cdr (assoc 'name This lacks a pair of parentheses around the bindings. You might have posted the wrong version of your code. > (ly:grob-property grob 'meta > (set! (ly:grob-property grob 'output-attributes) '((class > . name) '((class . name)) is literally a list containing a list of the symbols 'class and 'name, which is not very useful ;-) You rather want quasiquoting: `((class . ,name)). > > This successfully (I believe) extracts the correct name, and assigns > it to the output-attributes field. As per the instructions in the > lilypond documentation, I then attempted to use \applyOutput Score > #add-class to apply this function to all graphical objects, but it > didn't supply all of the required objects. My attempted code is below: > > \applyOutput Score #add-class > \score { > \new RhythmicStaff { > c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' } > } > } > > If I add a print call to the add-class function, I can see that it was > called for the objects with the following names from which crucial > objects such as NoteHead are missing: > > NonMusicalPaperColumn > PaperColumn > Clef > TimeSignature > LedgerLineSpanner > StaffSymbol > VerticalAxisGroup > SystemStartBar > SpacingSpanner > VerticalAlignment > StaffSpacing > BreakAlignment > LeftEdge > BreakAlignGroup > BreakAlignGroup > BreakAlignGroup I'm not sure how you got this output. The way the code is written, the \applyOutput is separate from the main \score, so it is a score of its own containing no actual music. If you move it to the beginning of the music, you should get at least one NoteHead, as illustrated here: \version "2.22.0" { \applyOutput Score #(lambda (grob origin context) (ly:message "~s" grob) (set! (ly:grob-property grob 'color) red)) << { c d e f } \\ { g a b c' } >> } This also shows the reason why \applyOutput isn't working as you are expecting. \applyOutput applies to one single time step. Think of it as a \once \override. I don't think there currently exists an equivalent of \applyOutput for the whole score (perhaps because there were not many use cases before output-attributes). However, this problem can be solved by writing an engraver (those are the powerful tools that \applyOutput uses under the hood). \version "2.22.0" \layout { \context { \Score \consists #(lambda (context) (make-engraver (acknowledgers ((grob-interface engraver grob source-engraver) (set! (ly:grob-property grob 'output-attributes) `((class . ,(grob::name grob } } << { c d e f } \\ { g a b c' } >> Out of curiosity: what tool is this for? Best, Jean
Re: SVG export - how might you add classes for all graphical objects?
On 6/29/21, 2:43 AM, "lilypond-user on behalf of Matt Hood" wrote: Hi everyone, I'm working with lilypond output in the browser, using its SVG export function. Lilypond permits attaching attributes to particular kinds of grobs, e.g.: { \override NoteHead.output-attributes = #'((class . "NoteHead")) c } The above will cause all NoteHead objects to have the following SVG: ...NoteHead grob SVG elements... My question is: how can I make it so that all graphical objects have their name in the class attribute? I've tried using the following scheme function: #(define (add-class grob grob-origin context) (let (name (cdr (assoc 'name (ly:grob-property grob 'meta (set! (ly:grob-property grob 'output-attributes) '((class . name) This successfully (I believe) extracts the correct name, and assigns it to the output-attributes field. As per the instructions in the lilypond documentation, I then attempted to use \applyOutput Score #add-class to apply this function to all graphical objects, but it didn't supply all of the required objects. My attempted code is below: \applyOutput Score #add-class \score { \new RhythmicStaff { c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' } } } If I add a print call to the add-class function, I can see that it was called for the objects with the following names from which crucial objects such as NoteHead are missing: NonMusicalPaperColumn PaperColumn Clef TimeSignature LedgerLineSpanner StaffSymbol VerticalAxisGroup SystemStartBar SpacingSpanner VerticalAlignment StaffSpacing BreakAlignment LeftEdge BreakAlignGroup BreakAlignGroup BreakAlignGroup Matt, I'm not an expert on \applyOutput, but it appears to me these are all grobs created by engravers that live in the Score context by default. You may wish to try \applyOutput to Staff and Voice as well. Haven't tried it, and don't know if it will work, but it's an idea. HTH, Carl
SVG export - how might you add classes for all graphical objects?
Hi everyone, I'm working with lilypond output in the browser, using its SVG export function. Lilypond permits attaching attributes to particular kinds of grobs, e.g.: { \override NoteHead.output-attributes = #'((class . "NoteHead")) c } The above will cause all NoteHead objects to have the following SVG: ...NoteHead grob SVG elements... My question is: how can I make it so that all graphical objects have their name in the class attribute? I've tried using the following scheme function: #(define (add-class grob grob-origin context) (let (name (cdr (assoc 'name (ly:grob-property grob 'meta (set! (ly:grob-property grob 'output-attributes) '((class . name) This successfully (I believe) extracts the correct name, and assigns it to the output-attributes field. As per the instructions in the lilypond documentation, I then attempted to use \applyOutput Score #add-class to apply this function to all graphical objects, but it didn't supply all of the required objects. My attempted code is below: \applyOutput Score #add-class \score { \new RhythmicStaff { c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' } } } If I add a print call to the add-class function, I can see that it was called for the objects with the following names from which crucial objects such as NoteHead are missing: NonMusicalPaperColumn PaperColumn Clef TimeSignature LedgerLineSpanner StaffSymbol VerticalAxisGroup SystemStartBar SpacingSpanner VerticalAlignment StaffSpacing BreakAlignment LeftEdge BreakAlignGroup BreakAlignGroup BreakAlignGroup If there were a way to run add-class on all graphical objects, that might be a good solution to the problem. Any help would be much appreciated! Thanks, Matt.
Re: Export to musicxml
> What is the current state of the art with musicxml export? Any work > being done on that? I think the best stuff currently avaible is what Jacques is working on in the (external) `libmusicxml` git repository (in the `lilypond` branch). Werner
Export to musicxml
What is the current state of the art with musicxml export? Any work being done on that? Andrew
Re: png export resolution
On Tue, 14 Apr, 2020 at 08:35, Martin Tarenskeen wrote: Hi, If I type "lilypond -dhelp" I see "resolution (101)". Do I understand correctly that when using the --png option the default export resolution is 101 dpi? I am sure there is a good reason to have chosen 101 and not 100, or 110? Don't worry, I know I can change this with the -dresolution option. I was just wondering about that strange value. Hi Martin I'm cleaning my inbox and I think nobody replied to your question. It's not only in -dhelp, this is documented also in the Usage manual. I've tried looking at git history. That number changed from 116 to 90 and then 101. There was a comment explaining that number: ;; at 101.178, a staff space is exactly 7 pixels. (resolution 101.178 "resolution for generating bitmaps") So the purpose would seem to have a "pixel perfect" staff space.
png export resolution
Hi, If I type "lilypond -dhelp" I see "resolution (101)". Do I understand correctly that when using the --png option the default export resolution is 101 dpi? I am sure there is a good reason to have chosen 101 and not 100, or 110? Don't worry, I know I can change this with the -dresolution option. I was just wondering about that strange value. -- MT
Re: Frescobaldi, improve support for audio export
Am 21. Oktober 2019 18:52:29 MESZ schrieb Saul Tobin : >Would the bundled VLC be redundant to an existing system install of >VLC? >Would it be usable instead of a system install? Would the bundled VLC >get >updates? As I've said several times in this thread *bundling* anything with Frescobaldi is not what we are talking about here. Urs > >I normally have VLC installed anyway, but I'd rather not have to keep a >separate copy on disk just for Frescobaldi. > > >On Sun, Oct 20, 2019, 10:33 PM Federico Bruni >wrote: > >> Il giorno ven 18 ott 2019 alle 23:14, J Martin Rushton via >> lilypond-user ha scritto: >> > There is a VLC available through flatpack, but I've not used it (so >> > therefore cannot comment), but have seen warnings that it will pull >in >> > up to 1.2 GiB of other packages including the complete KDE >> > implementation. >> >> $ flatpak info org.videolan.VLC | grep 'Installed' >>Installed: 77,7 MB >> >> $ flatpak info org.kde.Platform//5.13 | grep Installed >>Installed: 910,3 MB >> >> The KDE runtime may be used by other Qt applications installed in >your >> system. >> >> You may want to read this post by the author of Flatpak: >> >> >https://blogs.gnome.org/alexl/2017/10/02/on-application-sizes-and-bloat-in-flatpak/ >> >> In a nutshell: Flatpak is a bundling system and as such it requires >> more disk space, but the benefits (of shipping a self-contained and >> independent application) may offset the cost for some people, >> especially today (as large disks are smaller and cheaper). The >article >> explains how ostree helps in reducing the duplication between similar >> runtimes. >> >> >> >> ___ >> lilypond-user mailing list >> lilypond-user@gnu.org >> https://lists.gnu.org/mailman/listinfo/lilypond-user >> -- Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
Would the bundled VLC be redundant to an existing system install of VLC? Would it be usable instead of a system install? Would the bundled VLC get updates? I normally have VLC installed anyway, but I'd rather not have to keep a separate copy on disk just for Frescobaldi. On Sun, Oct 20, 2019, 10:33 PM Federico Bruni wrote: > Il giorno ven 18 ott 2019 alle 23:14, J Martin Rushton via > lilypond-user ha scritto: > > There is a VLC available through flatpack, but I've not used it (so > > therefore cannot comment), but have seen warnings that it will pull in > > up to 1.2 GiB of other packages including the complete KDE > > implementation. > > $ flatpak info org.videolan.VLC | grep 'Installed' >Installed: 77,7 MB > > $ flatpak info org.kde.Platform//5.13 | grep Installed >Installed: 910,3 MB > > The KDE runtime may be used by other Qt applications installed in your > system. > > You may want to read this post by the author of Flatpak: > > https://blogs.gnome.org/alexl/2017/10/02/on-application-sizes-and-bloat-in-flatpak/ > > In a nutshell: Flatpak is a bundling system and as such it requires > more disk space, but the benefits (of shipping a self-contained and > independent application) may offset the cost for some people, > especially today (as large disks are smaller and cheaper). The article > explains how ostree helps in reducing the duplication between similar > runtimes. > > > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
Il giorno ven 18 ott 2019 alle 23:14, J Martin Rushton via lilypond-user ha scritto: There is a VLC available through flatpack, but I've not used it (so therefore cannot comment), but have seen warnings that it will pull in up to 1.2 GiB of other packages including the complete KDE implementation. $ flatpak info org.videolan.VLC | grep 'Installed' Installed: 77,7 MB $ flatpak info org.kde.Platform//5.13 | grep Installed Installed: 910,3 MB The KDE runtime may be used by other Qt applications installed in your system. You may want to read this post by the author of Flatpak: https://blogs.gnome.org/alexl/2017/10/02/on-application-sizes-and-bloat-in-flatpak/ In a nutshell: Flatpak is a bundling system and as such it requires more disk space, but the benefits (of shipping a self-contained and independent application) may offset the cost for some people, especially today (as large disks are smaller and cheaper). The article explains how ostree helps in reducing the duplication between similar runtimes. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
Am 19.10.19 um 18:08 schrieb David Wright: On Fri 18 Oct 2019 at 23:14:30 (+0100), Lilypond-User wrote: On 18/10/2019 22:06, Urs Liska wrote: Am 18. Oktober 2019 22:45:28 MESZ schrieb Karlin High : On 10/18/2019 3:17 PM, Guy Stalnaker wrote: So, it looks like VLC with the right syntax may be able to use FluidSynth/soundfont to "play" midi and FFMpeg to encode to AAC or other codecs - or - output WAV file as input to lame It's a complicated commandline but I've seen (and created) worse LOL Complicated is not an issue - that's what Frescobaldi can manage. It has to be reliable and ideally cross-platform Anyone planning on using VLC on Fedora, RHEL or CentOS needs to check out the current situation. For RHEL/CentOS AIUI: 7.7 VLC from the usual sources does not work (in fact crashes some updates). 8.0 VLC is not available. There is a VLC available through flatpack, but I've not used it (so therefore cannot comment), but have seen warnings that it will pull in up to 1.2 GiB of other packages including the complete KDE implementation. Perhaps much of this is because VL stands for Video-LAN, neither of which has much to do with MIDI→MP3. Quite honestly, I'm not sure I see the wisdom of bundling in any or all of VLC into Frescobaldi. The hiatus in support of MIDI by Windows versions 2.1.0 up gives an example of the kind of problems that can ensue. Nobody whats to *bundle* any tools with Frescobaldi ... I would have thought that people who convert their MIDI files would (a) have access to platform-appropriate tools already, (b) perhaps want to use different soundfonts from those supplied, and (c) want to use such tools on MIDI files that don't originate from F~ and LP. ... the idea is to provide a direct way to trigger the toolchain from Frescobaldi. For example we have an "Import MusicXML" command although everyone who wants to do it already has musicxml2ly installed as part of LilyPond. Or, to make the point even clearer: we also "bundle" LilyPond with Frescobaldi although people could use the command line for compiling their scores. Currently this function uses a hard-coded "timidity" invocation, and my plan is to support a selection of external tools and a selection of target audio formats to choose from - when the external tool is available on the system. Urs Cheers, David. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
On Fri 18 Oct 2019 at 23:14:30 (+0100), Lilypond-User wrote: > On 18/10/2019 22:06, Urs Liska wrote: > > Am 18. Oktober 2019 22:45:28 MESZ schrieb Karlin High > > : > >> On 10/18/2019 3:17 PM, Guy Stalnaker wrote: > >>> So, it looks like VLC with the right syntax may be able to use > >>> FluidSynth/soundfont to "play" midi and FFMpeg to encode to AAC or other > >>> codecs - or - output WAV file as input to lame > >>> > >>> It's a complicated commandline but I've seen (and created) worse LOL > > > > Complicated is not an issue - that's what Frescobaldi can manage. It has to > > be reliable and ideally cross-platform > > > Anyone planning on using VLC on Fedora, RHEL or CentOS needs to check > out the current situation. For RHEL/CentOS AIUI: > > 7.7 VLC from the usual sources does not work (in fact crashes some updates). > 8.0 VLC is not available. > > There is a VLC available through flatpack, but I've not used it (so > therefore cannot comment), but have seen warnings that it will pull in > up to 1.2 GiB of other packages including the complete KDE implementation. Perhaps much of this is because VL stands for Video-LAN, neither of which has much to do with MIDI→MP3. Quite honestly, I'm not sure I see the wisdom of bundling in any or all of VLC into Frescobaldi. The hiatus in support of MIDI by Windows versions 2.1.0 up gives an example of the kind of problems that can ensue. I would have thought that people who convert their MIDI files would (a) have access to platform-appropriate tools already, (b) perhaps want to use different soundfonts from those supplied, and (c) want to use such tools on MIDI files that don't originate from F~ and LP. Cheers, David. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: VLC versions was Re:Frescobaldi, improve support for audio export
On 19/10/2019 13:24, Henning Hraban Ramm wrote: > >> Am 2019-10-19 um 13:55 schrieb Bill via lilypond-user >> : >> >> >> this is what I get on command line when I type >> vlc --version: >> >> VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80) >> >> I'm on Linux Mint 18.? can I really be that far behind. I did try to import >> a midi file and it couldn't play it nor could it export it as an mp3. > > Current version is 3.0.8, see videolan.org > > from https://wiki.videolan.org/Midi/: > """ > VLC media player can play Standard MIDI File (.MID) and RIFF MIDI (.RMI) > files since version 0.9.0. > Windows binary builds included MIDI support only in versions VLC media player > from 1.1.0 through 2.0.8. Starting from version 2.1.0, support was dropped > due to security issues. It was re-activated in VLC 3.0.0. > … > Linux > If the FluidSynth codec is not shown in VLC's preferences, you have to > install it as well as sound fonts. E.g. on Ubuntu 18.04 and derivatives it is > in the vlc-plugin-fluidsynthpackage, while the fluid-soundfont-gs and > fluid-soundfont-gm packages install some sound fonts in /usr/share/sounds/sf2. > """ > > >> 7.7VLC from the usual sources does not work (in fact crashes some >> updates). >> 8.0VLC is not available. > > Don’t know where those come from. > > Greetlings, Hraban > --- > fiëé visuëlle > Henning Hraban Ramm > https://www.fiee.net > My original posting of 18/10/2019, 23:14 said: %<- Anyone planning on using VLC on Fedora, RHEL or CentOS needs to checkout the current situation. For RHEL/CentOS AIUI: 7.7 VLC from the usual sources does not work (in fact crashes some updates). 8.0 VLC is not available. There is a VLC available through flatpack, but I've not used it (so therefore cannot comment), but have seen warnings that it will pull in up to 1.2 GiB of other packages including the complete KDE implementation. -- J Martin Rushton MBCS ---%<--- Nowhere did I mention Mint. The summary is derived from traffic on the CentOS maillist (cen...@cantos.org) and the CentOS forums (https://www.centos.org/forums). JMR signature.asc Description: OpenPGP digital signature ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: VLC versions was Re:Frescobaldi, improve support for audio export
> Am 2019-10-19 um 13:55 schrieb Bill via lilypond-user : > > > this is what I get on command line when I type > vlc --version: > > VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80) > > I'm on Linux Mint 18.? can I really be that far behind. I did try to import > a midi file and it couldn't play it nor could it export it as an mp3. Current version is 3.0.8, see videolan.org from https://wiki.videolan.org/Midi/: """ VLC media player can play Standard MIDI File (.MID) and RIFF MIDI (.RMI) files since version 0.9.0. Windows binary builds included MIDI support only in versions VLC media player from 1.1.0 through 2.0.8. Starting from version 2.1.0, support was dropped due to security issues. It was re-activated in VLC 3.0.0. … Linux If the FluidSynth codec is not shown in VLC's preferences, you have to install it as well as sound fonts. E.g. on Ubuntu 18.04 and derivatives it is in the vlc-plugin-fluidsynthpackage, while the fluid-soundfont-gs and fluid-soundfont-gm packages install some sound fonts in /usr/share/sounds/sf2. """ > 7.7VLC from the usual sources does not work (in fact crashes some > updates). > 8.0VLC is not available. Don’t know where those come from. Greetlings, Hraban --- fiëé visuëlle Henning Hraban Ramm https://www.fiee.net ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
VLC versions was Re:Frescobaldi, improve support for audio export
this is what I get on command line when I type vlc --version: VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80) VLC version 2.2.2 Weatherwax (2.2.2-0-g6259d80) Compiled by buildd on lgw01-09.buildd (Aug 8 2017 18:59:52) Compiler: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) This program comes with NO WARRANTY, to the extent permitted by law. You may redistribute it under the terms of the GNU General Public License; see the file named COPYING for details. Written by the VideoLAN team; see the AUTHORS file. I'm on Linux Mint 18.? can I really be that far behind. I did try to import a midi file and it couldn't play it nor could it export it as an mp3. 7.7 VLC from the usual sources does not work (in fact crashes some updates). 8.0 VLC is not available. There is a VLC available through flatpack, but I've not used it (so therefore cannot comment), but have seen warnings that it will pull in up to 1.2 GiB of other packages including the complete KDE implementation. -- J Martin Rushton MBCS I have not seen anything get added to lilypond proper for a long time. I may be wrong, but it's immensely difficult to get changes to core it would seem. Fair enough too. That's why openlilylib exists. Curious, Bill ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
On 18/10/2019 22:06, Urs Liska wrote: > > > Am 18. Oktober 2019 22:45:28 MESZ schrieb Karlin High : >> On 10/18/2019 3:17 PM, Guy Stalnaker wrote: >>> So, it looks like VLC with the right syntax may be able to use >>> FluidSynth/soundfont to "play" midi and FFMpeg to encode to AAC or >> other >>> codecs - or - output WAV file as input to lame >>> >>> It's a complicated commandline but I've seen (and created) worse LOL >> > > Complicated is not an issue - that's what Frescobaldi can manage. It has to > be reliable and ideally cross-platform > >> Actually, VLC on Windows can encode MIDI to MP3 without using the >> command line at all. That's what I use. > > The point *is* to have a command line to be able to use it from Frescobaldi. > > Urs > > Anyone planning on using VLC on Fedora, RHEL or CentOS needs to check out the current situation. For RHEL/CentOS AIUI: 7.7 VLC from the usual sources does not work (in fact crashes some updates). 8.0 VLC is not available. There is a VLC available through flatpack, but I've not used it (so therefore cannot comment), but have seen warnings that it will pull in up to 1.2 GiB of other packages including the complete KDE implementation. -- J Martin Rushton MBCS signature.asc Description: OpenPGP digital signature ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
Am 18. Oktober 2019 22:45:28 MESZ schrieb Karlin High : >On 10/18/2019 3:17 PM, Guy Stalnaker wrote: >> So, it looks like VLC with the right syntax may be able to use >> FluidSynth/soundfont to "play" midi and FFMpeg to encode to AAC or >other >> codecs - or - output WAV file as input to lame >> >> It's a complicated commandline but I've seen (and created) worse LOL > Complicated is not an issue - that's what Frescobaldi can manage. It has to be reliable and ideally cross-platform >Actually, VLC on Windows can encode MIDI to MP3 without using the >command line at all. That's what I use. The point *is* to have a command line to be able to use it from Frescobaldi. Urs -- Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
Karlin, Yes it can. I use VLC all the time to play midi files on the Choral Public Domain Library :-) But Urs was asking for a commandline tool he can wrap in a Frescobaldi function with possible syntax options. Thus my email with VLC commandline options. On 10/18/2019 3:45 PM, Karlin High wrote: On 10/18/2019 3:17 PM, Guy Stalnaker wrote: So, it looks like VLC with the right syntax may be able to use FluidSynth/soundfont to "play" midi and FFMpeg to encode to AAC or other codecs - or - output WAV file as input to lame It's a complicated commandline but I've seen (and created) worse LOL Actually, VLC on Windows can encode MIDI to MP3 without using the command line at all. That's what I use. -- “Happiness is the meaning and the purpose of life, the whole aim and end of human existence.” ― Aristotle ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
On 10/18/2019 3:17 PM, Guy Stalnaker wrote: So, it looks like VLC with the right syntax may be able to use FluidSynth/soundfont to "play" midi and FFMpeg to encode to AAC or other codecs - or - output WAV file as input to lame It's a complicated commandline but I've seen (and created) worse LOL Actually, VLC on Windows can encode MIDI to MP3 without using the command line at all. That's what I use. -- Karlin High Missouri, USA ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
Urs, On 10/17/2019 5:17 PM, Urs Liska wrote: 17. Oktober 2019 18:59, "Guy Stalnaker" schrieb: Urs, I'm thinking you mean here "Frescobaldi on Linux" right (since you also say fluidsynth)? I don't "mean" that but it seems that's what I'm talking about. However, although I don't know much about these things resources like https://github.com/FluidSynth/fluidsynth/wiki/BuildingWithCMake seem to indicate that it *is* possible to have fluidsynth as a real Windows application. While "possible" it is not end-user friendly. Creating the compile environments (four possibilities!) will inhibit most users who are unfamiliar with such things. Even though I am familiar with such things, I'd opt, as I actually did, and pay for a very usable product like VirtualMidiSynth which includes midi-2-mp3/wav capability. I use Frescobaldi primarily on Windows. And though one can use Cygwin, etc. to install an app like timidity, Frescobaldi does not "see" it. OK, then the general question seems to be: are there command line tools that can be used to convert MIDI to audio on Windows in a way that Frescobaldi can use? Now that is a different question. I think the best option is VLC (if only because it's under current development and thus is not moribund as so much open source software is. https://wiki.videolan.org/VLC_command-line_help "FluidSynth MIDI synthesizer (fluidsynth)" VLC will play midi files. FFmpeg audio/video decoder (avcodec) Various audio and video decoders/encoders delivered by the FFmpeg library. This includes (MS)MPEG4, DivX, SV1,H261, H263, H264, WMV, WMA, AAC, AMR, DV, MJPEG and other codecs File audio output (afile) --audiofile-wav, --no-audiofile-wav Add WAVE header (default enabled) Instead of writing a raw file, you can add a WAV header to the file. So, it looks like VLC with the right syntax may be able to use FluidSynth/soundfont to "play" midi and FFMpeg to encode to AAC or other codecs - or - output WAV file as input to lame It's a complicated commandline but I've seen (and created) worse LOL Guy -- “Happiness is the meaning and the purpose of life, the whole aim and end of human existence.” ― Aristotle ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
> Am 2019-10-18 um 00:20 schrieb Urs Liska : > > But your comment reinforces my gut-feeling that the proper approach is not to > provide too many formats but rather a nice, well-defined selection. Hi Urs, I agree that probably only a neglectable minority would like to fiddle with a lot of audio options. For a GNU program, Ogg Vorbis makes sense. MP3 because everyone knows it. And a possibility to keep the WAV for further processing, e.g. in DAWs, with video or other encoders. (I use a simple shell script calling timidity and lame for MIDI -> WAV -> MP3.) Greetlings, Hraban --- fiëé visuëlle Henning Hraban Ramm https://www.fiee.net ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
On Thu, Oct 17, 2019 at 3:20 PM Urs Liska wrote: > 17. Oktober 2019 22:19, "Saul Tobin" schrieb: > > > The biggest killer-feature for me would be the ability to playback > multiple midi files > > simultaneously in sync (to work around the 16 track limitation). > > Sounds cool, but that's obviously not on the table. I think this is the > domain of DAWs. > Totally understand it's not on the table or what you're working on. I don't agree it's the domain of DAWs, however. I'm not talking about high quality tweakable MIDI sequencing. Literally just a quick and dirty preview, like starting multiple instances of pmidi at the same time. > > > > > Audio format-wise, I think mp3 is fine. I doubt anyone particularly > cares about lossless quality > > for their general midi soundfont playback. > > Fair point. But two comments: > - To get mp3 the MIDI is first converted to a lossless format anyway. > - I think many people who want audio files want them to *share* them, > either on some sort of sharing platform or to hand them over to some > partner for whatever purpose. And for that there may be specific > requirements. > > But your comment reinforces my gut-feeling that the proper approach is not > to provide too many formats but rather a nice, well-defined selection. > > Urs > > > > > On Thu, Oct 17, 2019, 10:34 AM Guy Stalnaker > wrote: > > > >> Urs, > >> > >> I'm thinking you mean here "Frescobaldi on Linux" right (since you also > >> say fluidsynth)? I use Frescobaldi primarily on Windows. And though one > >> can use Cygwin, etc. to install an app like timidity, Frescobaldi does > >> not "see" it. But I can, and to, have lame installed because I can use > >> VirtualMidiSyth to manually convert midi to mp3. > >> > >> Just putting this out there so you know. > >> > >> Regards! > >> > >> On 10/17/2019 9:19 AM, Urs Liska wrote: > >>> Hi all, > >>> > >>> I've just started looking into how Frescobaldi provides support for > >>> "exporting" scores to audio. > >>> > >>> Until now this was hardcoded to use TiMidity (and had to be activated > as > >>> "experimental feature"). > >>> > >>> I have so far created functionality that > >>> > >>> * checks whether timidity, fluidsynth and lame are available > >>> * populates the filter of the file dialog with all registered file > >>> formats for the available converters (=> if (and only if) Lame is > >>> installed the .mp3 filter will be added). You can see a screenshot > >>> at > >>> > https://github.com/frescobaldi/frescobaldi/pull/1205#issuecomment-543155209 > >>> > >>> After clicking the Save button there will be a configuration dialog > like > >>> we already have for the file *import* functionality. Depending on the > >>> chosen converter/exporter tool it will be possible to configure > selected > >>> settings like for example audio quality, alternative soundfont (in > >>> fluidsynth), effects. > >>> > >>> However, since that's not my area of expertise I'd like to ask for > >>> suggestions (possibly with the corresponding command line invocations) > about > >>> > >>> * which audio formats Frescobaldi should support (I don't think it's > >>> good to clutter the interface with stuff that noone needs) > >>> * which options we should make configurable for the three converter > tools > >>> * if there are other converters we should consider supporting > >>> > >>> Best > >>> Urs > >>> > >>> > >>> ___ > >>> lilypond-user mailing list > >>> lilypond-user@gnu.org > >>> https://lists.gnu.org/mailman/listinfo/lilypond-user > >>> > >> > >> -- > >> “Happiness is the meaning and the purpose of life, the whole aim and end > >> of human existence.” > >> ― Aristotle > >> > >> ___ > >> lilypond-user mailing list > >> lilypond-user@gnu.org > >> https://lists.gnu.org/mailman/listinfo/lilypond-user > ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
17. Oktober 2019 22:19, "Saul Tobin" schrieb: > The biggest killer-feature for me would be the ability to playback multiple > midi files > simultaneously in sync (to work around the 16 track limitation). Sounds cool, but that's obviously not on the table. I think this is the domain of DAWs. > > Audio format-wise, I think mp3 is fine. I doubt anyone particularly cares > about lossless quality > for their general midi soundfont playback. Fair point. But two comments: - To get mp3 the MIDI is first converted to a lossless format anyway. - I think many people who want audio files want them to *share* them, either on some sort of sharing platform or to hand them over to some partner for whatever purpose. And for that there may be specific requirements. But your comment reinforces my gut-feeling that the proper approach is not to provide too many formats but rather a nice, well-defined selection. Urs > > On Thu, Oct 17, 2019, 10:34 AM Guy Stalnaker wrote: > >> Urs, >> >> I'm thinking you mean here "Frescobaldi on Linux" right (since you also >> say fluidsynth)? I use Frescobaldi primarily on Windows. And though one >> can use Cygwin, etc. to install an app like timidity, Frescobaldi does >> not "see" it. But I can, and to, have lame installed because I can use >> VirtualMidiSyth to manually convert midi to mp3. >> >> Just putting this out there so you know. >> >> Regards! >> >> On 10/17/2019 9:19 AM, Urs Liska wrote: >>> Hi all, >>> >>> I've just started looking into how Frescobaldi provides support for >>> "exporting" scores to audio. >>> >>> Until now this was hardcoded to use TiMidity (and had to be activated as >>> "experimental feature"). >>> >>> I have so far created functionality that >>> >>> * checks whether timidity, fluidsynth and lame are available >>> * populates the filter of the file dialog with all registered file >>> formats for the available converters (=> if (and only if) Lame is >>> installed the .mp3 filter will be added). You can see a screenshot >>> at >>> https://github.com/frescobaldi/frescobaldi/pull/1205#issuecomment-543155209 >>> >>> After clicking the Save button there will be a configuration dialog like >>> we already have for the file *import* functionality. Depending on the >>> chosen converter/exporter tool it will be possible to configure selected >>> settings like for example audio quality, alternative soundfont (in >>> fluidsynth), effects. >>> >>> However, since that's not my area of expertise I'd like to ask for >>> suggestions (possibly with the corresponding command line invocations) about >>> >>> * which audio formats Frescobaldi should support (I don't think it's >>> good to clutter the interface with stuff that noone needs) >>> * which options we should make configurable for the three converter tools >>> * if there are other converters we should consider supporting >>> >>> Best >>> Urs >>> >>> >>> ___ >>> lilypond-user mailing list >>> lilypond-user@gnu.org >>> https://lists.gnu.org/mailman/listinfo/lilypond-user >>> >> >> -- >> “Happiness is the meaning and the purpose of life, the whole aim and end >> of human existence.” >> ― Aristotle >> >> ___ >> lilypond-user mailing list >> lilypond-user@gnu.org >> https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
17. Oktober 2019 18:59, "Guy Stalnaker" schrieb: > Urs, > > I'm thinking you mean here "Frescobaldi on Linux" right (since you also say > fluidsynth)? I don't "mean" that but it seems that's what I'm talking about. However, although I don't know much about these things resources like https://github.com/FluidSynth/fluidsynth/wiki/BuildingWithCMake seem to indicate that it *is* possible to have fluidsynth as a real Windows application. > I use > Frescobaldi primarily on Windows. And though one can use Cygwin, etc. to > install an app like > timidity, Frescobaldi does not "see" it. OK, then the general question seems to be: are there command line tools that can be used to convert MIDI to audio on Windows in a way that Frescobaldi can use? > But I can, and to, have lame installed because I can use > VirtualMidiSyth to manually convert midi to mp3. OK, a quick glance on the VirtualMidiSynth homepage made it clear that I won't be able to fully digest how things relate here. What would be your setup to "manually convert midi to mp3", is there a possibility to wrap that in a command line invocation? May lack of support for Windows-specific functionality is not ideological (well, mostly ;-) ), but I need specific input to try making it work. > > Just putting this out there so you know. > Thanks Urs > Regards! > > On 10/17/2019 9:19 AM, Urs Liska wrote: > >> Hi all, >> I've just started looking into how Frescobaldi provides support for > >> "exporting" scores to audio. >> Until now this was hardcoded to use TiMidity (and had to be activated as > >> "experimental feature"). >> I have so far created functionality that >> * checks whether timidity, fluidsynth and lame are available >> * populates the filter of the file dialog with all registered file >> formats for the available converters (=> if (and only if) Lame is >> installed the .mp3 filter will be added). You can see a screenshot >> at >> https://github.com/frescobaldi/frescobaldi/pull/1205#issuecomment-543155209 >> After clicking the Save button there will be a configuration dialog like > >> we already have for the >> file *import* functionality. Depending on the > chosen converter/exporter >> tool it will be possible >> to configure selected > settings like for example audio quality, alternative >> soundfont (in > >> fluidsynth), effects. >> However, since that's not my area of expertise I'd like to ask for > >> suggestions (possibly with the >> corresponding command line invocations) about >> * which audio formats Frescobaldi should support (I don't think it's >> good to clutter the interface with stuff that noone needs) >> * which options we should make configurable for the three converter tools >> * if there are other converters we should consider supporting >> Best >> Urs >>> ___ >> lilypond-user mailing list >> lilypond-user@gnu.org >> https://lists.gnu.org/mailman/listinfo/lilypond-user > > -- “Happiness is the meaning and the purpose of life, the whole aim and end > of human existence.” > ― Aristotle ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
The biggest killer-feature for me would be the ability to playback multiple midi files simultaneously in sync (to work around the 16 track limitation). Audio format-wise, I think mp3 is fine. I doubt anyone particularly cares about lossless quality for their general midi soundfont playback. On Thu, Oct 17, 2019, 10:34 AM Guy Stalnaker wrote: > Urs, > > I'm thinking you mean here "Frescobaldi on Linux" right (since you also > say fluidsynth)? I use Frescobaldi primarily on Windows. And though one > can use Cygwin, etc. to install an app like timidity, Frescobaldi does > not "see" it. But I can, and to, have lame installed because I can use > VirtualMidiSyth to manually convert midi to mp3. > > Just putting this out there so you know. > > Regards! > > On 10/17/2019 9:19 AM, Urs Liska wrote: > > Hi all, > > > > I've just started looking into how Frescobaldi provides support for > > "exporting" scores to audio. > > > > Until now this was hardcoded to use TiMidity (and had to be activated as > > "experimental feature"). > > > > I have so far created functionality that > > > > * checks whether timidity, fluidsynth and lame are available > > * populates the filter of the file dialog with all registered file > > formats for the available converters (=> if (and only if) Lame is > > installed the .mp3 filter will be added). You can see a screenshot > > at > > > https://github.com/frescobaldi/frescobaldi/pull/1205#issuecomment-543155209 > > > > After clicking the Save button there will be a configuration dialog like > > we already have for the file *import* functionality. Depending on the > > chosen converter/exporter tool it will be possible to configure selected > > settings like for example audio quality, alternative soundfont (in > > fluidsynth), effects. > > > > However, since that's not my area of expertise I'd like to ask for > > suggestions (possibly with the corresponding command line invocations) > about > > > > * which audio formats Frescobaldi should support (I don't think it's > > good to clutter the interface with stuff that noone needs) > > * which options we should make configurable for the three converter > tools > > * if there are other converters we should consider supporting > > > > Best > > Urs > > > > > > ___ > > lilypond-user mailing list > > lilypond-user@gnu.org > > https://lists.gnu.org/mailman/listinfo/lilypond-user > > > > -- > “Happiness is the meaning and the purpose of life, the whole aim and end > of human existence.” > ― Aristotle > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Frescobaldi, improve support for audio export
Urs, I'm thinking you mean here "Frescobaldi on Linux" right (since you also say fluidsynth)? I use Frescobaldi primarily on Windows. And though one can use Cygwin, etc. to install an app like timidity, Frescobaldi does not "see" it. But I can, and to, have lame installed because I can use VirtualMidiSyth to manually convert midi to mp3. Just putting this out there so you know. Regards! On 10/17/2019 9:19 AM, Urs Liska wrote: Hi all, I've just started looking into how Frescobaldi provides support for "exporting" scores to audio. Until now this was hardcoded to use TiMidity (and had to be activated as "experimental feature"). I have so far created functionality that * checks whether timidity, fluidsynth and lame are available * populates the filter of the file dialog with all registered file formats for the available converters (=> if (and only if) Lame is installed the .mp3 filter will be added). You can see a screenshot at https://github.com/frescobaldi/frescobaldi/pull/1205#issuecomment-543155209 After clicking the Save button there will be a configuration dialog like we already have for the file *import* functionality. Depending on the chosen converter/exporter tool it will be possible to configure selected settings like for example audio quality, alternative soundfont (in fluidsynth), effects. However, since that's not my area of expertise I'd like to ask for suggestions (possibly with the corresponding command line invocations) about * which audio formats Frescobaldi should support (I don't think it's good to clutter the interface with stuff that noone needs) * which options we should make configurable for the three converter tools * if there are other converters we should consider supporting Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- “Happiness is the meaning and the purpose of life, the whole aim and end of human existence.” ― Aristotle ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Frescobaldi, improve support for audio export
Hi all, I've just started looking into how Frescobaldi provides support for "exporting" scores to audio. Until now this was hardcoded to use TiMidity (and had to be activated as "experimental feature"). I have so far created functionality that * checks whether timidity, fluidsynth and lame are available * populates the filter of the file dialog with all registered file formats for the available converters (=> if (and only if) Lame is installed the .mp3 filter will be added). You can see a screenshot at https://github.com/frescobaldi/frescobaldi/pull/1205#issuecomment-543155209 After clicking the Save button there will be a configuration dialog like we already have for the file *import* functionality. Depending on the chosen converter/exporter tool it will be possible to configure selected settings like for example audio quality, alternative soundfont (in fluidsynth), effects. However, since that's not my area of expertise I'd like to ask for suggestions (possibly with the corresponding command line invocations) about * which audio formats Frescobaldi should support (I don't think it's good to clutter the interface with stuff that noone needs) * which options we should make configurable for the three converter tools * if there are other converters we should consider supporting Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Fwd: [Frescobaldi] Re: export the user guide to HTML (issue 825)
Forwarding this to lilypond-user because I think not all potential addressees are also subscribed to the Frescobaldi mailing list ... Weitergeleitete Nachricht Betreff:[Frescobaldi] Re: export the user guide to HTML (issue 825) Datum: Tue, 29 Jan 2019 23:34:24 -0800 (PST) Von:g...@ursliska.de Antwort an: frescoba...@googlegroups.com An: Frescobaldi Am Mittwoch, 30. Januar 2019 07:23:45 UTC+1 schrieb Federico Bruni: Hi folks As you know, the current user guide for Frescobaldi 3 is available only within the application. Exporting it to HTML is a long standing issue (at least since 2016): <https://github.com/frescobaldi/frescobaldi/issues/825 <https://github.com/frescobaldi/frescobaldi/issues/825>> There's anybody who's willing to work on it? :-) It would be great to get this done in the next future, as I'm working on the new website for Frescobaldi and it would be good to be able to include the HTML user manual. You don't have to be acquainted with Frescobaldi code base - Urs told me. Here's what he wrote to me: > When displaying a page in the user guide Frescobaldi converts the > Markdown file to HTML and then loads that in the text browser widget. > So it should be *fairly* straightforward to write a harvesting tool > that does that for the whole structure - it's basically about > *managing*, not about doing the basic work. > It should be equally possible to implement that within Frescobaldi > ("Export User Guide") or as a standalone tool. The latter would look > more natural to me while the former might be easier to do. <https://github.com/frescobaldi/frescobaldi/tree/master/frescobaldi_app/userguide <https://github.com/frescobaldi/frescobaldi/tree/master/frescobaldi_app/userguide>> Any volunteer? Let me just add that this would be a great way to support Frescobaldi development with a medium-commitment contribution ;-) Urs Thanks Federico PS The website I'm working on is generated with Hugo from Markdown sources. In theory I may add above userguide as a git submodule in a content directory and let Hugo convert it to HTML. This would work if the user guide files were simple Markdown, but they contain variables and other stuff which only Frescobaldi scripts can understand. -- Frescobaldi homepage: http://www.frescobaldi.org/ Mailing list: http://groups.google.com/group/frescobaldi Issue tracker: https://github.com/wbsoft/frescobaldi/issues ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
SVG export failed w/ Gonville
%% Unfortunately, SVG exporting failed with Gonville font. I'd like to just report. (T.I) \version "2.19.61" \paper { #(define fonts (set-global-fonts #:music "gonville" ;"cannot find SVG font #f" ?? #:brace "gonville" #:factor (/ staff-height pt 20) )) } \new GrandStaff << { ges''4 \ppp e'' cis''2 \trill } { R1 } >> %% cmd.exe >> lilypond -dbackend=svg ***.ly ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Another request : Please add OpenMusic to "Programs that export to Lilypond"
Hi , Another missing "programs that can export LilyPond code" is OpenMusic ( http://repmus.ircam.fr/openmusic/home ). Is it a is a visual programming language based on Lisp. I have written a library that can export OM score editors to Lilypond, with polytempi support, and more. It has also an import beta feature that allows to re-import exported scores to OpenMusic. Personally i compose using OpenMusic environment and typeset my scores exclusively in The fantastatic Lilypond. OM is free, the library also (all GNU GPL). The library can be found here : http://karim.haddad.free.fr/pages/downloads.html You have also a paper here about all that : https://hal.archives-ouvertes.fr/hal-01456511/document Best regards. -- Karim Haddad ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Please add MusicBlocks to "Programs that export to Lilypond"
On Fri, Jul 21, 2017 at 10:57 AM, Devin Ulibarri <devin@ulibarri.website> wrote: > Hello, > > Music Blocks is a visual programming language for music developed by > Walter Bender (SugarLabs), myself, and many kids around the globe. > > It exports to Lilypond, and Lilypond export has been a priority for us. > > We noticed this page for "Other programs that can export LilyPond code": > http://lilypond.org/easier-editing.html > > Would someone mind to add Music Blocks to this page, please? > > Our website/blog is at musicblocks.net > Software is at https://walterbender.github.io/musicblocks/ and code is > publicly available at https://github.com/walterbender/musicblocks Licensed under AGPL > > > Thanks, > Devin > -- Walter Bender Sugar Labs http://www.sugarlabs.org <http://www.sugarlabs.org> ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Please add MusicBlocks to "Programs that export to Lilypond"
Hello, Music Blocks is a visual programming language for music developed by Walter Bender (SugarLabs), myself, and many kids around the globe. It exports to Lilypond, and Lilypond export has been a priority for us. We noticed this page for "Other programs that can export LilyPond code": http://lilypond.org/easier-editing.html Would someone mind to add Music Blocks to this page, please? Our website/blog is at musicblocks.net Software is at https://walterbender.github.io/musicblocks/ and code is publicly available at https://github.com/walterbender/musicblocks Thanks, Devin ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: lilypond export
On 06/14/2017 09:01 AM, Jan-Peter Voigt wrote: I have been working on an export module for lilypond. Hi Jan-Peter, Great to hear of your work on this. If I can find the time (...) I'll try to take a look. The exporter uses some engravers to collect all note-events and store them in a tree-structure. Hmmm, I wonder if engravers have access to all they need to fully do the job? Maybe so? I just remember previous discussions on the list and the issue tracker describing it more as a backend like for midi, pdf, or svg? In any case, kudos for your work on this, -Paul ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: OpenLilyLib (Was: Re: lilypond export)
Il giorno gio 15 giu 2017 alle 0:01, Urs Liskaha scritto: A) I'd be more than happy if someone could help me or take over the implementation of the website. Currently it is written as a (artificially crippled) Node/Angular application, but I'm having difficulties populating the datasets on the Node side. I'd be interested in continuing on that track, but I'd equally value a completely new approach, for example based on a static site builder. Is this in some public repository? I'm just curious to know which data need to be processed and how. No time to help right now, but I'm about to start working on something which may be related (extracting data from a database and reuse it in a static website), so I might have some useful experience in the next months. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: OpenLilyLib (Was: Re: lilypond export)
2017-06-15 0:01 GMT+02:00 Urs Liska: > That said, currently there are two distinct areas where any engagement > could be fruitful: > > A) > I'd be more than happy if someone could help me or take over the > implementation of the website. Currently it is written as a > (artificially crippled) Node/Angular application, but I'm having > difficulties populating the datasets on the Node side. > I'd be interested in continuing on that track, but I'd equally value a > completely new approach, for example based on a static site builder. > I’d love to see openLilyLib go forward, and I’d love to be able to help where I can. Unfortunately, my available time is quite limited, but that can only get better over the coming months. So, I at least want to throw out there the Kirby CMS as a possible alternative to your present website setup. I gathered a little experience with it, building my own website, and I found it quite easy to use and very flexible. I love their file-based, no-database approach using Markdown syntax, which also makes it easily possible to deploy all content via Git (which I haven’t done yet, but I’d love to). It is open source, but you need a licence – the personal one should suffice, though. I don’t know if it would make things easier than with your current approach, but maybe something to look into? -- Peter Crighton | Musician & Music Engraver based in Mainz, Germany http://www.petercrighton.de ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: OpenLilyLib (Was: Re: lilypond export)
Am 14.06.2017 um 23:14 schrieb Johan Vromans: > On Wed, 14 Jun 2017 15:44:24 -0400, Kieren MacMillan >wrote: > >> Hi Johan, >> >>> When I visit https://openliliylib.org/ I get a page with text but >>> nothing to click on. No links (except for the generic links (github >> Clicking on the GitHub link will take you to the current repository. >> >> Hope this helps! > No, it doesn't. Of course it doesn't. The Github link leads to an organization page, which is not more than an uncommented collection of repositories. Something most developers will be familiar with but not what an end user will easily deal with. > > Clicking on the GitHub link will show a list of mysterious repositories. > The only repo that makes sense is "openlilylib". Oops, it is deprecated. > > For the file exporter I seem to need oll-core, but this repo doesn't say > anything about how to use it. Just scary warnings like "this code (and > documentation) is currently in a conceptual state of pre-alpha quality". > > The OpenLilyLib web page talks about "Learn how to get up and running with a > few steps" and "Browse the package list and search the full online > documentation" but there is no way to actually achieve this. The current state of what can be seen at openlilylib.org is the result of commenting out the further functionality of a single-page (MEAN) web application with which I got stuck for two different reason. On the one hand I ran into learning problems when trying to populate my contents from manageable files instead of hand-written JSON files. On the other hand (and more fundamentally) the intent is to integrate openLilyLib package documentation in the website, and that documentation system is still non-existent. > > In particular, "Learn how to get up and running with a few steps" would be > helpful, as would "Browse the package list and search the full online > documentation". > > I don't want to sound negative, but I find this rather discouraging. > Am 14.06.2017 um 23:26 schrieb Simon Albrecht: > > If there is insufficient documentation, and the whole project is in a > kind of intermediary state that may indeed be confusing, that’s > because Urs has been having other things on his mind, I think. > I would put that differently: the underlying reason is that the whole openLilyLib thing is (apart from the numerous contributions to the snippets repository) still very much a one-man show, and I simply can't afford doing much more than what I really need for my own purposes. This is a pity, but I must also say that with some notable exceptions any calls for collaboration or support haven't returned significant feedback yet. Am 14.06.2017 um 23:29 schrieb Kieren MacMillan: > Patches or other concrete contributions are gratefully accepted. That said, currently there are two distinct areas where any engagement could be fruitful: A) I'd be more than happy if someone could help me or take over the implementation of the website. Currently it is written as a (artificially crippled) Node/Angular application, but I'm having difficulties populating the datasets on the Node side. I'd be interested in continuing on that track, but I'd equally value a completely new approach, for example based on a static site builder. B) Together with Andrew Bernard and Matteo Ceccarello I've just started a "project" with the goal of creating a toolchain to generate documentation from openLilyLib packages (https://github.com/openlilylib/oll-core/projects/1). This should be of general interest as it will probably also produce a specification and toolkit to create documentation for one's own files and libraries, independent from the openLilyLib context. This is a project that requires quite some discussion and planning and later non-neglectable coding in to-be-decided languages (I'd guess Scheme and Python). And I'd predict that this project is more likely to succeed - and finally make openLilyLib accessible for regular use - if there will be some collaboration/contribution. Urs -- u...@openlilylib.org https://openlilylib.org http://lilypondblog.org ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: OpenLilyLib (Was: Re: lilypond export)
Hi Johan, > The OpenLilyLib web page talks about "Learn how to get up and running with a > few steps" and "Browse the package list and search the full online > documentation" but there is no way to actually achieve this. > > In particular, "Learn how to get up and running with a few steps" would be > helpful, as would "Browse the package list and search the full online > documentation". Patches or other concrete contributions are gratefully accepted. Regards, Kieren. Kieren MacMillan, composer ‣ website: www.kierenmacmillan.info ‣ email: i...@kierenmacmillan.info ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user