Yuichi Yamamoto Posted September 17, 2016 Share Posted September 17, 2016 Hi, I'm Yuichi. I don't know if there was anyone else who already did similar things or not, but I would like to share the way I achieved the continuously self-evaluating program. I actually made a video of it and hopefully I can post it here but I'll paste the code down here anyway, too. CODE wrap the whole music with a function named "evalAll (better name should be applied): (defun evalAll () (setf pitch (integer-to-pitch (rnd-row))) (setf len (span pitch '(s))) (setf omn (make-omn :pitch pitch :length len)) (def-score 12-tone (:key-signature 'atonal :time-signature '(4 3) :tempo 120) (inst :omn omn)) (display-musicxml '12-tone) (display-midi '12-tone) (sleep 1.5) (evalAll) ) (evalAll) This is just a tiny fragment of music so I'm not going to discuss the music but you see the difference between this and "live-coding-midi". In each loop it re-evaluates itself: meaning if there is random things, it will get each different results. Note that this is an infinite loop so in order to stop this, you have to press "command" + ",". If you don't like the program to freeze while executing this program, there is a way. Thanks to the developers for adding bordeaux-threads in the recent update, you can have multi-threads in Opusmodus now, so if you just make a thread of this recurrent program alone you won't be bothered to be stopped anymore. And extending this idea will lead you to have one recurrent program running while you can freely change some variables(maybe scales / chords/ instruments/ whatever) and it will be, right-on-time, reflected to the music. I hope this will inspire somebody's imagination. Yuichi recurrent.mp4 Quote Link to comment Share on other sites More sharing options...
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.