<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
<br>Her is the start.<br>I'm acually searching a way to access to actions by number of the control button, not parsing the list of actions every-time.<br>May my organisation is wrong, I'm aware to any suggestions.<br>Thanks<br><br><br>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br><br><br>(clear)<br>;///Strucures delarations<br>(define-struct midi-action-default (name (value #:mutable) (mod #:mutable) (midi-cc #:mutable) (loaded #:mutable #:auto)) #:auto-value 0)<br>(define-struct midi-mode-default ((midi-actions-default #:mutable)))<br>(define-struct midi-script-default ((midi-modes-default #:mutable) (mode-select #:mutable)))<br><br>;///Filling with values<br>(define script-default<br>    (make-midi-script-default<br>        (list<br>            (make-midi-mode-default<br>                (list<br>                    (make-midi-action-default<br>                        'color 0.5 0 40)<br>                    (make-midi-action-default<br>                        'size 5 0 41)<br>                    (make-midi-action-default<br>                        'position 1 0 42)<br>                )<br>            )<br>            (make-midi-mode-default<br>                (list<br>                    (make-midi-action-default<br>                        'color 0 0 40)<br>                    (make-midi-action-default<br>                        'size 10 0 41)<br>                    (make-midi-action-default<br>                        'position 0 0 42)<br>                )<br>            )<br>        )<br>        1<br>    )<br>)<br><br>(define (testy)<br>    ;/// Changing mode function, change the mode-select field<br>    ;/// and will load actual controllers values into "loaded" field<br>    ;/// to know if the default or button value have to be send.<br>    (define (change-mode num level)<br>        (set-midi-script-default-mode-select! script-default num)<br>    )<br>    ;///get value by action name<br>    (define (default action)<br>        (for/first<br>            ((i<br>                (build-list<br>                    (length<br>                        (midi-mode-default-midi-actions-default<br>                            (list-ref<br>                                (midi-script-default-midi-modes-default script-default)<br>                                (midi-script-default-mode-select script-default)<br>                            )<br>                        )<br>                    )<br>                    values<br>                )<br>            )<br>            #:when<br>                (equal?<br>                    (midi-action-default-name<br>                        (list-ref <br>                            (midi-mode-default-midi-actions-default<br>                                (list-ref<br>                                    (midi-script-default-midi-modes-default script-default)<br>                                    (midi-script-default-mode-select script-default)<br>                                )<br>                            )<br>                            i<br>                        )<br>                    )<br>                    action<br>                )<br>            )<br>        (midi-action-default-value<br>            (list-ref <br>                (midi-mode-default-midi-actions-default<br>                    (list-ref<br>                        (midi-script-default-midi-modes-default script-default)<br>                        (midi-script-default-mode-select script-default)<br>                    )<br>                )<br>                i<br>            )<br>        )<br><br>        )<br>    )<br>    ;///get value my button number<br>    (define (midi-default channel control coeff)<br>        (for/first<br>            ((i<br>                (build-list<br>                    (length<br>                        (midi-mode-default-midi-actions-default<br>                            (list-ref<br>                                (midi-script-default-midi-modes-default script-default)<br>                                (midi-script-default-mode-select script-default)<br>                            )<br>                        )<br>                    )<br>                    values<br>                )<br>            )<br>            #:when<br>                (equal?<br>                    (midi-action-default-midi-cc<br>                        (list-ref <br>                            (midi-mode-default-midi-actions-default<br>                                (list-ref<br>                                    (midi-script-default-midi-modes-default script-default)<br>                                    (midi-script-default-mode-select script-default)<br>                                )<br>                            )<br>                            i<br>                        )<br>                    )<br>                    control<br>                )<br>            )<br>        (midi-action-default-value<br>            (list-ref <br>                (midi-mode-default-midi-actions-default<br>                    (list-ref<br>                        (midi-script-default-midi-modes-default script-default)<br>                        (midi-script-default-mode-select script-default)<br>                    )<br>                )<br>                i<br>            )<br>        )<br><br>        )<br>    )<br>    ;/// Changing mode with F1 F2 F3 F4<br>    (cond<br>        ((key-special-pressed 1)<br>            (change-mode 0 0))<br>        ((key-special-pressed 2)<br>            (change-mode 1 0))<br>        ((key-special-pressed 3)<br>            (change-mode 2 0))<br>        ((key-special-pressed 4)<br>            (change-mode 3 0))<br>    )<br>    (scale (vector (midi-default 0 41 2) 1 1))<br>    (translate (vector (midi-default 0 42 1) 0 0))<br>    (colour (hsv->rgb (vector (default 'color) 1 1)))<br>    (draw-cube)<br>)<br><br>(every-frame (testy))<br> <br><br><br>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br><br><br><br><br><hr id="stopSpelling">CC: fluxus@lists.pawfal.org<br>From: lists@lowfrequency.org<br>To: ted.r@hotmail.fr<br>Subject: Re: [Fluxus] midi default values<br>Date: Mon, 15 Mar 2010 11:55:12 +0000<br><br><div>sounds complicated...</div><div><br></div><div>post some code?</div><br><div><div>On Mar 15, 2010, at 1:28 AM, Adrien Rocher wrote:</div><br class="ecxApple-interchange-newline"><blockquote><span class="ecxApple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div class="ecxhmmessage" style="font-size: 10pt; font-family: Verdana;"><br><br>Hi the list.<br>I'm working on an ambitious implementation for me.<br>I try to make midi default values stored in a file loaded in structures.<br>But I'm loosing me in the code.<br>Plus, I want to make 4 different for each script... yes, one is too easy  ;-)<br>I'm making a structure to store the four mode I want to store with a list inside.<br>A strucure of each mode is a list of actions stored linked to midi controllers.<br><br>Here is my problem.<br>I have to save a lot of things<br>name (optional), default value, controller linked to, value of the controller when mode loaded (to change when the controller move) , a boolean to say if the value have been changed (to say if the default or controller value have to be returned).<br>I have two problems with this.<br>How to set up the controller value when mode loading, wich depend of a field of his own structure.<br>And how to make an index or something like that, to find easily the action in the list of availables. Because I think searchin the list, even with a for/first will be too heavy.<br>Have anyone an advice for me?<br>I'm getting confused...  ;-)<br><br><hr>Télécharger en toute sécurité sur Internet ?<span class="ecxApple-converted-space"> </span><a href="http://clk.atdmt.com/FRM/go/206608211/direct/01/">La solution avec Internet Explorer 8</a></div></span></blockquote></div><br>                                     <br /><hr />Envie de naviguer sur Internet sans laisser de trace? <a href='http://clk.atdmt.com/FRM/go/207186970/direct/01/' target='_new'>La solution avec Internet Explorer 8</a></body>
</html>