Jump to content

MidiBox64 driven synthesizer & sequencer.


Gioxannes
 Share

Recommended Posts

More progress, still no pictures  :(

Today uploaded MIOS and the midibox application to the core module (the PIC was already programmed with the bootloader by Mike, thanks Mike). An overview of the pitfalls.

1. My 5V stabilized power leaves only 2.74V after the rectifier and the 7805 (that I already expected). So I took out the rectifier and the 7805 and bridged the outer two pin-holes of the 7805. The elco and other caps I left in as additional stabilization.

2. MiosStudio found the bootstrap every two seconds, but failed to upload (unexpected bootstrap received). So I checked everything around the MIDI-in especially around the octocoupler. A tiny drop of tin had bridged two of the octocoupler pins, which I had to remove.

Upload of the MIOS (v1_9f) went fine after this.

I had to choose an application. The midibox64 can not handle encoders. The midibox 64e did not show any link to pots. And I have both! I had a short look at the Midibox16e, but was advised that this project is no longer supported.

Then I discovered something VERY importent. AFTER an application upload, you still have to upload a settings file (ini/sys). This is not shown in the application development page. The settings in this file override the default application settings, like number of encoders and number of pots. The midibox 64e can handle both, so I had to upload this application.

Uploading of the Midibox64e file went without problems. And the core started giving me lots of midi events since nothing else was connected. Hurray! Another milestone achieved.  :D

There is another confusion in the midibox64e_v2_b2 zip file. It does NOT contain a midibox64e.hex file! Apparantly the midibox64.hex has to be chosen, although I find this confusing.  ???

Link to comment
Share on other sites

Good blogging you got here man, thanks :)

1. My 5V stabilized power leaves only 2.74V after the rectifier and the 7805 (that I already expected). So I took out the rectifier and the 7805 and bridged the outer two pin-holes of the 7805. The elco and other caps I left in as additional stabilization.

As intended:

PIC based Core

J2 2

.....

When used as +5V input: for supplying from J2 of another core module, or from an external stabilized Power Supply Unit (PSU). In both cases the voltage regulator (IC3) should not be connected, also the rest of the voltage stabilization circuit between J1 and J2 (X1, C5, C6) can be left out. If the core module (and all connected modules to this branch) drains more than 100 mA, it's recommented to mount C5 directly to J2 (a small cable between the outer soldering pads of the left-out 7805 will do this).

...

2. MiosStudio found the bootstrap every two seconds, but failed to upload (unexpected bootstrap received). So I checked everything around the MIDI-in especially around the octocoupler. A tiny drop of tin had bridged two of the octocoupler pins, which I had to remove.

Upload of the MIOS (v1_9f) went fine after this.

Good work!

I had to choose an application. The midibox64 can not handle encoders. The midibox 64e did not show any link to pots. And I have both!

You can setup the hardware for pots and encoders in the setup_*.asm file. See quotes from the comments:

;

; Setup File for TK's MIDIbox64

; Explanations to the switches and levers: see setup_midibox16e.asm

;

;

; Although MIDIbox64E has been designed for rotary encoders' date=' it can also handle with

; up to 64 pots/faders or up to 8 motorfaders.

; Pots and faders are mapped to the "encoder" entries 64-128.

; Example: if group width is 16, and group 1 is selected, encoders are using

; entry 1-16, and pots are using entry 64-70

; NOTE: morphing is automatically disabled if analog pots/faders are connected

#define DEFAULT_NUMBER_AIN 0

;

; you could enable the multiplexers here to test this application

; with a MIDIbox64 based hardware

; if 0: no multiplexers (a *must* when MF module connected)

; if 1: use multiplexers

#define DEFAULT_ENABLE_AIN_MUX 0

;

So....

... not really ;) But it doesn't hurt!

Probably overly-specific, but FYI - that's not actually an application, just settings for it. Like:

MIOS - Windows    - Operating System

MB64e - Firefox      - Application

SYX of INI - Bookmarks  - Settings

Sounds familiar.... AUAIMBCTG

Err yeh, fair enough... I'll change the filename on SVN, this will change in the next release to setup_midibox64e.hex. It's possible there is a reason I've overlooked though, so this change might get rolled back...

Link to comment
Share on other sites

Okay, I took the plunge and started writing my own dedicated midi sequencer for this project.

I will start a separate topic for this "Light Weight Midi player/sequencer"

After all, I am more a software than a hardware man.

Remember: This is the sequencer that will go into my synthesizer box. Not the one I am composing with.


