emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Christian Moe <mail@christianmoe.com>
To: Martyn Jago <martyn.jago@btinternet.com>
Cc: Org Mode <emacs-orgmode@gnu.org>
Subject: Re: ob-lilypond
Date: Tue, 28 Jun 2011 14:11:57 +0200	[thread overview]
Message-ID: <4E09C50D.5020302@christianmoe.com> (raw)
In-Reply-To: <loom.20110627T144239-323@post.gmane.org>

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

  parent reply	other threads:[~2011-06-28 12:10 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-27 13:00 ob-lilypond Martyn Jago
2011-06-27 18:53 ` ob-lilypond Eric Schulte
2011-06-28  9:38   ` ob-lilypond Martyn Jago
2011-06-28 10:07     ` ob-lilypond Bastien
2011-06-28 10:21       ` ob-lilypond Bastien
2011-06-28 20:45         ` ob-lilypond Eric Schulte
2011-06-28 23:07           ` ob-lilypond Bastien
2011-06-29  0:41             ` ob-lilypond Eric Schulte
2011-06-29 17:07           ` ob-lilypond Martyn Jago
2011-06-29 21:15             ` ob-lilypond Eric Schulte
2011-06-30  6:38               ` ob-lilypond Martyn Jago
2011-06-30 18:10                 ` ob-lilypond Eric Schulte
2011-07-01 12:01                   ` ob-lilypond Christian Moe
2011-07-06  8:13                     ` [BABEL][PATCH] ob-lilypond basic mode - was ob-lilypond Martyn Jago
2011-07-06 13:20                       ` Eric Schulte
2011-07-01 13:43                   ` ob-lilypond Martyn Jago
2011-07-01 19:27                     ` ob-lilypond Eric Schulte
2011-07-02 13:04                       ` ob-lilypond Martyn Jago
2011-06-28 13:38     ` ob-lilypond Cameron Horsburgh
2011-06-28 16:46       ` ob-lilypond Martyn Jago
2011-06-28 12:11 ` Christian Moe [this message]
2011-06-28 13:18   ` ob-lilypond David O'Toole
2011-06-28 17:06   ` ob-lilypond Martyn Jago
2011-06-28 18:51     ` ob-lilypond Christian Moe
2011-06-28 19:00     ` ob-lilypond Michael Brand
2011-06-28 20:00     ` ob-lilypond Christian Moe
2011-06-28 21:19       ` ob-lilypond Martyn Jago
  -- strict thread matches above, loose matches on Subject: below --
2015-03-25 12:49 ob-lilypond pls
2015-03-26  9:20 ` ob-lilypond pls
2015-03-29 21:27   ` ob-lilypond Nick Dokos
2015-03-30  9:20     ` ob-lilypond Patrick L. Schmidt
2015-03-26  9:26 ob-lilypond Patrick L. Schmidt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E09C50D.5020302@christianmoe.com \
    --to=mail@christianmoe.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=martyn.jago@btinternet.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).