Jump to content

Phatline

Members
  • Posts

    1,285
  • Joined

  • Last visited

  • Days Won

    72

Posts posted by Phatline

  1. a jam session with the old UI:

     

     

    Triggermatrix as DrumSequencer, Trigger-Router, Melody-Retrigger > Soundengine: Nord3(efx), NordDrum2, KorgER2

    2x Boss RC300 as Loopstation for Melody Loops (Subouts are routed to my filterdistortionADR-Drumtriggered-device...)

    LiveGituar on a Gutiarsynth RC20 (that makes them etnical sounds, no not the drums they are typical NordDrum2 yesss)

     

  2. since i had a MB-SEQ-CS-PCB many years now - unused, without any case or frontpanel....

    i decidet to hold it and use it :cheers:

    i programm now a TriggerMatrix version for a more generic UI...  so other people can "reUse" it, i skip my prototype UI.

    BLM16x16+x ( @latigid on )

    MB-SEQ-CS ( @Wilba )

    MB-LRE8x2CS ( @Fairlightiii )

    To adapt my code i had to find out the pin-out of the new UI... here is the result:

    TriggerMatrix @ Generic
                MB-SEQ CS
    SEQ       MENU – ENCODERS
    62   54   ENC 0   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15  
    59 50 SR 1   1   1   1   3   3   3   3   4   4   4   4   5   5   5   5  
    SWING   PIN 6   4   2   0   6   4   2   0   6   4   2   0   6   4   2   0  
    63   55    
    58 49 ENC 16 JOG                                                          
    ROUTE FullVel SR 6                                                          
    46   38   PIN 2                                                          
    57 34                                                                    
    CC SetVel     BLM+x
    47   39       32 33 40 41 48 49 56 57 24 25 16 17 8 9 0 1
    56 33     39 38 37 36 47 46 45 44 55 54 53 52 63 62 61 60 31 30 29 28 23 22 21 20 15 14 13 12 7 6 5 4
                Intro Vel-Inv QntRec Swing Copy Paste Clear     <Move Move> STORE LOAD Qnt16 Qnt32 Qnt64
    Kill Hi Set Hi     35   42   43   50   51   58   59           26   27   18   19   10   11   2  
    14   30       35   43   42   51   PAGE                                    
    10 26             Copy Paste Clear   BEAT     STOP PLAY REC < > < >
    Kill Mid Set Mid     37   44   45   52   53   60   61     1   28   29   20   21   12   13   4  
    15   31       0?   41   40   48   FOCUS                 18   19   11   3   2  
    9 25                                                                    
    Kill Lo Set Lo     MB-LRE8x2 CS 2.5 in seriell to MB-SEQ CS Wilba                              
    6   22       ENC Kill_M Dcy_M Vel_M     Delay Swn16 Swn32       BTN                  
    8 24     SR 7   7   8   8   9   9   10   10         LED                  
                PIN 0   4   0   4   0   4   0   4                              
                ENC Kill_D Dcy_D Vel_D Kill_T FullVel Vel_Lo Vel_Mi Vel_Hi                            
                SR 7   7   8   8   9   9   10   10                              
                PIN 2   6   2   6   2   6   2   6                              

     

    programming setup:

    large.totale.jpg.8e5381b7b17f71906e3c2e7large.cs.JPG.dc67c160c958bc789801e094b47

     

  3. yesss... Triggermatrix is on the way to generic :cheers:

     

    SOFTWARE:   i stripped it a bit, and something... to find the pinning... and with pinning its easyer to program....

    UI__SEQ-CS+LRE8x2CS.zip

    HARDWARE:

    STM34F4 CORE [J8/J9] > [J1]MB-SEQ-CS-Wilba[J2] > [IN]MB-LRE8x2CS-Fairlightii

      MB-SEQ CS
    BLMx     ENCODERS
    BTN 62 54 ENC 0   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15  
    LED 59 50 SR 1   1   1   1   3   3   3   3   4   4   4   4   5   5   5   5  
    BTN 63 55 PIN 6   4   2   0   6   4   2   0   6   4   2   0   6   4   2   0  
    LED 58 49  
    BTN 46 38 ENC 16 JOG                                                          
    LED 57 34 SR 6                                                          
    BTN 47 39 PIN 2                                                          
    LED 56 33                                                                    
    BLMx     BLM+x
    BTN 14 30     32 33 40 41 48 49 56 57 24 25 16 17 8 9 0 1
    LED 10 26     39 38 37 36 47 46 45 44 55 54 53 52 63 62 61 60 31 30 29 28 23 22 21 20 15 14 13 12 7 6 5 4
    BTN 15 31     35   42   43   50   51   58   59           26   27   18   19   10   11   2  
    LED 9 25     35   43   42   51               BEAT                              
    BTN 6 22     37   44   45   52   53   60   61     1     28   29   20   21   12   13   4  
    LED 8 24     0?   41   40   48                               18   19   11   3   2  

     

    MB-LRE8x2 CS 2.5 in seriell to MB-SEQ CS Wilba
    ENC 0   2   4   6   8   10   12   14
    SR 7   7   8   8   9   9   10   10
    PIN 0   4   0   4   0   4   0   4
    ENC 1   3   5   7   9   11   13   15
    SR 7   7   8   8   9   9   10   10
    PIN 2   6   2   6   2   6   2   6
  4. the concept sounding logical.... i think i have something seen here http://svnmios.midibox.org/filedetails.php?repname=svn.mios32&path=%2Ftrunk%2Fapps%2Ftutorials%2F029_keyboard_velocity%2FREADME.txt

    no, mb_ng is to big (cant understand code which i havent programmed myself, or stripped down to the minimum working task)

    have to try to strip down the tutorial 29 code, by remove the Velocity calculating.

     

  5. I want to program my own software running on the "Generic" SEQ-CS-Wilba - UI- PCB (Software: Triggermatrix)

    it has nothing to do with the SEQV4, except the BPM part, so ripp off the UI-Code for the Button-Matrix from SEQV4 is a no go > i dont understand it.

    i first wrote a small app to show me DIN-PINing off all Btns,  (following Pins have a offset off 4 Shiftregisters ... because a MB-LRE-8x2CS is in the chain)

    then realized that not every btn has its very own PIN...ok i thougt, i know such things from LEDMatrices the other way arround.

    But Scan Matrices (BTNs) is newland for me... i quick search give me: mios32/trunk/apps/examples/fastscan_button_matrix_16x16 <<< should i start with that, or is there a more simple/better for learn-Code somewhere

    thanx

      MB-LRE8x2CS ROW 1
    ENC 0 1 2 3 4 5 6 7
    SR 1 1 1 1 2 2 2 2
    Pin 0 2 4 6 0 2 4 6
      MB-LRE8x2CS ROW 2
    ENC 8 9 10 11 12 13 14 15
    SR 3 3 3 3 4 4 4 4
    Pin 0 2 4 6 0 2 4

     

            BNT-SCAN-Matrix
    Nr.       0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    BTN 46 46                                  
    LED                                      
    BTN 47 47                                  
    LED                                      
    BTN 46 46                                  
    LED                                      
    BTN 47 47                                  
    LED                                      
                                           
    BTN 47 47   40 41 40 41 40 41 40 41 40 41 40 41 40 41 40 41
    LED                                      
    BTN 47 47   43 42 43 42 43 42 43 42 43 42 43 42 43 42 43 42
    LED                                      
    BTN 47 47   45 44 45 44 45 44 45 44 45 44 45 44 45 44 45 44
    LED                                      
  6. i measure 4 you :

    @J11 Core 5v between VS and 4,1V Pin (should be 5V thenthe pcb is already labeld with +5V,)

     

    between VS and MI1-4 i measure 3Vs (should 3,3 maybe - my displays consume much...)

    between VS and MO1-4 i measure 0,5V

     

    @a midiport which is sending > has on my board 3,9VDC which i assume should be 5V - so 5V then!

    i use an application which uses 2xMIO Boards

  7. 47 minutes ago, enron_hubbard said:

    I had totally forgotten about the Linnstrument - looks like it does do a harmonic table layout if it's set up that way. It was the C-Thru Axis controllers that got me thinking about harmonic tables again, and those used hexagonal keys, but it might make more sense to either do another BLM grid, or implement the harmonic table layout on the existing BLM, instead. The reason behind the hexagonal keys on the C-Thru, and the staggered button layout, was so the player could easily play a major/minor triad with just one finger - which wouldn't be nearly as easy to do with the button pads. So if I could get the same functionality out of the existing BLM, it would free up that space on the control surface for other stuff.

    well then build the BLM first, and then Touch/feel the buttons, what do the feel for you

    ... for me it dont have the feel/touch to play melodys on it, i mean you have to play precisely o..., and touch it the right way in order to activate the right.. ... i am no keyboarder yet, i stell play the last year from time to time, and as techno musican it gets wild... being in beat, hitting in beat -its then

    a.  good to have this big white and black keys to hit the right note... (i talk about size not, the arrangement off keys)

    &

    b. the feeling the instrument is built for that so you can really punch it.... with the BLM i ever have the feeling of "not touching it to much" ... i even thougt about it, to exclude my 16 ROLL buttons (which i use most and hard) from the BLM-XY-ExtraBtns and take some more robust one (i havnt found them yet), i have thougt about DIY optical ones with Diodes/fototransistors, and AIN moduels...

  8. for me i dont need Velocity on the Harmonic table... since in my concept the melody-velocity is overruled from the Drum-Sequence-Velocity (in fact they only sound when a drumtrigger comes in).... but for the Drumsequence (remoted from BLM) i will need 16x Velocity-sense Pads, to trigger the Drumsequence in,

    in my concept the DrumTriggerpads are next to the BLMs Tracks, like your picture only in 2 rows...

  9. i am plaing something like this, but with a custom Sequencer software and hardware instead of Wilbas Frontpanel

    in my case the Frontplates are individual Plates for the different devices, mounted on trusses...in order to be modular in the future...

    the trusses are mounted in a road-Case, which i will order from Thoman.de

     

    i am interested in your Harmonic Table!!! good idea! If the Buttons can be illuminated - and you plan to order a PCB for that? (illumination to show currently played MelodySequence &or harmonic fitting Notes)  - i am possibly in for that, or @ least interesting @ the way you going it on....

  10. FYI

     

    i have uploadet the APP:

    mios32/trunk/apps/misc/usb_mass_storage_device/project.hex

    on a STM32F4....

    MiosStudio then say: "[16004.284] SD Card has been connected!"

    but linux (Ubuntu 15.10) dont recognize a new Drive.

     

    i have already tryd a other STM32F4 board - still the same.

     

    maybe because the code was written for the stm32F10? > (stm32F4 has on board SD-Card slot) - i dont know, but the application recognize a sd-card.

    "Required hardware:
       o MBHP_CORE_STM32 or MBHP_CORE_LPC17
       o a SD Card connected to J16 of the core modulRequired hardware:
    "

  11. AutoQuantize, some Excel again:

    Base = 12tics * 8 = 96tics between 2 16th Steps
    TIC Quantize 64 Quantize 32 Quantize 16
    if * && if * Tic Step if * && if * Tic Step if * Tic STEP
    0 <= Base 1       0 Current <= Base 2       0 Current <= Base 4 0 Current
    1 <= Base 1       0 Current <= Base 2       0 Current <= Base 4 0 Current
    2 <= Base 1       0 Current <= Base 2       0 Current <= Base 4 0 Current
    3 <= Base 1       0 Current <= Base 2       0 Current <= Base 4 0 Current
    4 <= Base 1       0 Current <= Base 2       0 Current <= Base 4 0 Current
    5 <= Base 1       0 Current <= Base 2       0 Current <= Base 4 0 Current
    6 <= Base 1       0 Current <= Base 2       0 Current <= Base 4 0 Current
    7 <= Base 1       0 Current <= Base 2       0 Current <= Base 4 0 Current
    8 <= Base 1       0 Current <= Base 2       0 Current <= Base 4 0 Current
    9 <= Base 1       0 Current <= Base 2       0 Current <= Base 4 0 Current
    10 <= Base 1       0 Current <= Base 2       0 Current <= Base 4 0 Current
    11 <= Base 1       0 Current <= Base 2       0 Current <= Base 4 0 Current
    12 > Base 1   <= Base 2 Base*2 Current <= Base 2       0 Current <= Base 4 0 Current
    13 > Base 1   <= Base 2 Base*2 Current <= Base 2       0 Current <= Base 4 0 Current
    14 > Base 1   <= Base 2 Base*2 Current <= Base 2       0 Current <= Base 4 0 Current
    15 > Base 1   <= Base 2 Base*2 Current <= Base 2       0 Current <= Base 4 0 Current
    16 > Base 1   <= Base 2 Base*2 Current <= Base 2       0 Current <= Base 4 0 Current
    17 > Base 1   <= Base 2 Base*2 Current <= Base 2       0 Current <= Base 4 0 Current
    18 > Base 1   <= Base 2 Base*2 Current <= Base 2       0 Current <= Base 4 0 Current
    19 > Base 1   <= Base 2 Base*2 Current <= Base 2       0 Current <= Base 4 0 Current
    20 > Base 1   <= Base 2 Base*2 Current <= Base 2       0 Current <= Base 4 0 Current
    21 > Base 1   <= Base 2 Base*2 Current <= Base 2       0 Current <= Base 4 0 Current
    22 > Base 1   <= Base 2 Base*2 Current <= Base 2       0 Current <= Base 4 0 Current
    23 > Base 1   <= Base 2 Base*2 Current <= Base 2       0 Current <= Base 4 0 Current
    24 > Base 2   <= Base 3 Base*2 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    25 > Base 2   <= Base 3 Base*2 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    26 > Base 2   <= Base 3 Base*2 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    27 > Base 2   <= Base 3 Base*2 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    28 > Base 2   <= Base 3 Base*2 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    29 > Base 2   <= Base 3 Base*2 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    30 > Base 2   <= Base 3 Base*2 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    31 > Base 2   <= Base 3 Base*2 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    32 > Base 2   <= Base 3 Base*2 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    33 > Base 2   <= Base 3 Base*2 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    34 > Base 2   <= Base 3 Base*2 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    35 > Base 2   <= Base 3 Base*2 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    36 > Base 3   <= Base 4 Base*4 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    37 > Base 3   <= Base 4 Base*4 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    38 > Base 3   <= Base 4 Base*4 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    39 > Base 3   <= Base 4 Base*4 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    40 > Base 3   <= Base 4 Base*4 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    41 > Base 3   <= Base 4 Base*4 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    42 > Base 3   <= Base 4 Base*4 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    43 > Base 3   <= Base 4 Base*4 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    44 > Base 3   <= Base 4 Base*4 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    45 > Base 3   <= Base 4 Base*4 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    46 > Base 3   <= Base 4 Base*4 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    47 > Base 3   <= Base 4 Base*4 Current > Base 2   <= Base 4 Base*4 Current <= Base 4 0 Current
    48 > Base 4   <= Base 5 Base*4 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    49 > Base 4   <= Base 5 Base*4 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    50 > Base 4   <= Base 5 Base*4 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    51 > Base 4   <= Base 5 Base*4 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    52 > Base 4   <= Base 5 Base*4 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    53 > Base 4   <= Base 5 Base*4 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    54 > Base 4   <= Base 5 Base*4 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    55 > Base 4   <= Base 5 Base*4 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    56 > Base 4   <= Base 5 Base*4 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    57 > Base 4   <= Base 5 Base*4 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    58 > Base 4   <= Base 5 Base*4 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    59 > Base 4   <= Base 5 Base*4 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    60 > Base 5   <= Base 6 Base*6 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    61 > Base 5   <= Base 6 Base*6 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    62 > Base 5   <= Base 6 Base*6 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    63 > Base 5   <= Base 6 Base*6 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    64 > Base 5   <= Base 6 Base*6 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    65 > Base 5   <= Base 6 Base*6 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    66 > Base 5   <= Base 6 Base*6 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    67 > Base 5   <= Base 6 Base*6 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    68 > Base 5   <= Base 6 Base*6 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    69 > Base 5   <= Base 6 Base*6 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    70 > Base 5   <= Base 6 Base*6 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    71 > Base 5   <= Base 6 Base*6 Current > Base 4   <= Base 6 Base*4 Current > Base 4 0 Next
    72 > Base 6   <= Base 7 Base*6 Current >Base 6       0 Next > Base 4 0 Next
    73 > Base 6   <= Base 7 Base*6 Current >Base 6       0 Next > Base 4 0 Next
    74 > Base 6   <= Base 7 Base*6 Current >Base 6       0 Next > Base 4 0 Next
    75 > Base 6   <= Base 7 Base*6 Current >Base 6       0 Next > Base 4 0 Next
    76 > Base 6   <= Base 7 Base*6 Current >Base 6       0 Next > Base 4 0 Next
    77 > Base 6   <= Base 7 Base*6 Current >Base 6       0 Next > Base 4 0 Next
    78 > Base 6   <= Base 7 Base*6 Current >Base 6       0 Next > Base 4 0 Next
    79 > Base 6   <= Base 7 Base*6 Current >Base 6       0 Next > Base 4 0 Next
    80 > Base 6   <= Base 7 Base*6 Current >Base 6       0 Next > Base 4 0 Next
    81 > Base 6   <= Base 7 Base*6 Current >Base 6       0 Next > Base 4 0 Next
    82 > Base 6   <= Base 7 Base*6 Current >Base 6       0 Next > Base 4 0 Next
    83 > Base 6   <= Base 7 Base*6 Current >Base 6       0 Next > Base 4 0 Next
    84 > Base 7       0 Next >Base 6       0 Next > Base 4 0 Next
    85 > Base 7       0 Next >Base 6       0 Next > Base 4 0 Next
    86 > Base 7       0 Next >Base 6       0 Next > Base 4 0 Next
    87 > Base 7       0 Next >Base 6       0 Next > Base 4 0 Next
    88 > Base 7       0 Next >Base 6       0 Next > Base 4 0 Next
    89 > Base 7       0 Next >Base 6       0 Next > Base 4 0 Next
    90 > Base 7       0 Next >Base 6       0 Next > Base 4 0 Next
    91 > Base 7       0 Next >Base 6       0 Next > Base 4 0 Next
    92 > Base 7       0 Next >Base 6       0 Next > Base 4 0 Next
    93 > Base 7       0 Next >Base 6       0 Next > Base 4 0 Next
    94 > Base 7       0 Next >Base 6       0 Next > Base 4 0 Next
    95 > Base 7       0 Next >Base 6       0 Next > Base 4 0 Next
    96 Next 16th Note Next 16th Note Next 16th Note

     

     

     

    this code in a Function which delivers midi-input, writes on a specific STEP, a Sequencer-TIC-Offset, and a Velocity in specific Track, which means with that you have a stepsequencer with 96tic Resulution between 2 Step entrys....StepSend is the currently played step, TicSend the currently played 96th Tic which loops from 0-96 between 2 Notes

    //RECORD
      if(port == 1) { //MidiTrigger-Input (Real Drummer)
        if(Rec == 1) {//Record Switch Active
          //AutoQuantize OFF?
          if(AutQuntActive == 0) {
            Seq[note][StepSend] = velocity; // Write Velocity into current Step on Triggered Note
            SeqTic[note][StepSend] = TicSend;}   // Write a "Time-Stemp" to realize Human Timing. (you can quantize later)
    
    	  //AutoQuantize ON?
          if(AutQuntActive == 1) {//Quantize while Recording is ON
    
              //32nd Quantize Mode
              if(QuantRate == 1) { //QuantRate0:16th,1:32nd, 2:64
                  //Write Velocity in currently played Step
                  if(TicSend <= (BaseTic*6) )  {  //12x6=72 (Tic 0-72)
                    Seq[note][StepSend] = velocity; // Write Velocity into current sequenced Step with Triggered Note
                      if(TicSend <= BaseTic*2) {SeqTic[note][StepSend] = 0;}//Straight 16th without delay
                      if(TicSend > BaseTic*2 && TicSend <= BaseTic*4) {SeqTic[note][StepSend] = BaseTic*4;}//Delay 2 next 32nd Note
                      if(TicSend > BaseTic*4 && TicSend <= BaseTic*6) {SeqTic[note][StepSend] = BaseTic*4;}}//Delay 2 previus 32nd Note
    
                  else { //Write Velocity into Next note
                     SeqTic[note][StepSend] = 0;  // kick back to zero > straight machine time > no delay
                      //Are we on Last Step of Loop?
                      if(direction == 1) {  //when in Forward Direction Sequencing Mode
                        if(note == Last) { //when Last step is arrived
                          Seq[First][StepSend] = velocity;} //then write Velocity in First Note of Loop
                        if(note < Last)  { //If not Last Step, then simply write in next Step:
                          Seq[note][StepSend+1] = velocity;} //next step
                       }
                     if(direction == 0) {  //when in Rewind Direction Sequencing Mode
                        if(note == First) { //when First step is arrived (typical 0)
                          Seq[Last][StepSend-1] = velocity;} //then write Velocity in Last Note of Loop (typical 16)
                        if(note > First)  { //If not First Step, then simply write in next Step:
                          Seq[note][StepSend-1] = velocity;} //next step
                      }}
                 }

     

×
×
  • Create New...