JulioHerrlein Posted August 19 Posted August 19 Dear All, I was trying some old codes and this started to bug... The length-map :repeat keyword no longer works... what´s happening ? I have a lot of files using this... (setf v1mat-a (make-omn :length rv1 :pitch pit-chmd1 ;repitch1 :span :length :velocity (length-map len-map2 rv1 :otherwise '(mf) :repeat t ) :articulation (length-map len-map1 rv1 :otherwise '(ord) :repeat t ))) Error: Unexpected keyword :repeat which is not one of (:otherwise :rnd :group :section :exclude :seed). 1 (continue) Ignore the unknown keyword :repeat. 2 (abort) Return to top loop level 0. Quote
JulioHerrlein Posted August 21 Author Posted August 21 Thanks, but I found no mention about the :repeat keyword in the length-map doc. Quote
JulioHerrlein Posted August 22 Author Posted August 22 Dear Janusz, I don´t know what´s wrong here (setf repitch2 '((e4 g4 c5) (db4 cs5 gs4 f4) (fs4) nil nil (ab4 bb4 g4 gs4) (b3 d5 fs4) (eb4 bb4) (d4) nil (c4 a4 d5 b4) (b3) nil (a3) (d4) (fs4) (bb3 c5))) (setf rv2 '((1/8 1/16 1/16) (1/16 1/16 1/16 1/16) (1/4) (-1/4) (-1/4) (1/16 1/16 1/16 1/16) (1/16 1/16 1/8) (-1/8 1/16 1/16) (1/4) (-1/4) (1/16 1/16 1/16 1/16) (1/4) (-1/4) (1/4) (1/4) (1/4) (1/8 1/8) (1/16 1/8 1/16) (1/16 1/16 1/8) (1/8 1/16 1/16) (1/16 1/8 1/16) (1/8 1/8) (1/16 1/8 1/16) (1/16 1/16 1/8) (1/8 1/16 1/16) (1/16 3/16) (1/4) (1/4) (1/4) (1/16 3/16) (1/4) (1/4) (1/8 1/8) (1/4) (1/4) (1/4) (1/8 1/8) (1/8 1/8) (1/16 1/8 1/16) (1/16 1/16 1/8) (1/8 1/16 1/16) (1/16 1/8 1/16) (1/8 1/8) (1/16 1/8 1/16) (1/16 1/16 1/8) (1/8 1/16 1/16) (1/4) (1/4) (1/16 1/8 1/16) (1/4) (1/4) (1/4) (3/16 1/16) (1/16 1/8 1/16) (1/16 1/16 1/8) (1/8 1/16 1/16) (1/16 1/8 1/16) (1/8 1/8) (1/16 1/8 1/16) (1/16 1/16 1/8) (1/8 1/16 1/16) (1/4) (-1/4) (-1/4))) (setf len-map1 '((e (stacc)) (s (ord)) (h (long)) (h. (long)) (w (long)))) (setf len-map2 '((e (list (rnd-pick (mf f)))) (s (mf)) (e. (mf)) (h (p<f)) (h. (p<f)) (w (P<f>p))(wq (P<f>p))(wh (P<f>p))(wh. (P<f>p))(ww (P<f>p)))) (setf v2mat-a (make-omn :length rv2 :pitch repitch2 :span :length :velocity (length-map len-map2 rv2 :otherwise '(mf) :group t) :articulation (length-map len-map1 rv2 :otherwise '(ord) :group t))) The result comes with many instances of the word "list" ((e e4 list stacc s g4 mf ord c5 ord) (s db4 mf ord cs5 ord gs4 ord f4 ord) (q fs4 mf ord) (-q) (-q) (s ab4 mf ord bb4 ord g4 ord gs4 ord) (s b3 mf ord d5 ord e fs4 list stacc) (-e s eb4 mf ord bb4 ord) (q d4 mf ord) (-q) (s c4 mf ord a4 ord d5 ord b4 ord) (q b3 mf ord) (-q) (q a3 mf ord) (q d4 mf ord) (q fs4 mf ord) (e bb3 list stacc c5 stacc) (s e4 mf ord e g4 list stacc s c5 mf ord) (s db4 mf ord cs5 ord e gs4 list stacc) (e fs4 list stacc s mf ord fs4 ord) (s ab4 mf ord e bb4 list stacc s g4 mf ord) (e b3 list stacc d5 stacc) (s eb4 mf ord e bb4 list stacc s eb4 mf ord) (s d4 mf ord d4 ord e list stacc) (e c4 list stacc s a4 mf ord d5 ord) (s b3 mf ord e. ord) (q a3 mf ord) (q d4 mf ord) (q fs4 mf ord) (s bb3 mf ord e. c5 ord) (q e4 mf ord) (q db4 mf ord) (e fs4 list stacc fs4 stacc) (q ab4 mf ord) (q b3 mf ord) (q eb4 mf ord) (e d4 list stacc d4 stacc) (e c4 list stacc a4 stacc) (s b3 mf ord e list stacc s mf ord) (s a3 mf ord a3 ord e list stacc) (e d4 list stacc s mf ord d4 ord) (s fs4 mf ord e list stacc s mf ord) (e bb3 list stacc c5 stacc) (s e4 mf ord e g4 list stacc s c5 mf ord) (s db4 mf ord cs5 ord e gs4 list stacc) (e fs4 list stacc s mf ord fs4 ord) (q ab4 mf ord) (q b3 mf ord) (s eb4 mf ord e bb4 list stacc s eb4 mf ord) (q d4 mf ord) (q c4 mf ord) (q b3 mf ord) (e. a3 mf ord s ord) (s d4 mf ord e list stacc s mf ord) (s fs4 mf ord fs4 ord e list stacc) (e bb3 list stacc s c5 mf ord bb3 ord) (s e4 mf ord e g4 list stacc s c5 mf ord) (e db4 list stacc cs5 stacc) (s fs4 mf ord e list stacc s mf ord) (s ab4 mf ord bb4 ord e g4 list stacc) (e b3 list stacc s d5 mf ord fs4 ord) (q eb4 mf ord) (-q) (-q)) Wich leads to this error in the snippet call OM 54 > audition-musicxml-omn-snippet Error: OMN Parse Error: fail 1 (abort) Return to top loop level 0. Type for backtrace or :c <option number> to proceed. Type :bug-form "<subject>" for a bug report template or :? for other options. BEst Quote
jesele Posted August 22 Posted August 22 Hi Julio. You could try this macro type code. Jesper (setf len-map2 `((e ,(list (rnd-pick '(mf f)))) (s (mf)) (e. (mf)) (h (p<f)) (h. (p<f)) (w (P<f>p))(wq (P<f>p))(wh (P<f>p))(wh. (P<f>p))(ww (P<f>p)))) See under Backquote and comma Macros LISPCOOKBOOK.GITHUB.IO A collection of examples of using Common Lisp JulioHerrlein 1 Quote
jesele Posted August 23 Posted August 23 Not sure if I can explain this properly but here's a try. The problem has nothing to do with the length-map You are quoting a function, mixing a function and values in a list. An unquoted list is expecting a function mostly (mf f) does not work because there is no function named mf '(mf f) quoted on the other hand returns it (list (rnd-pick '(mf f))) is a function which needs '(mf f) to be quoted as above and returns the result of the function mf or f '(list (rnd-pick (mf f))) quoted vill just return the function without evaluating it So here since the whole list is within quotes returns the function of the first element and not the result (setf len-map2 '((e (list (rnd-pick (mf f)))) (s (mf)) (e. (mf)) (h (p<f)) (h. (p<f)) (w (P<f>p))(wq (P<f>p))(wh (P<f>p))(wh. (P<f>p))(ww (P<f>p)))) The back quote by it's self is no different here from the regular quote (setf len-map2 `((e (list (rnd-pick (mf f)))) (s (mf)) (e. (mf)) (h (p<f)) (h. (p<f)) (w (P<f>p))(wq (P<f>p))(wh (P<f>p))(wh. (P<f>p))(ww (P<f>p)))) But with the comma before list will evaluate the function (list (rnd-pick (mf f))) which needs '(mf f) to be quoted (setf len-map2 `((e ,(list (rnd-pick '(mf f)))) (s (mf)) (e. (mf)) (h (p<f)) (h. (p<f)) (w (P<f>p))(wq (P<f>p))(wh (P<f>p))(wh. (P<f>p))(ww (P<f>p)))) Jesper as an alternative with regular quotes you could write like this but the backquote/comma is much easier. (setf len-map2 (list (list 'e (list (rnd-pick '(mf f)))) '(s (mf)) '(e. (mf)) '(h (p<f)) '(h. (p<f)) '(w (P<f>p)) '(wq (P<f>p)) '(wh (P<f>p)) '(wh. (P<f>p)) '(ww (P<f>p)))) or (setf len-map2 (cons (list 'e (list (rnd-pick '(mf f)))) '((s (mf)) (e. (mf)) (h (p<f)) (h. (p<f)) (w (P<f>p))(wq (P<f>p))(wh (P<f>p))(wh. (P<f>p))(ww (P<f>p))))) JulioHerrlein 1 Quote
opmo Posted August 23 Posted August 23 Julio, your code is not correct. It is important to approach the problem step by step. For example, your code snippet (setf len-map2 '((e (list (rnd-pick (mf f)))) (s (mf))...) needs to be organised in stages to ensure correctness. Attempting to fix this with a macro (script) is not a productive use of time. I recommend delving deeper into Lisp coding practices to achieve a more robust and stylistically sound implementation. And, the length-map (e (mf f)) will select at random one of the dynamic - if list - anyway JulioHerrlein 1 Quote
JulioHerrlein Posted August 23 Author Posted August 23 Thanks a lot, Jesper and Janusz Yes, I need to study LISP deeper, I´m still behind in this but I´d like to remind you that this way used to work for many years. I used this code many times before. Best, Julio Quote
opmo Posted August 24 Posted August 24 (setf dy1 (list 'e (rnd-pick '(mf f))) dy2 '(s mf) dy3 '(e. mf) dy4 '(h p<f) dy5 '(h. p<f) dy6 '(w P<f>p) dy7 '(wq P<f>p) dy8 '(wh P<f>p) dy9 '(wh. P<f>p) dy10 '(ww P<f>p) ) (setf dyn (assemble-seq (list dy1 dy2 dy3 dy4 dy5 dy6 dy7 dy8 dy9 dy10))) => ((e f) (s mf) (e. mf) (h p<f) (h. p<f) (w p<f>p) (wq p<f>p) (wh p<f>p) (wh. p<f>p) (ww p<f>p)) RST and JulioHerrlein 1 1 Quote
JulioHerrlein Posted October 28 Author Posted October 28 Dear Friends, I'm back to this topic again and revising the docs. There is an example that called my attention due to the results. Here it is (from length-map docs): (setf omn '((e c4 fff cs5 f q d4 f ds5 p s f4 p fs5 p c5 p pp) (s cs4 p f d4 f e eb5 p f4 p eb4 f h d3 p ff))) (length-map '(((s e) (stacc det)) (h (tr1 tasto+trem))) omn :otherwise 'ord :rnd t :group t) ;; First evaluation ((e c4 fff stacc cs5 f stacc q d4 ord ds5 p ord s f4 stacc fs5 stacc c5 stacc c5 pp stacc) (s cs4 p stacc f stacc d4 stacc e eb5 p stacc f4 stacc eb4 f stacc h d3 p tasto+trem ff tasto+trem)) ;; Second evaluation - completely mess the lengths ((w c4 fff tie) (wet c4 fff q.t cs5 f ord+tie) (whs cs5 f tie) (e. cs5 f wq. d4 tie) (h.t d4 ds5 p stacc+tie) (wq. ds5 p e. f4 tie) (whs f4 tie) (q.t f4 wet fs5 tie) (w fs5 hs c5 tie) (whs c5 tie) (t c5 wht pp tie) (he c5 pp h... cs4 p tie) (we.. cs4 p qs. f tie) (whs cs4 f tie) (q cs4 f wqs d4 tie) (h.s. d4 he.. eb5 p tie) (wqe. eb5 p e f4 tie) (whs f4 tie) (q... f4 ws. eb4 f tr1+tie) (ws eb4 f h d3 p tie) (whs d3 p tie) (s. d3 p wq... mf tie) (he. d3 mf)) Sometimes the evalaution returns the second example, messing with the lengths. All the best ! Julio Quote
opmo Posted October 28 Posted October 28 Very clear a bug. Will have a look. the articulation 'det' is taken as a length JulioHerrlein 1 Quote
opmo Posted October 28 Posted October 28 First you need to make the code indented (each list) for better reading. Secondly the report needs to be shorter - just the problem, 2-5 bars. You should check the output first, before calling Houston. ((f mf mf) (mf mf mf mf) nil nil nil (mf mf mf mf) (mf mf f) (mf mf) (p<f>p) nil (mf mf mf mf) (p<f) nil nil nil nil (f f) (mf f mf) (mf mf f) (f mf mf) (mf f mf) (f f) (mf f mf) (mf mf f) (f mf mf) (mf mf) nil nil nil (mf mf) nil nil (f f) nil nil nil (f f) (f f) (mf f mf) (mf mf f) (f mf mf) (mf f mf) (f f) (mf f mf) (mf mf f) (f mf mf) nil nil (mf f mf) nil nil nil (mf mf) (mf f mf) (mf mf f) (f mf mf) (mf f mf) (f f) (mf f mf) (mf mf f) (f mf mf) nil nil nil) you need add otherwise. Quote
opmo Posted October 28 Posted October 28 You can't have NIL's in the lists. The result is correct. (length-map len-map2 rv2) Quote
JulioHerrlein Posted October 28 Author Posted October 28 I though otherwise was optional. Now it´s alternating mf and mp for the 16th notes... It should be all mf for 16th notes. And the time signature is changed for the breaking of the lists (in can be solved with omn to time signature. (make-omn :length rv2 :pitch repitch2 :span :length :velocity (length-map len-map2 rv2 :otherwise '(mp) ) :articulation (length-map len-map1 rv2 :otherwise '(mp) )) ((e e4 f stacc s g4 mf mp c5 mp) (s db4 mf mp cs5 mp gs4 mp f4 mp) (q fs4 mp ord) (-q) (-q) (s ab4 mf mp bb4 mp g4 mp gs4 mp) (s b3 mf mp d5 mp e fs4 f stacc) (-e s eb4 mf mp bb4 mp) (w d4 p<f>p long) (-q) (s c4 mf mp a4 mp d5 mp b4 mp) (h b3 p<f long) (-q) (q a3 mp ord) (q d4 mp ord) (q fs4 mp ord) (e bb3 f stacc c5 stacc) (s e4 mf mp e g4 f stacc s c5 mf mp) (s db4 mf mp cs5 mp e gs4 f stacc) (e fs4 f stacc s mf mp fs4 mp) (s ab4 mf mp e bb4 f stacc s g4 mf mp) (e b3 f stacc d5 stacc) (s eb4 mf mp e bb4 f stacc s eb4 mf mp) (s d4 mf mp d4 mp e f stacc) (e c4 f stacc s a4 mf mp d5 mp) (s b3 mf mp e. mp) (q a3 mp ord) (q d4 mp ord) (q fs4 mp ord) (s bb3 mf mp e. c5 mp) (q e4 mp ord) (q db4 mp ord) (e fs4 f stacc fs4 stacc) (q ab4 mp ord) (q b3 mp ord) (q eb4 mp ord) (e d4 f stacc d4 stacc) (e c4 f stacc a4 stacc) (s b3 mf mp e f stacc s mf mp) (s a3 mf mp a3 mp e f stacc) (e d4 f stacc s mf mp d4 mp) (s fs4 mf mp e f stacc s mf mp) (e bb3 f stacc c5 stacc) (s e4 mf mp e g4 f stacc s c5 mf mp) (s db4 mf mp cs5 mp e gs4 f stacc) (e fs4 f stacc s mf mp fs4 mp) (q ab4 mp ord) (q b3 mp ord) (s eb4 mf mp e bb4 f stacc s eb4 mf mp) (q d4 mp ord) (q c4 mp ord) (q b3 mp ord) (e. a3 mf mp s mp) (s d4 mf mp e f stacc s mf mp) (s fs4 mf mp fs4 mp e f stacc) (e bb3 f stacc s c5 mf mp bb3 mp) (s e4 mf mp e g4 f stacc s c5 mf mp) (e db4 f stacc cs5 stacc) (s fs4 mf mp e f stacc s mf mp) (s ab4 mf mp bb4 mp e g4 f stacc) (e b3 f stacc s d5 mf mp fs4 mp) (q eb4 mp ord) (-q) (-q)) No nils in this list, I put the optional otherwise but still getting sometimes mf and mp in the 16th notes... (progn (setf rv2 '((1/8 1/16 1/16) (1/16 1/16 1/16 1/16) (1/4) (-1/4) (-1/4) (1/16 1/16 1/16 1/16) (1/16 1/16 1/8) (-1/8 1/16 1/16) (1) (-1/4) (1/16 1/16 1/16 1/16) (1/2) (-1/4) (1/4) (1/4) (1/4) (1/8 1/8) (1/16 1/8 1/16) (1/16 1/16 1/8) (1/8 1/16 1/16) (1/16 1/8 1/16) (1/8 1/8) (1/16 1/8 1/16) (1/16 1/16 1/8) (1/8 1/16 1/16) (1/16 3/16) (1/4) (1/4) (1/4) (1/16 3/16) (1/4) (1/4) (1/8 1/8) (1/4) (1/4) (1/4) (1/8 1/8) (1/8 1/8) (1/16 1/8 1/16) (1/16 1/16 1/8) (1/8 1/16 1/16) (1/16 1/8 1/16) (1/8 1/8) (1/16 1/8 1/16) (1/16 1/16 1/8) (1/8 1/16 1/16) (1/4) (1/4) (1/16 1/8 1/16) (1/4) (1/4) (1/4) (3/16 1/16) (1/16 1/8 1/16) (1/16 1/16 1/8) (1/8 1/16 1/16) (1/16 1/8 1/16) (1/8 1/8) (1/16 1/8 1/16) (1/16 1/16 1/8) (1/8 1/16 1/16) (1/4) (-1/4) (-1/4))) (setf repitch2 '((e4 g4 c5) (db4 cs5 gs4 f4) (fs4) (ab4 bb4 g4 gs4) (b3 d5 fs4) (eb4 bb4) (d4) (c4 a4 d5 b4) (b3) (a3) (d4) (fs4) (bb3 c5))) (setf len-map2 '((e f) (s mf) (e. mf) (h p<f) (h. p<f) (w p<f>p) (wq p<f>p) (wh p<f>p) (wh. p<f>p) (ww p<f>p))) (setf len-map1 '((e (stacc)) (q (ord)) (h (long)) (h. (long)) (w (long)))) (make-omn :length rv2 :pitch repitch2 :span :length :velocity (length-map len-map2 rv2 :otherwise '(mp) ) :articulation (length-map len-map1 rv2 :otherwise '(mp) )) ) result ((e e4 f stacc s g4 mf mp c5 mp) (s db4 mf mp cs5 mp gs4 mp f4 mp) (q fs4 mp ord) (-q) (-q) (s ab4 mf mp bb4 mp g4 mp gs4 mp) (s b3 mf mp d5 mp e fs4 f stacc) (-e s eb4 mf mp bb4 mp) (w d4 p<f>p long) (-q) (s c4 mf mp a4 mp d5 mp b4 mp) (h b3 p<f long) (-q) (q a3 mp ord) (q d4 mp ord) (q fs4 mp ord) (e bb3 f stacc c5 stacc) (s e4 mf mp e g4 f stacc s c5 mf mp) (s db4 mf mp cs5 mp e gs4 f stacc) (e fs4 f stacc s mf mp fs4 mp) (s ab4 mf mp e bb4 f stacc s g4 mf mp) (e b3 f stacc d5 stacc) (s eb4 mf mp e bb4 f stacc s eb4 mf mp) (s d4 mf mp d4 mp e f stacc) (e c4 f stacc s a4 mf mp d5 mp) (s b3 mf mp e. mp) (q a3 mp ord) (q d4 mp ord) (q fs4 mp ord) (s bb3 mf mp e. c5 mp) (q e4 mp ord) (q db4 mp ord) (e fs4 f stacc fs4 stacc) (q ab4 mp ord) (q b3 mp ord) (q eb4 mp ord) (e d4 f stacc d4 stacc) (e c4 f stacc a4 stacc) (s b3 mf mp e f stacc s mf mp) (s a3 mf mp a3 mp e f stacc) (e d4 f stacc s mf mp d4 mp) (s fs4 mf mp e f stacc s mf mp) (e bb3 f stacc c5 stacc) (s e4 mf mp e g4 f stacc s c5 mf mp) (s db4 mf mp cs5 mp e gs4 f stacc) (e fs4 f stacc s mf mp fs4 mp) (q ab4 mp ord) (q b3 mp ord) (s eb4 mf mp e bb4 f stacc s eb4 mf mp) (q d4 mp ord) (q c4 mp ord) (q b3 mp ord) (e. a3 mf mp s mp) (s d4 mf mp e f stacc s mf mp) (s fs4 mf mp fs4 mp e f stacc) (e bb3 f stacc s c5 mf mp bb3 mp) (s e4 mf mp e g4 f stacc s c5 mf mp) (e db4 f stacc cs5 stacc) (s fs4 mf mp e f stacc s mf mp) (s ab4 mf mp bb4 mp e g4 f stacc) (e b3 f stacc s d5 mf mp fs4 mp) (q eb4 mp ord) (-q) (-q)) Quote
opmo Posted October 28 Posted October 28 It is optional, but if you are not covering all lengths you will get nil. NIL can be usefule but not in your code. Wrong: :articulation (length-map len-map1rv2 :otherwise '(mf) Correct: :articulation (length-map len-map1rv2 :otherwise '(ord) ; needs to be articulation Quote
JulioHerrlein Posted October 28 Author Posted October 28 Now looks good. Thanks, Janusz (make-omn :length rv2 :pitch repitch2 :span :length :velocity (length-map len-map2 rv2 :otherwise '(mp) ) :articulation (length-map len-map1 rv2 :otherwise '(ord) )) result ((e e4 f stacc s g4 mf ord c5 ord) (s db4 mf ord cs5 ord gs4 ord f4 ord) (q fs4 mp ord) (-q) (-q) (s ab4 mf ord bb4 ord g4 ord gs4 ord) (s b3 mf ord d5 ord e fs4 f stacc) (-e s eb4 mf ord bb4 ord) (w d4 p<f>p long) (-q) (s c4 mf ord a4 ord d5 ord b4 ord) (h b3 p<f long) (-q) (q a3 mp ord) (q d4 mp ord) (q fs4 mp ord) (e bb3 f stacc c5 stacc) (s e4 mf ord e g4 f stacc s c5 mf ord) (s db4 mf ord cs5 ord e gs4 f stacc) (e fs4 f stacc s mf ord fs4 ord) (s ab4 mf ord e bb4 f stacc s g4 mf ord) (e b3 f stacc d5 stacc) (s eb4 mf ord e bb4 f stacc s eb4 mf ord) (s d4 mf ord d4 ord e f stacc) (e c4 f stacc s a4 mf ord d5 ord) (s b3 mf ord e. ord) (q a3 mp ord) (q d4 mp ord) (q fs4 mp ord) (s bb3 mf ord e. c5 ord) (q e4 mp ord) (q db4 mp ord) (e fs4 f stacc fs4 stacc) (q ab4 mp ord) (q b3 mp ord) (q eb4 mp ord) (e d4 f stacc d4 stacc) (e c4 f stacc a4 stacc) (s b3 mf ord e f stacc s mf ord) (s a3 mf ord a3 ord e f stacc) (e d4 f stacc s mf ord d4 ord) (s fs4 mf ord e f stacc s mf ord) (e bb3 f stacc c5 stacc) (s e4 mf ord e g4 f stacc s c5 mf ord) (s db4 mf ord cs5 ord e gs4 f stacc) (e fs4 f stacc s mf ord fs4 ord) (q ab4 mp ord) (q b3 mp ord) (s eb4 mf ord e bb4 f stacc s eb4 mf ord) (q d4 mp ord) (q c4 mp ord) (q b3 mp ord) (e. a3 mf ord s ord) (s d4 mf ord e f stacc s mf ord) (s fs4 mf ord fs4 ord e f stacc) (e bb3 f stacc s c5 mf ord bb3 ord) (s e4 mf ord e g4 f stacc s c5 mf ord) (e db4 f stacc cs5 stacc) (s fs4 mf ord e f stacc s mf ord) (s ab4 mf ord bb4 ord e g4 f stacc) (e b3 f stacc s d5 mf ord fs4 ord) (q eb4 mp ord) (-q) (-q)) Quote
opmo Posted October 28 Posted October 28 An important part of coding is to ensure, before reporting a “bug,” that the code you are working with has been thoroughly deconstructed—if issues arise—to confirm that the error is not on your part. JulioHerrlein 1 Quote
JulioHerrlein Posted October 28 Author Posted October 28 Yes, you are correct, I always try to make sure that the fault is not mine. However, there are many hidden little "secrets" that are not evident for me. In this I was interpreting :otherwise as an optional argument. I´ll never understand Opusmodus as good as you, but I like it a lot. Thanks a lot, Best Julio opmo 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.