Domanda:
Rendering del punteggio lilypond in una pagina html
branquito
2014-09-19 23:08:43 UTC
view on stackexchange narkive permalink

Quale sarebbe il modo migliore per riprodurre parti specifiche di una partitura lilypond, in una pagina HTML? L'ho fatto utilizzando lilypond-book incorporando in precedenza il tag <lilypondfile> nel mio file html, e funziona, comunque in questo modo sto incorporando l'intera melodia.

So anche che esiste la possibilità di riprodurre piccoli pezzi di melodia usando il tag <lilypond> , ma vorrei importare parti di cose già scritte.

Ho la possibilità di eseguire il rendering solo una parte della melodia dai file, senza fare il copia incolla manuale di quella parte specifica, in un altro file, solo per quello scopo?

Questa domanda potrebbe interessare anche la comunità di Music SE nel suo complesso. Attualmente è in corso una discussione sul sito Meta sull'incorporazione di Lilypond (o un simile formato di notazione basato su testo) nello stesso Music Stack Exchange, in modo che frammenti di notazione musicale possano essere inclusi nelle risposte delle persone. Il blocco sembra trovare un renderer javascript adatto.
È questo quello che vuoi: (1) un singolo file `.ly` che contiene l'intera partitura e (2) un modo per esportare frammenti da esso in HTML senza dover copiare manualmente / esplicitamente il contenuto dal file della partitura in un file separato ?
@Dave sì Dave, esattamente quello!
Questo non soddisfa del tutto il requisito della fonte fondamentale che è lilypond, ma potrebbe esserci un modo per farlo usando Emacs Org-Mode, con le estensioni di programmazione Babel / literate per avere un file org che contenga il punteggio, esportato in HTML e "aggroviglia" il documento in una sorgente lilypond diretta.
@Dave, forse conosci qualche estensione vim, dato che sono su Linux?
Poiché hai mostrato un certo interesse, ho scritto il mio concetto come risposta; Emacs è multipiattaforma; se sei un utente vi, guarda in `viper-mode` per emacs.
@Dom grazie per la correzione, ma c'è ancora un errore nell'ultimo blocco, dovrebbe dire " yourmusic.ly . Grazie ancora.
Non sarebbe troppo difficile fare uno screenshot e includere un tag img, anche se probabilmente vanifica il tuo scopo.
Ecco un'estensione lilypond che può creare file png: https://www.mediawiki.org/wiki/Extension:Score
Tre risposte:
#1
+5
Caleb Hines
2014-09-19 23:44:20 UTC
view on stackexchange narkive permalink

Anche se non è Lilypond, il formato di notazione ABC basato su testo simile ha un renderer javascript open source chiamato abcjs, che potresti trovare interessante.

#2
+3
Dave
2014-09-20 00:43:26 UTC
view on stackexchange narkive permalink

Ho avuto un certo successo usando lilypond dai file Emacs Org-Mode; ma non ho fatto quello che propongo (per lo più l'ho usato come sostituto di lilypond-book).

Org-Mode è un'estensione del Editor Emacs (che funziona su più piattaforme) che consente di scrivere file di testo semplice ed esportarli in HTML (o pdf). Oltre a supportare la struttura, supporta anche la "programmazione alfabetica" in cui si incorporano blocchi di codice nel documento di testo e avere comandi in modo che i blocchi di codice risultanti possano essere esportati (aggrovigliati nel gergo) in file che possono essere compilati e / o eseguiti.

Cito tutto questo sfondo perché ci credo che sarebbe possibile quanto segue:

1) Modifichi un file .org , incorporando varie parti della tua partitura in blocchi di codice lilypond all'interno di quel file;

2) Esporti questo file (utilizzando la funzionalità di esportazione Org-Mode) nel file HTML desiderato,

3) Aggrovigli il file (utilizzando la funzionalità di programmazione alfabetizzata in Org-Mode ) per produrre il file .ly che puoi quindi compilare.


L'altro modo in cui posso immaginare di provare a farlo è fare un po 'di programmazione dello schema all'interno dello stesso lilypond : hai pieno accesso all'intero (?) ambiente di programmazione guile, quindi dovrebbe essere possibile creare schemi di funzioni di scrittura che producono l'HTML che cerchi e inserire le parti della partitura che desideri. Sembra che sarebbe un problema di programmazione molto non banale (anche l'approccio OrgMode sarà probabilmente non banale). Se prendi in considerazione questa strada, ti consiglio vivamente di consultare le mailing list degli utenti lilypond (o forse anche degli sviluppatori) per vedere quale aiuto puoi ottenere da loro.

#3
+3
branquito
2014-09-22 05:49:30 UTC
view on stackexchange narkive permalink

Per coloro che potrebbero essere interessati, ecco cosa ho fatto per realizzare questo lavoro in VIM, usando un po 'di scripting di shell: -

I requisiti per il funzionamento di questo script sono:

  • hxpipe che fa parte del pacchetto html-xml-utils . Per favore trova una versione per la tua particolare distribuzione.
  • awk che dovrebbe essere presente sulla tua macchina, se non è installata anche quella.
  • E, naturalmente, il nostro principale buddy lilypond-book.
 #! / bin / bash fromvim = "$ 1" PID = $$ lilypond-book -f html -o output "$ fromvim "2> / dev / null hxpipe output / stdin.html | awk '/ src / || / href / {$ 3 = "output /" $ 3;} {print}' | hxunpipe> risultato $ PID cat risultato $ PID exit 0 

Salvalo come ly2vim , rendilo eseguibile con chmod + x ly2vim e inseriscilo in alcuni directory, nel tuo percorso.

Ora la parte VIM :

Aggiungi quanto segue al tuo file di configurazione .vimrc : -

 #nota il simbolo del trattino, è importante, poiché invierà la riga corrente da `VIM` come input standard al comando` lilypond-book`. nnoremap <leader>ly:.! ly2vim -<CR> 

Questo è tutto. Ora, quando stai modificando il tuo file html , devi solo inserire una riga in questo modo: -

 <lilypondfile>yourmusic.ly< / lilypondfile> 

Mentre il cursore si trova ovunque quella riga, esegui la combinazione di tasti <leader>ly in modalità normale, e voilà !, verrà generato il file png e lo snippet di codice verrà inserito in quel punto per te. Visualizza l'anteprima nel tuo browser e divertiti! :)



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...