Antichambre

Programmer
  • Content count

    1,050
  • Joined

  • Last visited

Community Reputation

158 Excellent

6 Followers

About Antichambre

  • Rank
    MIDIbox Guru
  • Birthday July 25

Profile Information

  • Gender Male
  • Interests Create.

Recent Profile Visitors

3,336 profile views
  1. C3 with diff vel. 2 diff. notes

    Events are read from midi file and scheduled by the seq_bpm(sequencer module) thru the seq.c file, sent to seq_midi_out(still sequencer module) and played from it. You can modify the private hook which is installed by SEQ_MIDI_OUT_Callback_MIDI_SendPackage_Set and called by the scheduler. This hook: ///////////////////////////////////////////////////////////////////////////// // this hook is called when the MIDI scheduler sends a package ///////////////////////////////////////////////////////////////////////////// static s32 Hook_MIDI_SendPackage(mios32_midi_port_t port, mios32_midi_package_t package) { // realtime events are already scheduled by MIDI_ROUTER_SendMIDIClockEvent() if( package.evnt0 >= 0xf8 ) { MIOS32_MIDI_SendPackage(port, package); } else { // forward to MIDIO if( seq_play_enable_dout ) MIDIO_DOUT_MIDI_NotifyPackage(port, package); // forward to enabled MIDI ports int i; u16 mask = 1; for(i=0; i<16; ++i, mask <<= 1) { if( seq_play_enabled_ports & mask ) { // USB0/1/2/3, UART0/1/2/3, IIC0/1/2/3, OSC0/1/2/3 mios32_midi_port_t port = USB0 + ((i&0xc) << 2) + (i&3); MIOS32_MIDI_SendPackage(port, package); } } } return 0; // no error } But it seems this app was prepared for that purpose, have a look to the lines especially: // forward to MIDIO if( seq_play_enable_dout ) MIDIO_DOUT_MIDI_NotifyPackage(port, package);  
  2. You're welcome! Have fun ;)
  3. Still page 14 -> "Note the special syntax to enter the MIOS32_PATH. The value “/c/mios32/trunk” means “c:\mios32\trunk” for Eclipse. "
  4. Hi, Check or add the correct path in environment: Page 14 in the pdf Best Bruno
  5. Sammich kits on eBay -- legit or bootleg?

    Copy! circuits are also not exactly the same ;) funny!
  6. Effect pedal, MIDI on a Jack.[SOLVED]

    Meris TRS is RX, TX + Ground. MIDI in input is RX + 5V. 5V is missing ;) But ok this is something you can try, at your own risk, I never tried it in this way... it should be the inverse of this one which is to connect a Meris pedal.    
  7. Effect pedal, MIDI on a Jack.[SOLVED]

    Hi, In your case, best is to keep the Meris I/O for the Meris Pedal only.  Meris I/O, Timeline and ventris should be connected directly to the MC6, using a MIDI thu box. Best regards Bruno
  8. Mackie HUI Schematics

    Hi, Service Manual schematic #1 schematic #2 Transformer is a 0-24-48V and can be found here: http://www.loudtechnologies.eu/shop/en/mackie-mcu-midi-controllers/hui/600-032-01/a-4082-10000210   Best regards Bruno
  9. midiphy Eurorack Expander Modules

    I noticed that isolating the earth on the PC / Mac power supply can sometimes help. Bruno
  10. The HAARP, an Hardware Advanced Arpeggiator.

    The manufacturing was delayed cause they gave me a wrong bank account number, money was lost in the financial circuits during 6 weeks. But good news money is back on my account this morning!!! :) The project resumes...
  11. MIDI over Bluetooth with ESP32

    Or prepare the ESP32 as a SPI-MIDI slave like a kissbox?
  12. understanding the .ngc code

    This has to be done in the bootloader not in the app. upload the right hex file from http://ucapps.de/mios32/mios32_bootloader_v1_018.zip then set your lcd_type then re-upload your app. Have fun ! Bruno  
  13. Merry Christmas and Happy New Year to all !!!    
  14. More AINSER Problems

    I'm surprised cause I did it for the HAARP and use a 4 channel ADC to reduce the cost. But I use it on the regular J19. Channels are reversed like you. I don't use the AINSER64 module and add/rewrite a simplified/dedicated copy in the app folder. I made some changes to reduce the scanning and make it faster. The CS uses only 16 inputs, the 16 others are for a future extension like CV in. And it works for me. s32 ARP_AIN_POT_Handler(void (*_callback)(u32 pot, u32 value)) { // the mux_ctr -> pin mappin is layout dependend const u8 mux_pin_map[8] = {0, 1, 2, 3, 4, 5, 6, 7}; static u8 mux_ctr = 0; // will be incremented on each update to select the next AIN pin static u8 first_scan_done = 0; static u16 link_status_ctr = 0; s32 status = 0; // init SPI port for fast frequency access // we will do this here, so that other handlers (e.g. AOUT) could use SPI in different modes // Maxmimum allowed SCLK is 2 MHz according to datasheet // We select prescaler 64 @120 MHz (-> ca. 500 nS period) status |= MIOS32_SPI_TransferModeInit(ARP_AIN_SPI, MIOS32_SPI_MODE_CLK0_PHASE0, MIOS32_SPI_PRESCALER_64); // determine next MUX selection int next_mux_ctr = (mux_ctr + 1) % 8; // loop over channels int chn; for(chn=0; chn<2; ++chn) { // CS=0 status |= MIOS32_SPI_RC_PinSet(ARP_AIN_SPI, ARP_AIN_SPI_RC_PIN, 0); // retrieve conversion values // shift in start bit + SGL + MSB of channel selection, shift out dummy byte MIOS32_SPI_TransferByte(ARP_AIN_SPI, 0x06 | (chn>>2)); // shift in remaining 2 bits of channel selection, shift out MSBs of conversion value u8 b1 = MIOS32_SPI_TransferByte(ARP_AIN_SPI, chn << 6); // shift in mux_ctr + "Link LED" status to 74HC595, shift out LSBs of conversion value //u8 b2 = MIOS32_SPI_TransferByte(ARP_AIN_SPI, ((chn == (ARP_AIN_NUM_CHANNELS-1) ? next_mux_ctr : mux_ctr) << 5) | link_status); u8 b2 = MIOS32_SPI_TransferByte(ARP_AIN_SPI, (chn == 1 ? next_mux_ctr : mux_ctr) << 5); // CS=1 (the rising edge will update the 74HC595) MIOS32_SPI_RC_PinSet(ARP_AIN_SPI, ARP_AIN_SPI_RC_PIN, 1); // store conversion value if difference to old value is outside the deadband u16 pot = mux_pin_map[mux_ctr] + 8*chn; // the mux/chn -> pin mapping is layout dependend u16 value = (b2 | (b1 << 8)) & 0xfff; previous_arp_ain_pot_values = arp_ain_pot_values[pot]; int diff = value - previous_arp_ain_pot_values; int abs_diff = (diff > 0 ) ? diff : -diff; if( !first_scan_done || abs_diff > ARP_AIN_POT_DEADBAND ) { arp_ain_pot_values[pot] = value; // notify callback function // check pin number as well... just to ensure if( first_scan_done && _callback && pot < 16 ) _callback(pot, value); } } // select MUX input mux_ctr = next_mux_ctr; // one complete scan done? if( next_mux_ctr == 0 ) first_scan_done = 1; return 0; // no error } For your layout: You can change the MUXes mapping here: // the mux_ctr -> pin mappin is layout dependend //const u8 mux_pin_map[8] = {0, 1, 2, 3, 4, 5, 6, 7 }; //const u8 mux_pin_map[8] = {1, 4, 3, 5, 2, 7, 0, 6 }; // reversed pins const u8 mux_pin_map[8] = {6, 3, 4, 2, 5, 0, 7, 1 }; // order of MUX channels You can reduce the channels: for(chn=0; chn<3; ++chn) { u8 b2 = MIOS32_SPI_TransferByte(AINSER_SPI, ((chn == 2 ? next_mux_ctr : mux_ctr) << 5) | link_status); And limits the number of inputs by security:   if( first_scan_done && _callback && pin < 24 )  
  15. More AINSER Problems

    Ahah! Clever!