Jump to content

MIDIbox CV V2 Concept


TK.

Recommended Posts

Is there a place in the US, or somewhere else with an easier to use website, to get the LCD's that TK uses? The website that the LCD link points to is really hard to decipher... Or maybe there is an "english" button on the site?

 

Cheers,
Alex

Link to comment
Share on other sites

Is there a place in the US, or somewhere else with an easier to use website, to get the LCD's that TK uses? The website that the LCD link points to is really hard to decipher... Or maybe there is an "english" button on the site?

 

Cheers,

Alex

 

Do you mean the OLEDs? If so:

 

- I just ordered 4 Alientek-brand from yoybuy (as did TK): http://www.yoybuy.com/en/show/20416112533/

 

These are the ones that are blue with a yellow stripe. I'll report on them after I get them.

 

- Here are the ones that are only one solid colour:

 

http://www.yoybuy.com/en/show/36351684749/

 

 

EDIT: Yoybuy is a bit weird because your orders go from the suppliers to Yoybuy. Then when Yoybuy receives the parts and you're ready, you confirm that they'll ship it to you.

 

 

eBay might be a preferable option. This OLED should be compatible:

 

http://www.ebay.com/itm/0-96-I2C-IIC-SPI-128X64-OLED-LCDDisplay-Module-for-Arduino-PIC-AVR-STM32-Y-B-/201008983348?pt=LH_DefaultDomain_0&hash=item2ecd11ad34

http://www.ebay.com/itm/0-96-I2C-IIC-SPI-128X64-OLED-LCDDisplay-Module-for-Arduino-PIC-AVR-STM32-Blue-/201008998979?pt=LH_DefaultDomain_0&hash=item2ecd11ea43

Edited by sneakthief
Link to comment
Share on other sites

I'm assuming most people would prefer to have the jacks in an accessible place, meaning you could mount the CV/gate jacks in a Eurorack panel and power it with a modular's +/-12V. Or in a little box like TK does.

 

What about using a 15-pin VGA D-SUB connector between the CS and the outputs? It has 15 pins plus shield:

 

- 8 pins for gate

- 1 pin for clock

- 1 pin for start/stop

- 5 pins for AOUT (Vs, Vd, CS, S1, SC)

- 1 pin for the shielding ground

 

Someone would of course have to test this first to make sure there isn't too much interference from the digital signals. Maybe a 1m cable VGA would suffice?

 

To conclude, the Eurorack panel would have a 15-pin VGA D-SUB connector, 8 CV out jacks, 8 gate out jacks, 1 clock jack, 1 start-stop jack.

You could optionally add 8 buffered LED's for the gates.

 

Let's just think about this a bit more: 

 

8 gates, but up to 64 with DOUT/DIO_MATRIX.

DIN SYNC is 1 start/stop but up to 7 clock divisions/multiples.

 

AOUT is really 6 signals (Vs, Vd, SO(SI), SC, RC1 and RC2) but Vs is common to the Core and doesn't need a separate ground.

 

1 sync input to control the master clock/ forwarded to the additional clock outs.

 

 

 

What about analogue inputs? These would be pretty cool to interface from a modular system back to the Core. Diode clamps to protect the input pins?

 

We're getting into quite a few signal lines now, too many for a DB-15!

 

But for a basic usecase:

8 gates

5 AOUT

1 clock start

7 clock out

1 sync in

8 AIN

1 signal ground

 

31 pins ---> DB-36/Centronics?

 

With only one clock out you'd be back to DB-25.

 

 

 

 

 

 
 
Edited by latigid on
Link to comment
Share on other sites

AOUT is really 6 signals (Vs, Vd, SO(SI), SC, RC1 and RC2) but Vs is common to the Core and doesn't need a separate ground.

 

Only Vs/Vd/SO/SC/RC1 (not RC2)

 

 

1 sync input to control the master clock/ forwarded to the additional clock outs.

 

yes!

The sync input will be located at a dedicated IO pin of the core.

