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
>>
>>
>>
>
>
>

Reply via email to