this is fantastic :) org mode is becoming like the Jupiter of the emacsian solar system.
On Tue, Jun 28, 2011 at 8:11 AM, Christian Moe <m...@christianmoe.com> wrote: > Hi, > > I'm thrilled that Lilypond has been added to Babel, grateful for the extra > thought given to Mac users -- and completely bowled over by your demos! > > Rather than put together complex scores or generate arpeggios the literate > programming way, though, all I'd like to do is to easily include simple > snippets of music notation in Org documents (elaboration follows). > > So please consider this a polite request to bump up "Consider the option to > embed resultant partial musical output into org file" from SOMEDAY to TODO > in your task list... > > Use cases: > > - Self-contained documentation, e.g. using Org to author a text like the > Lilypond documentation: much prose with code examples and the results of > those examples interspersed. > > - Writing a musicology paper, with captioned and cross-referenced examples > (not /my/ use case, but someone might...) > > - Putting together a simple song booklet, such as for a summer camp, with > lyrics and possibly illustrations. (This is my main interest.) > > Ways to do it: > > One (imperfect) solution would be a header argument to just surround the > exported content of Lilypond blocks with the appropriate HTML tags / LaTeX > environment for lilypond-book to act on, and perhaps a post-processing step > to automatically call lilypond-book on the exported document. I can probably > set up something like this for myself. > > But much better, IMO, would be a way to `evaluate' a single Lilypond block > and get #+RESULTS with a link to a PNG representing just that snippet of > music. The snippet would then show up in subsequent exports as an included > graphic without any post-processing, and could also be viewed in-buffer with > `C-c C-x C-v'. (For my money, this and not `tangle all' would be the > intuitive use of `C-c C-c' on a block, but I understand how your choice > makes sense for other uses.) > > Yours, > Christian > > > > On 6/27/11 3:00 PM, Martyn Jago wrote: >> >> Hi >> >> This is an invitation to try / test ob-lilypond - enabling LilyPond >> Score Generation / Arrangement from within org-mode. >> >> Available on Github at https://github.com/mjago/ob-lilypond >> >> This is a beta release, but includes examples, instructions, and >> tests, and has been tested on OSX and nix. >> >> Any further testing would be helpful. >> >> Following is the readme.org file which is rendered correctly on >> Github... >> >> ---> >> >> * Emacs Org Babel LilyPond Mode >> ** Purpose >> Allow LilyPond Score Generation to take place within Emacs Org-mode >> using literate programming principles. >> >> ** Examples >> Several examples are included >> *** Misty (Jazz Standard utilising org-mode to organise voice and other >> data) >> - Here is an example Org LilyPond File]] exported as HTML >> - Resultant Score exported in pdf format >> - Generated Score export of individual Pages (png) >> *** Modal Cycles (Utilises org-babel and noweb to generate notes) >> - Generated Score >> - Generated Midi File >> *** Modal Cycles 2 (Utilises org-babel and noweb to generate notes) >> - Generated Score >> - Generated Midi File >> *** Modes in the Key of C (another example of polyglot lilypond >> programming) >> - Generated Score >> Generated MIDI File >> >> ** Features >> - Optional Automated LilyPond Compilation following the "Tangling" >> of a "Literate Org LilyPond" file >> - Optional Automated display of resultant Musical Score following >> compilation >> - Optional Automated playing of the resultant MIDI file following >> compilation >> - Highlights syntax errors in Org file following a failed compilation >> - Integrates with LilyPond-Mode >> - Cross-Platform (OSX, nix, win32) >> >> ** Usage >> >> *** Compiling lilypond source >> Hitting 'C-c C-c' within a lilypond block initiates ly-tangle (tangling of >> all >> lilypond blocks). Depending on the feature settings, ob-lilypond will >> then either display a pdf of the score, play the generated midi file, >> both, or neither. >> >> 'M-x ly-tangle' can also be called from anywhere in the file >> and can be tied to a function key with something like... >> >> #+begin_src emacs-lisp >> >> (global-set-key [f8] 'ly-dev-tangle) >> >> #+end_src >> >> *** Commands >> >> Some commands are included to quickly disable certain post-tangle >> activities... >> - ly-toggle-midi-play (toggle whether midi will be played following a >> successful compilation) >> - ly-toggle-pdf-display (toggle whether pdf will be displayed following >> a successful compilation) >> >> >> NOTE:- If using Timidity for midi playback, kill the midi stream with >> C-g in Emacs >> >> ** Setup (add to emacs init file) >> *** Cloning ob-lilypond >> >> The Files need to be downloaded to your relevant dotfiles directory... >> >> #+BEGIN_SRC sh >> >> git clone https://github.com/mjago/ob-lilypond.git ob-lilypond >> >> #+END_SRC >> >> *** Emacs Initialisation file setup >> >> Require library... >> #+BEGIN_SRC emacs-lisp >> >> (add-to-list 'load-path >> (concat dotfiles-dir "ob-lilypond/lib")) >> (require 'ob-lilypond) >> >> #+END_SRC >> >> >> Add lilypond to your list of babel languages... >> >> #+BEGIN_SRC emacs-lisp >> (org-babel-do-load-languages >> 'org-babel-load-languages >> '((ruby . t) >> (C . t) >> (emacs-lisp . t) >> (sh t) >> (dot t) >> (clojure t) >> (ditaa t) >> (lilypond t) >> )) >> >> #+END_SRC >> >> ** Requirements >> *** Mac OS X >> - [[http://lilypond.org/][Lilypond]] can be obtained >> [[http://lilypond.org/][here]] >> >> *** nix >> - Lilypond is available here or via the the package manager >> - For MIDI, [[http://timidity.sourceforge.net/][Timidity]] is available >> [[http://timidity.sourceforge.net/][here]] or via the package manager >> - For PDF, [[http://live.gnome.org/Evince/Downloads][Evince]] is >> available >> [[http://live.gnome.org/Evince/Downloads][here]] or via package manager >> >> *** Win32 >> - Currently untested >> >> ** Testing >> >> Tests are provided and can be run by opening >> test/ob-lilypond-tests.org and running the following commands... >> >> - M-x eval-buffer (within ob-lilypond-tests.org >> - M-x ert (t) >> >> Tests are run automatically on source/test file save if ly-project >> (below) has been executed >> >> ** Development >> >> Included also is dev/ob-lilypond.org which includes various helper >> commands used for development, and the development todo list >> - ly-project (code block - evaluate with C-c C-c and execute M-x >> ly-project) >> - load appropriate files >> - set up windows >> - setup project development environment >> - add continuous testing post-save hook >> - map F4 to switch between src or test files to control file >> (dev/ob-lilypond.org) >> - map F8 to 'ly-dev-tangle (tangle test/test-build/test.org file from >> anywhere) >> - Remove post-save-hook code block >> - Development todo list >> >> <--- >> >> Regards >> >> Martyn >> >> >> > > >