LeopoldMozart
-
Posts
6 -
Joined
-
Last visited
Content Type
Forums
Events
Store
Video Gallery
Posts posted by LeopoldMozart
-
-
Hi folks,
I'm working with the new dictum and am having trouble evaluating the results of my work. See snippet:
;=====BIRDCALLS===== (setf bird1 '(3q d5 leg gs4 d5 leg gs4 d5 leg gs4)) (setf bird2 '(q a3 e. b3 x c5 leg e.. bb4)) (setf bird3 '(e fs4 leg c5 q bb4 3q fs4 stacc c5 bb4)) (setf rest1 '(-e)) (setf rest2 '(-q.)) (setf rest3 '(-e.)) ;=====OMN MAKER=====> dictum doesn't evaluate (setf loop1 (gen-loop 7 (list (rnd-pick (list bird1 bird2 bird3)) (rnd-pick (list rest1 rest2 rest3)) (rnd-pick (list rest1 rest2 rest3))))) (dictum '(:if e :do q) loop1) ;this returns errors ;=====DICTUM EXAMPLE==== works as intended (setf omn '(e g4 f leg gs4 fs4 mf leg a4 s f4 p bb4 e4 b4 eb4 c5 d4 cs5)) (dictum '(:if e :do q) omn)
My dictum I'm applying to loop1 looks identical to the example given in the assistant, but, unlike the example, I only get errors returned if I try to evaluate the dictum for loop1. I'm guessing it's because I'm evaluating a variable which itself is a nest of rnd-picks from lists.
How should I test a dictum based on loop1? -
23 minutes ago, opmo said:
(gen-loop 4 (list (rnd-pick (list bird1 bird2 bird3)) (rnd-pick (list rest1 rest2 rest3))))
You guys are brilliant. Thank you.
-
On 2/11/2024 at 3:55 PM, Stephane Boussuge said:
Hi, you can try this:
;=====BIRDCALLS===== (setf bird1 '(3q d5 leg gs4 d5 leg gs4 d5 leg gs4)) (setf bird2 '(q a3 e. b3 x c5 leg e.. bb4)) (setf bird3 '(e fs4 leg c5 q bb4 3q fs4 stacc c5 bb4)) (setf rest1 '(-q.)) (setf rest2 '(-h)) (setf rest3 '(-w)) ;=====OMN MAKER===== (apply-eval (rnd-sample 4 '(bird1 bird2 bird3 rest1 rest2 rest3)))
Interesting. Yep, that works, too. Thanks!
Any reason why I wouldn't want to go with the ` followed by commas solution? I'm wondering if that will may break stuff later on. -
Thanks to ChatGPT (which doesn't know enough about Opusmodus to be of much help, but has enough understanding of Common Lisp to be useful), I have a partial solution:
(setf flute-omn (gen-loop 7 (rnd-pick`(,bird1 ,bird2 ,bird3 ,rest1 ,rest2 ,rest3))))
It's a simple syntax problem. I needed to use the backquote (`) along with the comma (,) operator for list splicing. This still isn't doing what I want, per se, but I can figure out the rest from here. -
Hi folks,
Apologies if I missed the "I'm completely new to this oh god help" forum. I'm struggling to get a easy idea to work properly.
In the following snippet, I'm struggling to get the first gen-loop to function:
;=====BIRDCALLS===== (setf bird1 '(3q d5 leg gs4 d5 leg gs4 d5 leg gs4)) (setf bird2 '(q a3 e. b3 x c5 leg e.. bb4)) (setf bird3 '(e fs4 leg c5 q bb4 3q fs4 stacc c5 bb4)) (setf rest1 '(-q.)) (setf rest2 '(-h)) (setf rest3 '(-w)) ;=====OMN MAKER===== (gen-loop 4 (rnd-pick '((bird1 bird2 bird3) (rest1 rest2 rest3)))) (gen-loop 4 (rnd-pick '((a4 b4 c4) (-q -h -e.)))) ;testing purposes - this kind of works
What I'm looking for is a random pick of one of the three birdcalls, following by a pick of the three rests. I've already noticed that rnd-pick isn't the way to go for that, because I want one set followed by the other, which isn't what rnd-pick is for. But evaluating the first gen-loop only returns errors. I made the second gen-loop for testing purposes, and evaluating that at least returns usable data. So:
1) Can gen-loop and rnd-pick handle variables with more that one type inside (length AND pitch AND articulattion, etc.), and, if so,
2) is there a tidier way to do what I'm after, picking between one set and another a given number of times.
Cheers!
Working with Dictum, Dictum not evaluating
in Support & Troubleshooting
Posted
Thanks! If there's too many parentheses, I'm not sure why adding yet another two will help, but hey, it works!
Opusmodus/Lisp is super weird.