I will probably take the CAN IO at J18, because it's available for all core variants, and I'm sure that CAN won't be used for the MBCV application.

 

 

What about analogue inputs? These would be pretty cool to interface from a modular system back to the Core. Diode clamps to protect the input pins?

 

Yes, the 8 analog inputs will be available in the modulation matrix.

Note that LPC17 will only provide 6 analog inputs, because J5B.A6 and A7 are allocated by MIDI3 IOs

 

Protection diodes: yes!

+ 220 ohm resistor in serial to the input for short circuit protection.

 

 

5 AOUT

 

Transfering the serial signals to an external breakout board is problematic, because actually the cable to an AOUT module shouldn't be longer than 30 cm!

We have to do some experiments with line drivers and receivers, see also the bottom of this posting: 

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Transfering the serial signals to an external breakout board is problematic, because actually the cable to an AOUT module shouldn't be longer than 30 cm!

We have to do some experiments with line drivers and receivers, see also the bottom of this posting: 

 

Best Regards, Thorsten.

 

 

Even when that signal is buffered? JBdiver reports successful signal transfer to his breakout module using only the 541 buffer of LPC17

 
Link to comment
Share on other sites

This results into the same problem like for the AOUT module, because also DINs/DOUTs are scanned with superfast SPI.

+ the big problem that the connections to LCD (and OLEDs) should be short as well (<= 30 cm)

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Hi,i ve just bought lemur app,where can i load the midibox cv 2 file for it?i read in the package,but where, Thanks

I tried to download it from svn website. But that doesn't seem possible. I get the error:

Unable to open file: MIDIbox_CV_V2.jzml.r1887

 

But you can copy and paste it from here to a file called MIDIbox_CV_V2.jzml

Link to comment
Share on other sites

You will find it in a package (.zip file) once I make the first release of the application.

 

