Jump to content
Sign in to follow this  


Recommended Posts

same with fibonacci

(defun fibonacci* (n &key (offset 0) (every-x 1) (reverse nil))
  (let ((n (* n every-x)) (seq)) 
      (setf seq (find-everyother every-x (subseq (fibonacci 0 (+ n offset)) offset (+ n offset))))
      (if (equal reverse nil)
        (reverse seq))))

(fibonacci* 5 :offset 2)
=> (1 2 3 5 8)

(fibonacci* 5 :offset 5 :every-x 2)
=> (5 13 34 89 233)

(fibonacci* 5 :offset 5 :every-x 2 :reverse t)
=> (233 89 34 13 5)

;;;; in combination with "reading-list-by-steps"

(defun reading-list-by-steps (&key steps values (start (car values)))
  (let ((pos (car (position-item start values))))
    (append (list (nth pos values))
            (loop for i in steps
              do (setf pos (+ pos i))
              when (> pos (length values))
              do (setf pos (+ 0 i))
              collect (nth pos values)))))

 (reading-list-by-steps :steps '(1 -1 4 -3 2 -1 3 -2 4 1 1 -1)
                        :values (fibonacci* 14 :offset 6 :reverse t)
                        :start 89)
 :join-points t)


Edited by AM
added some stuff

Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Topics

    • By AlainJamot
      how can I do to emulate this wonderful Fibonacci function in Symbolic Composer, great to create "background" patterns.
      'cause the Fibonacci in OM handle just numbers, and not musical events. In scom, it was something like that:
      note1, note2, note2 + note1...
    • By AM
      ;;little function to make a transition by FIBONACCI-seq ;;i have seen this idea in "slippery chicken" (by michael edwards), ;;so here is a - "not so smart" but working - basic-function. (defun transition-with-fibonacci (number-of-values value-a value-b) (let ((fib-length) (fib-seq) (all-seq)) (setq fib-length (loop for cnt = 1 then (incf cnt) collect (sum (fibonacci 2 cnt)) into bag when (> (car (last bag)) number-of-values) do (return (1- (length bag)))) fib-seq (fibonacci 2 fib-length) all-seq (append (reverse fib-seq) (loop repeat (- number-of-values (sum fib-seq)) collect 1))) (loop for i in all-seq append (loop repeat i for cnt = 0 then (incf cnt) when (= cnt 0) collect value-b else collect value-a)))) ;;example-1 => only the process (transition-with-fibonacci 70 1 2) ;;example-2 => with context = sequence with 1 or 2 (before/after transition) (list-plot (append (gen-repeat 10 1) (transition-with-fibonacci 32 1 2) (gen-repeat 10 2)) :zero-based t :point-radius 2 :join-points t)  
    • By Stephane Boussuge
      An ambient piece based on a Fibonacci series.

  • Create New...