emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[O] Newbie question


From: Henrik Frisk
Subject: [O] Newbie question
Date: Wed, 1 Aug 2018 16:07:37 +0200

Hi,

I'm new with Scheme and new with org babel so excuse me if I am missing something obvious.
I have this bit of (simplified) Scheme code to generate a list of lists:

    #+name: chromatic
    #+begin_src scheme :noweb yes 
      (map (lambda (x) 
     (cond ((< x 4) (list 0 1))
   ((equal? x 4) (list 2 0))
   ((> x 4) (list 1 1))))
   (list 0 1 2 3 4 5 6 7 8 9 10 11))
    #+end_src

It appears to be working fine outputting a table such as 

    #+RESULTS: 
    | 0 | 1 |
    | 0 | 1 |
    | 0 | 1 |
 ...

For another function in Lilypond, also in scheme I need it to be a (list (list 0 1) (list 0 1)...) as in the variable seq below:

 #+begin_src scheme :noweb yes
 $(let ((random-state (seed->random-state (current-time)))
       (seq (list (list 0 0) (list 0 1/2) (list 1 0) (list 1 1/2) (list 2 0) (list 3 0) (list 3 1/2) (list 4 0) (list 4 1/2) (list 5 0) (list 5 1/2) (list 6 0))))
   (make-sequential-music 
    (map (lambda (x p) 
   (let ((idx (random 12 random-state))) 
     (make-music 'NoteEvent 
'duration (ly:make-duration 2 0 1/1) 
'pitch (ly:make-pitch 0 (car p) (car (cdr p))))))
   (make-list (length seq)) seq)))
     #+end_src

I can do:

(seq <<alist>>)

if alist is:

    #+name: alist
    #+begin_src scheme
      (list (list 0 0) (list 0 1/2) (list 1 0) (list 1 1/2) (list 2 0) (list 3 0) (list 3 1/2) (list 4 0) (list 4 1/2) (list 5 0) (list 5 1/2) (list 6 0))
    #+end_src

but what I would like to be able to do is to have have the noweb reference be to the 'chromatic' function above as in:

(seq <<chromatic()>>)

but that doesn't work. Maybe what I am trying to do is not possible, maybe there is a limitation on ob-lilypond, but it seems to me that the result of my function chromatic above spits out ((0 1) (0 1)... ) and that this is the cause it doesn't work.

Again, I am really new to this...

The workaround I am doing is to format the output of chromatic into a proper list och lists and then add it by noweb reference.

Any hints welcome.
/Henrik

reply via email to

[Prev in Thread] Current Thread [Next in Thread]