Meanwhile just copy&paste the content (as described by Shuriken), or checkout the SVN repository (svn://svnmios.midibox.org/mios32) with a SVN client.

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Just installed my STM32F4xx toolchain, downloaded the current SVN.

 

Upon trying to compile the MIDIbox CV 2 source, I get these warnings - but everything successfully compiled:

 

 

C:\mios32\trunk\apps\processing\midibox_cv_v2>make
rm -f project.hex
Creating object file for tasks.c
Creating object file for mbcv_hwcfg.c
Creating object file for CapChargeCurve.c
Creating object file for main.c
Creating object file for strtol.c
Creating object file for tasks.c
Creating object file for list.c
Creating object file for queue.c
Creating object file for timers.c
Creating object file for port.c
Creating object file for umm_malloc.c
Creating object file for startup_stm32f4xx.c
Creating object file for mios32_srio.c
Creating object file for mios32_din.c
Creating object file for mios32_dout.c
Creating object file for mios32_enc.c
Creating object file for mios32_lcd.c
Creating object file for mios32_midi.c
Creating object file for mios32_osc.c
Creating object file for mios32_com.c
Creating object file for mios32_uart_midi.c
Creating object file for mios32_spi_midi.c
Creating object file for mios32_iic_midi.c
Creating object file for mios32_iic_bs.c
Creating object file for mios32_mf.c
Creating object file for mios32_sdcard.c
Creating object file for mios32_enc28j60.c
Creating object file for mios32_timestamp.c
Creating object file for mios32_bsl.c
Creating object file for mios32_sys.c
Creating object file for mios32_irq.c
Creating object file for mios32_spi.c
Creating object file for mios32_i2s.c
Creating object file for mios32_board.c
Creating object file for mios32_timer.c
Creating object file for mios32_stopwatch.c
Creating object file for mios32_delay.c
Creating object file for mios32_ain.c
Creating object file for mios32_usb.c
Creating object file for mios32_usb_midi.c
Creating object file for mios32_usb_com.c
Creating object file for mios32_uart.c
Creating object file for mios32_iic.c
Creating object file for printf-stdarg.c
Creating object file for misc.c
Creating object file for stm32f4xx_adc.c
Creating object file for stm32f4xx_can.c
Creating object file for stm32f4xx_crc.c
Creating object file for stm32f4xx_cryp.c
Creating object file for stm32f4xx_cryp_aes.c
Creating object file for stm32f4xx_cryp_des.c
Creating object file for stm32f4xx_cryp_tdes.c
Creating object file for stm32f4xx_dac.c
Creating object file for stm32f4xx_dbgmcu.c
Creating object file for stm32f4xx_dcmi.c
Creating object file for stm32f4xx_dma.c
Creating object file for stm32f4xx_exti.c
Creating object file for stm32f4xx_flash.c
Creating object file for stm32f4xx_fsmc.c
Creating object file for stm32f4xx_gpio.c
Creating object file for stm32f4xx_hash.c
Creating object file for stm32f4xx_hash_md5.c
Creating object file for stm32f4xx_hash_sha1.c
Creating object file for stm32f4xx_i2c.c
Creating object file for stm32f4xx_iwdg.c
Creating object file for stm32f4xx_pwr.c
Creating object file for stm32f4xx_rcc.c
Creating object file for stm32f4xx_rng.c
Creating object file for stm32f4xx_rtc.c
Creating object file for stm32f4xx_sdio.c
Creating object file for stm32f4xx_spi.c
Creating object file for stm32f4xx_syscfg.c
Creating object file for stm32f4xx_tim.c
Creating object file for stm32f4xx_usart.c
Creating object file for stm32f4xx_wwdg.c
Creating object file for usbd_core.c
Creating object file for usbd_ioreq.c
Creating object file for usbd_req.c
Creating object file for usb_core.c
Creating object file for usb_dcd.c
Creating object file for usb_dcd_int.c
Creating object file for app_lcd.c
Creating object file for glcd_font_normal.c
Creating object file for glcd_font_normal_inv.c
Creating object file for glcd_font_big.c
Creating object file for glcd_font_small.c
Creating object file for glcd_font_tiny.c
Creating object file for glcd_font_knob_icons.c
Creating object file for glcd_font_meter_icons_h.c
Creating object file for glcd_font_meter_icons_v.c
Creating object file for midi_router.c
Creating object file for midi_port.c
Creating object file for midimon.c
Creating object file for uip.c
Creating object file for uip_arp.c
Creating object file for uiplib.c
Creating object file for psock.c
c:/mios32/trunk/modules/uip/uip/psock.c: In function 'psock_send':
c:/mios32/trunk/modules/uip/uip/psock.c:179:3: warning: variable 'PT_YIELD_FLAG' set but not used [-Wunused-but-set-variable]
c:/mios32/trunk/modules/uip/uip/psock.c: In function 'psock_generator_send':
c:/mios32/trunk/modules/uip/uip/psock.c:218:3: warning: variable 'PT_YIELD_FLAG' set but not used [-Wunused-but-set-variable]
c:/mios32/trunk/modules/uip/uip/psock.c: In function 'psock_readto':
c:/mios32/trunk/modules/uip/uip/psock.c:274:3: warning: variable 'PT_YIELD_FLAG' set but not used [-Wunused-but-set-variable]
c:/mios32/trunk/modules/uip/uip/psock.c: In function 'psock_readbuf':
c:/mios32/trunk/modules/uip/uip/psock.c:301:3: warning: variable 'PT_YIELD_FLAG' set but not used [-Wunused-but-set-variable]
Creating object file for timer.c
Creating object file for uip-neighbor.c
Creating object file for memb.c
Creating object file for clock-arch.c
Creating object file for network-device.c
Creating object file for uip_task.c
Creating object file for dhcpc.c
Creating object file for osc_server.c
Creating object file for osc_client.c
Creating object file for uip_terminal.c
Creating object file for diskio.c
Creating object file for ccsbcs.c
Creating object file for ff.c
Creating object file for file.c
Creating object file for jsw_rand.c
Creating object file for aout.c
Creating object file for notestack.c
Creating object file for msd.c
Creating object file for scs.c
Creating object file for scs_lcd.c
Creating object file for app.cpp
src/app.cpp: In function 'void APP_Init()':
src/app.cpp:131:9: warning: unused variable 'i' [-Wunused-variable]
src/app.cpp:231:47: warning: invalid conversion from 'void (*)()' to 'void*' [-f permissive]
In file included from c:/mios32/trunk/include/mios32/mios32.h:75:0,
                 from src/app.cpp:18:
c:/mios32/trunk/include/mios32/mios32_srio.h:87:12: warning:   initializing argument 1 of 's32 MIOS32_SRIO_ScanStart(void*)' [-fpermissive]
src/app.cpp: In function 'void APP_SRIO_ServiceFinish()':
src/app.cpp:330:47: warning: invalid conversion from 'void (*)()' to 'void*' [-f permissive]
In file included from c:/mios32/trunk/include/mios32/mios32.h:75:0,
                 from src/app.cpp:18:
c:/mios32/trunk/include/mios32/mios32_srio.h:87:12: warning:   initializing argument 1 of 's32 MIOS32_SRIO_ScanStart(void*)' [-fpermissive]
Creating object file for scs_config.cpp
Creating object file for mbcv_patch.cpp
Creating object file for mbcv_map.cpp
Creating object file for mbcv_lre.cpp
Creating object file for mbcv_button.cpp
Creating object file for mbcv_file.cpp
Creating object file for mbcv_file_hw.cpp
Creating object file for mbcv_file_b.cpp
Creating object file for mbcv_file_p.cpp
Creating object file for mbcv_sysex.cpp
src/mbcv_sysex.cpp: In function 's32 MBCV_SYSEX_Send(mios32_midi_port_t, u8)':
src/mbcv_sysex.cpp:155:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
src/mbcv_sysex.cpp: In function 's32 MBCV_SYSEX_SendAck(mios32_midi_port_t, u8,u8)':
src/mbcv_sysex.cpp:202:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
Creating object file for terminal.cpp
src/terminal.cpp: In function 's32 TERMINAL_Parse(mios32_midi_port_t, char)':
src/terminal.cpp:145:65: warning: invalid conversion from 's32 (*)(char*, ...) {aka long int (*)(char*, ...)}' to 'void*' [-fpermissive]
In file included from src/terminal.cpp:32:0:
src/terminal.h:34:12: warning:   initializing argument 2 of 's32 TERMINAL_ParseLine(char*, void*)' [-fpermissive]
src/terminal.cpp: In function 's32 TERMINAL_ParseLine(char*, void*)':
src/terminal.cpp:241:36: warning: invalid conversion from 'void*' to 'void (*)(char*, ...)' [-fpermissive]
src/terminal.cpp:291:35: warning: invalid conversion from 'void (*)(char*, ...)' to 'void*' [-fpermissive]
In file included from src/terminal.cpp:32:0:
src/terminal.h:36:12: warning:   initializing argument 1 of 's32 TERMINAL_PrintMemoryInfo(void*)' [-fpermissive]
src/terminal.cpp:293:35: warning: invalid conversion from 'void (*)(char*, ...)' to 'void*' [-fpermissive]
In file included from src/terminal.cpp:32:0:
src/terminal.h:37:12: warning:   initializing argument 1 of 's32 TERMINAL_PrintSdCardInfo(void*)' [-fpermissive]
src/terminal.cpp:378:29: warning: invalid conversion from 'void (*)(char*, ...)' to 'void*' [-fpermissive]
In file included from src/terminal.cpp:32:0:
src/terminal.h:38:12: warning:   initializing argument 1 of 's32 TERMINAL_ShowNrpns(void*)' [-fpermissive]
src/terminal.cpp: In function 's32 TERMINAL_PrintSystem(void*)':
src/terminal.cpp:445:36: warning: invalid conversion from 'void*' to 'void (*)(char*, ...)' [-fpermissive]
src/terminal.cpp:449:34: warning: invalid conversion from 'void (*)(char*, ...)' to 'void*' [-fpermissive]
In file included from src/terminal.cpp:24:0:
c:/mios32/trunk/modules/midimon/midimon.h:51:12: warning:   initializing argument 1 of 's32 MIDIMON_TerminalPrintConfig(void*)' [-fpermissive]
src/terminal.cpp:451:31: warning: invalid conversion from 'void (*)(char*, ...)' to 'void*' [-fpermissive]
In file included from src/terminal.cpp:25:0:
c:/mios32/trunk/modules/aout/aout.h:145:12: warning:   initializing argument 1 of 's32 AOUT_TerminalPrintConfig(void*)' [-fpermissive]
src/terminal.cpp: In function 's32 TERMINAL_PrintSdCardInfo(void*)':
src/terminal.cpp:523:36: warning: invalid conversion from 'void*' to 'void (*)(char*, ...)' [-fpermissive]
src/terminal.cpp: In function 's32 TERMINAL_ShowNrpns(void*)':
src/terminal.cpp:622:36: warning: invalid conversion from 'void*' to 'void (*)(char*, ...)' [-fpermissive]
Creating object file for MbCvEnvironment.cpp
Creating object file for MbCv.cpp
Creating object file for MbCvPatch.cpp
Creating object file for MbCvRandomGen.cpp
Creating object file for MbCvClock.cpp
Creating object file for MbCvLfo.cpp
Creating object file for MbCvEnvBase.cpp
Creating object file for MbCvEnv.cpp
Creating object file for MbCvEnvMulti.cpp
Creating object file for MbCvArp.cpp
Creating object file for MbCvMod.cpp
Creating object file for MbCvVoice.cpp
Creating object file for MbCvVoiceQueue.cpp
Creating object file for MbCvMidiVoice.cpp
Creating object file for MbCvSeq.cpp
Creating object file for MbCvSeqBassline.cpp
Creating object file for MbCvTables.cpp
Creating object file for MbCvScope.cpp
Creating object file for mini_cpp.cpp
Creating object file for freertos_heap.cpp

-------------------------------------------------------------------------------
Application successfully built for:
Processor: STM32F407
Family:    STM32F4xx
Board:     MBHP_CORE_STM32F4
LCD:       universal
-------------------------------------------------------------------------------
arm-none-eabi-size project_build/project.elf
   text    data     bss     dec     hex filename
 204964   66424   48016  319404   4dfac project_build/project.elf
20000000 D __ram_start
2000bca8 B __ram_end


Link to comment
Share on other sites

The warnings can be ignored, the app is ready for upload :)

 

