Jump to content
Sign in to follow this  
Andy

Help with seed and semi-colons

Recommended Posts

 

 

Hi

I'm starting to loose the will to progress.

So I just spent an hour trying to evaluate this and getting errors and thinking I'd got the wrong number of brackets and yet it looks fine.

 

(setf motifx12 (rnd-order (gen-repeat 12 (list motif)))) :seed3) 

 

And then I realise that I have to place the cursor not on the final bracket but on the one before :seed3)

Nowhere does it say this in the manual as far as I can tell.

And why?

I think it's something to do with the : colon that I don't understand in the language. And I still don't understand seed.

I'm really trying to get to grips with lisp but my hair is on fire. 😞

Share this post


Link to post
Share on other sites

Thanks both.

 

I have done some basic lisp tutorials but I have to ask the question:

 

"Is Opusmodus meant for computer programmers who are also composers?

       or composers who are also computer programmers?

                  or composers with some slight knowledge of code?"

                     or academics?

 

 

I have to say I am in the "composers with slight knowledge of code" category and right now the demo is expiring and I've barely got to grips (see above) and 300 euros seems like a lot of money when I'm not able to be sure...I've spent most of my time doing Lisp tutorials and not making music. I spent £30 on a book "Parametric Composition" which is great, but I'm not sure whether to follow the examples in that..or the Tutorials in Opusmodus or the Language Lessons or Lisp tutorials or...

 

30 days is not long enough in my opinion to demo this software. And there is no option to extend the demo which is a huge oversight in my opinion.

 

Sorry to rant slightly but I'm giving you my heartfelt feedback as I really want Opusmodus to work for me...

 

Share this post


Link to post
Share on other sites

in my personal view:

 

- for algorithmic composition ...you have first to be a composer/musician - because it's a lot more about music then about code (i learned a little bit to code, because i was interested in this "kind of thinking" about art and music

 

- so, i think, if you want to work with algorithms you have to handle some code (like in music you have to handle some pitches/sound/rhythms)

 

- when you have a look to the history of algorithmic composition you see some software like: common music, open music, pwgl, patchwork, also supercollider or MAX etc, it has always to do with computer/code/algorithm. also PWGL, commonmusic, openmusic... are working with LISP (or parts of it), so i think, that's the thing. mostly i like in OPUSMODUS the direct connection to the SCORE etc... i like it also because it's very OPEN for some own things/code/ideas (because it's close to the basic COMMON LISP)...

 

- you could work with all the EXAMPLES in the library, take it, do some smooth changes and have a look what happens...

 

greetings

andré 

 

Share this post


Link to post
Share on other sites

Hi Andre

 

Thanks for this considered answer..it helps.

Of course you are right and yet I just wish code was more human friendly and less computer friendly!  High level is not high enough for me 🙂

There seems to be a gap between a DAW, which is based on the paradigm of a multitrack recorder, and Opusmodus, common music, open music, pwgl, patchwork etc that are based on the language of the computer.

And I was hoping Opusmodus might fill that gap and it almost does...but (((((((  ))))))))) drives me nuts! But that's coding.

I too love the 'direct connection to the score'  as you say.

I will persevere. I have had great fun with Live Coding in the past so this can't be so difficult.

 

Best

 

Andy

Share this post


Link to post
Share on other sites

It's actually

(setf motifx12 (rnd-order (gen-repeat 12 (list motif)) :seed 3))

Achim

Share this post


Link to post
Share on other sites

Ah Achim you are correct! Thanks. Well that code as I had it came direct from the Parametric Composition ebook first chapter. 

I couldn't understand why I had to evaluate it not at the last bracket...but now I do. Thanks

Share this post


Link to post
Share on other sites

Yes,  the learning curve is high, but there are a lot of benefits in this way of thinking music, specially if You work with notated music. This is where Opusmodus fill the gap, making  a Bridge between code, algorhythms and notation in a desktop work flow, where you can organize all your files and stuff without distractions. 

Best, 

Julio 

Share this post


Link to post
Share on other sites

Julio..the learning curve is vertical!

But there is something urging me to keep going. How long to get to a point where things become more intuitive?

Best

Andy

 

Share this post


Link to post
Share on other sites

 

I think the best idea is to test musical ideias from annotated scores. Here are an example of a parametric composition  with  step by step decisions documented. Hope it can help you. 

The Nigel Morgan book is also very useful as well as the tutoriais by Janusz  here in the fórum. 

The best is read the book testing the code in Opusmodus at the same time. 

Best Julio 

Share this post


Link to post
Share on other sites

The best way to progress quickly is to test and play with each of the examples in the 'How To' section which you will find in Utilities.

You will see the omn form expression (scoring like on paper) and some simple self explanatory algorithms.

Examine the input and output in the Listener.

Snippet will help as well.

Share this post


Link to post
Share on other sites

but (((((((  ))))))))) drives me nuts!

 

Actually, the editor helps you there. Just place the cursor directly before an opening or after a closing parenthesis, and the matching parenthesis is shown.

 

Now, I am probably biased after using Lisp for quite some time, but I actually appreciate this simple syntax. I also programmed in various other languages, and I meanwhile prefer the Lisp syntax...

 

Best,

Torsten

Share this post


Link to post
Share on other sites

Forget to mention: for better readable code you should indent your code appropriately, but again, the editor does that automatically for you. Just hit ENTER where you want to insert a line break and then press TAB, and the editor does then context-dependent indenting for you.

 

Best,

Torsten

 

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.

Guest
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 Andy
      Hello
      I'm new here.
      I'm on the demo and doing fine but for the life of me I can't figure out what the n integer does after :seed?
      I know seed fixes a random function so it is repeatable but what does that number do? I tried changing it in Tutorial 5 but I can't make sense of it!
      Thanks
      Andy
       
    • By EAIP
      Here is a suggestion for posting the random seed value used by a function.
      When using Open Music way back in time I remember that you could "lock" a random function if you liked the result, which IMO was a great workflow feature.
      Perhaps a similar thing could be achived in Opusmodus if the random seed used for a function was posted to the post window in addition to the result of the evaluation.
      If you like the result of a particular seed you could then manually "lock" the randomization using the :seed keyword for the function:
       
      ; first try different randomizations (setf bin-rhythm (gen-binary-rnd 5 5 2 1)) => gen-binary-rnd :seed 752 (setf bin-rhythm (gen-binary-rnd 5 5 2 1)) => gen-binary-rnd :seed 234 ; then lock seed if you like the result (setf bin-rhythm (gen-binary-rnd 5 5 2 1) :seed 234)  
      Perhaps if possible also with the variable name as a label to keep track of things when using several random functions in complex code:
       
      (setf bin-rhythm (gen-binary-rnd 5 5 2 1)) => bin-rhytm gen-binary-rnd :seed 37  
      I think that this or a similar approach would be a really powerful way of trying different results when working with randomization in Opusmodus.
       
    • By PatrickMimran
      I try to put a seed as an option in this function with a default value of nil or no seed , how may i add it as optional 
       
      Thanks  Patrick  
       
      (defun patkaos ( seed lambda long )
       (let ((res (cons seed nil)) (xn seed))
          (dotimes (n long res) (setf res (cons (setf xn (* lambda xn (- 1 xn))) res)))
          (reverse res)))
×
×
  • Create New...