Link to comment
Share on other sites

  • 2 weeks later...

More software progress.

There were moment that I was really tempted to put all functionality into the sequencer I am working on (ExCuSe, see also http://www.midibox.org/forum/index.php/topic,13091.0.html). Like just read out which button/pot/encoder creates what event and do all the conversion in the sequencer, like bank changes etc). The advantage would be:

- enormous programming flexibility

- unlimited memory

But this would be totally respectless to the work Thorston did, and I could have well just have bought a parallel TTL IO controller.

Bottle neck was that to be able to switch a track on or off, I need 3 control-change messages on the touch of a button.

And then I discovered META events! :)

In the mb64e_meta.inc I had to do some changing (and quickly learning some pic assembly) to change a sysex stream into a cc-stream. And this is what it turned out to be:

MB64E_META_Handler

;; branch depending on second meta event byte

movf MIDI_EVNT1, W

JUMPTABLE_2BYTES 17 ; 17 entries

rgoto META_Send_ExCuSe_NRPN    <--- replacing Handler_00

rgoto MB64E_META_Handler_01

rgoto MB64E_META_Handler_02

rgoto MB64E_META_Handler_03

rgoto MB64E_META_Handler_04

rgoto MB64E_META_Handler_05

rgoto MB64E_META_Handler_06

rgoto MB64E_META_Handler_07

rgoto MB64E_META_Handler_08

etc....

and later:

;; --------------------------------------------------------------------------

;; This is a subroutine which sends a NRPN stream for ExCuse Sequencer

;; IN: parameter address in working register WREG

;;    enc/button value in MIDI_SEND

META_Send_ExCuSe_NRPN

call MIOS_MIDI_BeginStream ; begin stream

movlw 0xb0         ; send 0xb0

call MIOS_MIDI_TxBufferPut

movlw 0x63         ; send NRPN_MSB

call MIOS_MIDI_TxBufferPut

movlw 0x77         ; 118/119 track on/off

sublw MIDI_EVNT_VALUE ; send button value, stored in MIDI_EVNT_VALUE (0/1)

call MIOS_MIDI_TxBufferPut

movlw 0x38         ; send 0x38

call MIOS_MIDI_TxBufferPut

movf MB64E_CURRENT_BUTTON, W ; send button-id (note: bank access)

call MIOS_MIDI_TxBufferPut

movlw 0x06         ; send 0x06

call MIOS_MIDI_TxBufferPut

movlw 0x00         ; send 0x00

call MIOS_MIDI_TxBufferPut

goto MIOS_MIDI_BeginStream ; end stream and exit

;; --------------------------------------------------------------------------

Unfortunately I have not been able to test it yet, but it compiles great, and I am not expecting any problems with it.  ;)

Gio.

Link to comment
Share on other sites

  • 2 weeks later...

The synthesizer board is ready. It only has one button: for On and Off.

Midi in/out

Ethernet

Stereo out (48Khz, 16 bit)

In the end I used init level 4 to adjust the startup sequence. This level is not used in Mandriva.

The biggest work was going into fault recovery. What if something crashes? It has to recover by itself without rebooting, since this takes more than a minute (power down, 10 secs, power up 75 secs, something to work on in the future), and there is no mouse, keyboard or display connection.

So, I had to write some script to restart jack after a crash, like fluidsynth, the midi I/O and to reconnect everything with everything afterwards. For Jack this takes 5 seconds, for Midi I/O less than one, for the synth about 3.

However, under normal use it doesn't crash... (I had to pull some tricks to test it).

Memory usage went down to about 100Mb as well.

The OS with network, secure shell, alsa, and midi: 14 Mb

Jack: 28 Mb

fluidsynth with soundfonts: 60 Mb.

Under heavy load (Rachmanicov Symphony with lots of speed changes) processor usage is around 30% and on a steady 45o celcius. Power consumption 75 watt, so lots of power left (150W ATX power supply).

I am happy...  :D

Link to comment
Share on other sites

  • 1 month later...
  • 2 months later...

Hi Gioxannes,

fine to see that someone else is actually trying to integrate a keyboard. I´m still working on my mb64-based-keyboardcontroller-mb-project - searching for nice knobs and a concept for the controllers.

But I´m planning, since I bought 3 sids a mb-sid-keyboard, eventually integrated into this keyboard.

Does your keyboard have a dynamic-scan-matrix, an on/off-scan matrix or is it without electronics - and how will you solve the connection to your midibox

Best regards

clem!

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...
 Share

×
×
  • Create New...