Sidenote: I got the differential line drivers two days ago, and will test them with the AOUT_NG (for CV out) and DOUT (for gates/triggers/switches) modules next weekend.

 

Best Regards, Thorsten.

Link to comment
Share on other sites

The STM32F4 version of the MIDIbox CV 2 uploaded successfully and MIOS is happy:

 

Operating System: MIOS32
Board: MBHP_CORE_STM32F4
Core Family: STM32F4xx
Chip ID: 0x10016413
Serial: #32002C000147333139303639
Flash Memory Size: 1048576 bytes
RAM Size: 196608 bytes
MIDIboxCV V2.000
© 2014 T.Klose

 

Also, for the MIOS32 toolchain ( http://www.midibox.org/dokuwiki/doku.php?id=windows_mios32_toolchain_core ), I modified the ENV variables to correspond to the STM32F4:

 

set MIOS32_GCC_PREFIX=arm-none-eabi
set MIOS32_FAMILY=STM32F4xx
set MIOS32_PROCESSOR=STM32F407VG
set MIOS32_BOARD=MBHP_CORE_STM32F4
set MIOS32_LCD=universal

 

Should I post this update here? http://midibox.org/forums/forum/13-midibox-documentation-project/

Edited by sneakthief
Link to comment
Share on other sites

For anyone who's interested in having the MIDIbox CV 2 do any CV-input processing, there are a few things to consider...

 

 

The processing rate will likely be in the 1-2KHz range. Not really great for audio but perfectly acceptable for a wide range of other kinds of control-voltage signals, eg. note quantizing. The quantizing hasn't been added yet but it's in the to-do list.

 

 

If you're using the LPC17 core and the AINSER8/AINSER64 board, you'll need to limit the input voltage to 5V.

 

I recommend putting a 100KB pot or trimmer in front of the circuit linked below.

 

The CCW pin should be connected to ground, the CW pin to the voltage input and the middle pin goes to the 10K Ohm resistor on this circuit:

 

http://www.eevblog.com/forum/projects/pic-input-protection-using-a-zener-diode/msg21840/?PHPSESSID=33bbdf2e2a88957db87cce882680f1ca#msg21840

 

To calibrate it as a 2:1 voltage divider, send the 100KB pot/trimmer a 10V signal and adjust it until the output is 5V.

 

(corrected  - the LPC17 board can't use the AINSER board either)

 

 

 

*** PLEASE NOTE: you'll need to limit the input voltage to 3.3V ***

 

 

To do so, you'll need to build this circuit which limits the input to about -0.2V to 3.3V, regardless of the input (within reason, of course)

 

That means you can send the analog inputs -10 to +10V and it will scale that voltage by 1/3, reject all negative voltages.

 

Therefore, 0-10V will give a result of 0 to 3.3V.

 

 

Circuit description:

 

1. I recommend putting a 100KB pot or trimmer in front of the circuit linked below.

 

The CCW pin should be connected to ground, the CW pin to the voltage input and the middle pin goes to the 10K Ohm resistor on this circuit:

 

http://www.eevblog.com/forum/projects/pic-input-protection-using-a-zener-diode/msg21840/?PHPSESSID=33bbdf2e2a88957db87cce882680f1ca#msg21840

 

*** Instead of connecting 5V to the diodes, used 3.3V ***

 

2. To calibrate it as a 3:1 voltage divider, send the 100KB pot/trimmer a 10V signal and adjust it until the output is 3.3V.

 

 

 

3. Analog Core inputs:

 

- If you're using the STM32F4 core, you can use up to 8 ADC inputs on the board itself (J5A & J5B).

 

- If you're using the LPC17 core, you can use up to 6 ADC inputs on the board itself (at J5A and B but NOT J5B.A6 and A7 as they're used for MIDI3).

Edited by sneakthief
Link to comment
Share on other sites

The AINSER8 or 64 board will neither be supported by LPC17, nor STM32F4 since it conflicts with the AOUT module at J19 which will be accessed by a fast timer interrupt.

 

Therefore:

LPC17: up to 6 analog inputs at J5A and B (J5B.A6 and A7 are used for MIDI3)

STM32F4: up to 8 analog inputs at J5A and B

 

Best Regards, Thorsten.

Link to comment
Share on other sites

The AINSER8 or 64 board will neither be supported by LPC17, nor STM32F4 since it conflicts with the AOUT module at J19 which will be accessed by a fast timer interrupt.

 

That's also news for me, maybe the respective web pages at ucapps.de describing the AINSER8 and 64 modules could be updated as well? Currently, the AINSER64 page as well as the AINSER8 page still say:

 

Accuracy: if directly powered from the MBHP_CORE_LPC17 module, values are jittering by ca. +/-1..2 LSBs (for comparison: the on-chip ADCs of STM32 and LPC17 are jittering by at least +/- 16).

 

 

Link to comment
Share on other sites

This conflict only exists for the MIDIbox CV V2 application which accesses the AOUT module from an interrupt service routine, and not from a task where Mutex based synchronisation would be possible.

 

If the application would access the AINSER module as well, it would need to do this from the ISR, and this dramatically reduces the CV update rate.

I guess that everybody prefers high update rates instead of the possibility to connect analog inputs to an AINSER module.

 

The good news are, that the analog inputs of STM32F4 are more stable than the ones of STM32F1 and LPC17. Again +1 for using a MBHP_CORE_STM32F4 module!

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...