Jump to content

ultra

Programmer
  • Posts

    832
  • Joined

  • Last visited

Everything posted by ultra

  1. ultra

    SMT shift registers

    i went the exact same route with my blm scalar. built right into the back of the CS with the same type of ICs. they're really not hard at all to solder.
  2. ultra

    tight fit!

    and it's metal!!!!!!!!!!!
  3. ultra

    tight fit!

    From the album: MIDIbox Live

    the design is going to be a tight fit. i need to add much more detail to the core32 pcb (right now it's just a block, representing the height of the midi sockets) and the control surface pcb (which now needs a complete redesign) to see how it all fits together. at 7.38" x 4.70" x 1.30" (188mm x 119.5mm x 33mm), this is going to be a tiny little clip controller.
  4. ultra

    going minimal

    oh yeah, and it's aluminum!
  5. ultra

    going minimal

    From the album: MIDIbox Live

    i've made some layout modifications to my ableton live clip controller to fit this case: http://www.mammothelectronics.com/4S1590DD-p/500-1003.htm the relatively small changes will give some big results because the box is much smaller than a PT-10. i haven't yet figured out how to implement modifier/alt buttons to add other forms of control (clip nudging, mute/solo, etc), but those buttons will go on the far side of the case.
  6. i'm always amazed by the amount of brilliant people who have been drawn to midibox!

    1. Show previous comments  1 more
    2. Antix

      Antix

      creative,friendly and intelligent?oh...what I am doing here? :-P

    3. lucem

      lucem

      second that

    4. technobreath

      technobreath

      third that :D hihi

  7. awesome. i would like to do something like this for my ableton live controllers. i'm not big on the engraved look.
  8. looks nice. how do you have these made?
  9. i grabbed the demo of audiorealism bassline 2, and unfortunately i don't think the step parameters are exposed to live. i did a dump of what's available, and here it is: [696172.950] DEBUG: Device On [696172.961] DEBUG: Tune [696172.972] DEBUG: Cutoff [696172.984] DEBUG: Resonance [696172.994] DEBUG: Env.mod [696173.006] DEBUG: Decay [696173.017] DEBUG: Accent [696173.028] DEBUG: Drive [696173.040] DEBUG: Distortion [696173.051] DEBUG: Volume [696173.063] DEBUG: Reserved [696173.074] DEBUG: Waveform [696173.091] DEBUG: DistortionType [696173.107] DEBUG: HighpassFilter i looked into the parameter called "reserved" just to make sure, changing it doesn't seem to do anything. sorry to get your hopes up. ultra
  10. you could likely get the feedback you want with liveapi. this requires coding your own script in python which you load like any other control surface. it's not the easiest thing to do if you don't know python or any other OOP language, but it's worth learning because using liveapi has countless applications. whether or not it's possible depends on if those step functions are exposed to live. they probably are if they're midi assignable.
  11. ultra

    ableton live controller

    thanks lucem. the software is working too :)
  12. ultra

    IMAG0384.jpg

    nope alkex, thats' all tact switches. :)
  13. my ableton live clips controller is almost 100% working :)

  14. i would install a midi loopback (such as loopbe on windows) and route the software's output to midi-ox. ultra
  15. congrats on the midibox sid, igi. looks really nice. is that a front panel express panel?
  16. congrats gtxdude. nice seq!
  17. cool button, but the price would add up pretty fast.
  18. somehow i left out the code where it's assigning the mask. that's done by note numbers.
  19. i've been trying to figure out how the blm_scalar driver works (mios32\trunk\modules\blm_scalar.c) and adapt it to my own needs. my pcb is a control surface with the two scalar circuits built in, and it just all connects via one ribbon cable to j8/j9. i've checked my schematic for problems several times, and have done continuity tests on the boards, and i'm 99% sure there aren't any problems with it (i did have to fix a couple). i've figured a few things out, but so far, i'm having a couple problems. the buttons: only the buttons on the first scalar circuit give me any response from mios32. they work well, but there's no indication that the buttons on the second scalar circuit are working at all. i've added the following line to mios32_config.h: #define BLM_SCALAR_NUM_MODULES 2 when i insert debugging code into the blm_scalar driver, i can see that 2 is what it's set at. but still, no buttons on the second scalar circuit respond. the leds: my led issue might not be as straightforward. i put the following line in mios32_config.h: #define BLM_SCALAR_NUM_COLOURS 2 i have 2 color (red, green, orange) leds, so i assume that's the correct setting. i took the code from the blm_scalar controller example (mios32\trunk\apps\controllers\blm_scalar\app.c) and modified it so that my keyboard's knobs change the mod and row values being sent in, and mask is defined by which key is played. it modifies the following line of code from the app: blm_scalar_led[led_mod_ix][led_row_ix][0] &= ~led_mask; of course, i also have the variations of it to turn on/off and set the color. i'm using the masks 1, 2, 4, 8, 16, 32, 64, and 128 for the keys. most of the leds do light up, and the color is changed with velocity. so most of the board is working fine. a couple of problems though: the leds that should light up with mask 1 don't do anything. i've double checked the circuit and everything seems fine. also, i have gotten them to turn on by using loops and BLM_SCALAR_DOUT_PinSet to turn on as many pins as i can. changing different led_mod_ix values doesn't do anything (for any of these, it's 0 for all) and changing row does indeed change row. but using the mask 1 doesn't light them up for some reason. the second problem is with the second scalar circuit. i change mios32_config.h to have the following line: #define BLM_SCALAR_NUM_MODULES 2 now the leds that were working properly are very dim and flickery. and also, i can't get the leds in the second circuit to light up (i'm not sure if i need different masks or mod_ix or row_ix). however, i did get some of them to light up when using the loops and BLM_SCALAR_DOUT_PinSet. and if i recall, all leds had the proper brightness. otherwise, what does work, works great. any help with these problems would be greatly appreciated. sorry if this is a bit of a cross-post, but i've since figured a lot more out about the problems i'm having. ultra here is the code i'm trying to work with so far: /* * ========================================================================== * * Copyright (C) 2011 Drew Meyer (drew@sub-version.net) * Licensed for personal non-commercial use only. * All other rights reserved. * * ========================================================================== */ ///////////////////////////////////////////////////////////////////////////// // Include files ///////////////////////////////////////////////////////////////////////////// #include <mios32.h> #include "app.h" #include "mbltrigger.h" #include "mblblm.h" #include <blm_scalar.h> #include <FreeRTOS.h> #include <task.h> #include <queue.h> ///////////////////////////////////////////////////////////////////////////// // Local definitions ///////////////////////////////////////////////////////////////////////////// #define PRIORITY_TASK_BLM_CHECK ( tskIDLE_PRIORITY + 2 ) ///////////////////////////////////////////////////////////////////////////// // Prototypes ///////////////////////////////////////////////////////////////////////////// static void TASK_BLM_Check(void *pvParameters); ///////////////////////////////////////////////////////////////////////////// // Local Variables ///////////////////////////////////////////////////////////////////////////// u32 current_led = 33; u8 current_color = 0; u8 current_column = 0; u8 current_row = 0; u8 current_mask = 0; ///////////////////////////////////////////////////////////////////////////// // This hook is called after startup to initialize the application ///////////////////////////////////////////////////////////////////////////// void APP_Init(void) { // initialize all LEDs MIOS32_BOARD_LED_Init(0xffffffff); // initialize BLM_SCALAR driver BLM_SCALAR_Init(0); // start BLM check task xTaskCreate(TASK_BLM_Check, (signed portCHAR *)"BLM_Check", configMINIMAL_STACK_SIZE, NULL, PRIORITY_TASK_BLM_CHECK, NULL); } ///////////////////////////////////////////////////////////////////////////// // This task is running endless in background ///////////////////////////////////////////////////////////////////////////// void APP_Background(void) { } ///////////////////////////////////////////////////////////////////////////// // This hook is called when a MIDI package has been received ///////////////////////////////////////////////////////////////////////////// void APP_MIDI_NotifyPackage(mios32_midi_port_t port, mios32_midi_package_t midi_package) { // control the Duo-LEDs via Note On/Off Events // The colour is controlled with velocity value: // 0x00: both LEDs off // 0x01..0x3f: green LED on // 0x40..0x5f: red LED on // 0x60..0x7f: both LEDs on // MIDI event assignments: see README.txt MIOS32_BOARD_LED_Init(0xffffffff); if( midi_package.event == NoteOff || midi_package.event == NoteOn ) { u8 chn = midi_package.chn; u8 note = midi_package.note; u8 velocity = midi_package.velocity; //DEBUG_MSG("note: %d", midi_package.note); if( midi_package.event == NoteOff || velocity == 0x00 ) { // Note Off or velocity == 0x00: clear both LEDs blm_scalar_led[current_column][current_row][0] &= ~current_mask; blm_scalar_led[current_column][current_row][1] &= ~current_mask; } else if( velocity < 0x40 ) { // Velocity < 0x40: set green LED, clear red LED blm_scalar_led[current_column][current_row][0] |= current_mask; blm_scalar_led[current_column][current_row][1] &= ~current_mask; //DEBUG_MSG("green - column: %d row: %d mask: %d", current_column, current_row, current_mask); } else if( velocity < 0x60 ) { // Velocity < 0x60: clear green LED, set red LED blm_scalar_led[current_column][current_row][0] &= ~current_mask; blm_scalar_led[current_column][current_row][1] |= current_mask; // DEBUG_MSG("red - column: %d row: %d mask: %d", current_column, current_row, current_mask); } else { // Velocity >= 0x60: set both LEDs blm_scalar_led[current_column][current_row][0] |= current_mask; blm_scalar_led[current_column][current_row][1] |= current_mask; // DEBUG_MSG("both - column: %d row: %d mask: %d", current_column, current_row, current_mask); } } else if( midi_package.event == CC ) { switch (midi_package.cc_number) { case 60: { current_column = midi_package.value; break; } case 61: { current_row = midi_package.value; break; } default: { break; } } } DEBUG_MSG("column: %d row: %d mask: %d", current_column, current_row, current_mask); } ///////////////////////////////////////////////////////////////////////////// // This hook is called before the shift register chain is scanned ///////////////////////////////////////////////////////////////////////////// void APP_SRIO_ServicePrepare(void) { // prepare DOUT registers to drive the column BLM_SCALAR_PrepareCol(); } ///////////////////////////////////////////////////////////////////////////// // This hook is called after the shift register chain has been scanned ///////////////////////////////////////////////////////////////////////////// void APP_SRIO_ServiceFinish(void) { // call the BLM_GetRow function after scan is finished to capture the read DIN values BLM_SCALAR_GetRow(); } ///////////////////////////////////////////////////////////////////////////// // This hook is called when a button has been toggled // pin_value is 1 when button released, and 0 when button pressed ///////////////////////////////////////////////////////////////////////////// void APP_DIN_NotifyToggle(u32 pin, u32 pin_value) { DEBUG_MSG("pin: %d pin_value: %d", pin, pin_value); } ///////////////////////////////////////////////////////////////////////////// // This hook is called when an encoder has been moved // incrementer is positive when encoder has been turned clockwise, else // it is negative ///////////////////////////////////////////////////////////////////////////// void APP_ENC_NotifyChange(u32 encoder, s32 incrementer) { } ///////////////////////////////////////////////////////////////////////////// // This hook is called when a pot has been moved ///////////////////////////////////////////////////////////////////////////// void APP_AIN_NotifyChange(u32 pin, u32 pin_value) { } ///////////////////////////////////////////////////////////////////////////// // This task is called each mS to check the BLM button states ///////////////////////////////////////////////////////////////////////////// // will be called on BLM pin changes (see TASK_BLM_Check) void DIN_BLM_NotifyToggle(u32 pin, u32 pin_value) { // determine row and column (depends on the way how the matrix has been connected) //DEBUG_MSG("pin: %d value: %d", pin, pin_value); u8 blm_row = pin >> 3; u8 blm_column = pin & 7; u8 row = (blm_row >> 1); u8 column = blm_column | ((blm_row&1) << 3); u8 velocity = pin_value ? 0x00 : 0x7f; u8 button = MBLIVE_BLM_GetButton(row, column); //MBLIVE_BLM_SetLed(S0T3, RED); //DEBUG_MSG("button: %d", button); } static void TASK_BLM_Check(void *pvParameters) { portTickType xLastExecutionTime; // Initialise the xLastExecutionTime variable on task entry xLastExecutionTime = xTaskGetTickCount(); while( 1 ) { vTaskDelayUntil(&xLastExecutionTime, 1 / portTICK_RATE_MS); // check for BLM pin changes, call DIN_BLM_NotifyToggle on each toggled pin BLM_SCALAR_ButtonHandler(DIN_BLM_NotifyToggle); // send layout informations each 5 seconds if BLM hasn't been updated } }
×
×
  • Create New...