seq24? MuSE (excellent linear MIDI seq, I don’t know of any better)? ZynAddSubFX? AMSynth? Alsa Modular Synth? Maybe look to fluxus, their stuff ain’t pretty but its fast and powerful… Uhm?..
Thanks Stryd, but you misunderstood something.
I know Muse (like Rosegarden, but without the audio mixing). I consider them rather equal studio/composer software.
What I need is a sequencer that can play my pre-recorded tracks with the possibility to mute/unmute tracks through MidiBox.
Fluxus seems to be a 3D effect generator, unless you know another program with the same name.
I was hoping that Seq24 could easily be integrated with the Mb.
AlsaModularSynth is a synth. I don’t need. I already made my pick. Fluidsynth, of which i have and even understand the source code (and it is able to allow changes to the soundfont settings in real time). You can check this out with Swami.
Now I am looking at Dino. It is very small and might suit as a basis of my writing my own dedicated sequencer…
All the best to all!
Gio.
Totally misunderstood!
I mentioned the synths because you said that fluid was’nt accepting CC’s,
Right, so you want an *audio* sequencer then! I hear “sequencer” and think “midi sequencer”. That’s because back in the day the audio ‘sequencers’ were called ‘multitrackers’ (not to be confused with trackers as in sequencing samples with hex, but as in, ‘multi-track audio editors’). After a time the midi sequencers took on audio multitracker features, but the name stuck - Cakewalk Pro Audio, Cubase Audio, etc. So really when you say sequencer, it means midi by default. This is similar to the “DAW” thing where once a DAW was a hardware+software unit (DAWorkstation - hardware! A bunch of bits on disk is not a workstation…) but these days dudes call audio+midi sequencers a ‘DAW’(and manufacturers themselves of course, they have to tell people what they’re selling and if dudes want a ‘DAW’ they better be selling a ‘DAW’ heh), which kinda leaves the name for the whole unit an unfilled gap… Anyway enough history lesson, we’re gettin too old for this sh*t ![]()
I was trying to figure out what you meant when you said “A sequencer. It does not take any look at the MIDI events itself”… I was like…uhmm… that’s what sequencers do… maybe you’re running your web browser by mistake? hehehe
I’m clueless in the audio seq/multitrack software field… Sorry dude… Hope you’ll keep us posted!
When I said fluxus I was thinking Pawfal: http://www.pawfal.org/index.php?page=PawfalProjects They have some cool toys but I don’t think they’re relevant to you now…
I totally agree with you about the DAW. Even the wiki these days says that a computer with dedicated audio software is a DAW.
My multitrack recorder is for the museum…
To make thinks more (or less) complicated, I meant: pre-recorded midi tracks. Again I totally agree with you that a sequencer is MIDI only.
I was hoping (in vain) that the sequencer would have a peek in the NRPN messages.
Even so. For those who are interested. These are the diffs for fluidsynth 1.0.8
src/fluid_chan.c
–
97a98,100
>
> /* Local Control On */
> SETCC(chan, LOCAL_CONTROL, 127);
234a238,243
> case LOCAL_CONTROL:
> if (value == 0) {
> fluid_synth_all_sounds_off(chan->synth, chan->channum);
> }
> break;
>
src/fluid_synth.c
741a742,747
> channel = synth->channel[chan];
>
> /* check if we still have control over this channel */
> if (channel->cc[LOCAL_CONTROL] == 0)
> return FLUID_OK;
>
747,748d752
< channel = synth->channel[chan];
<
This does the trick of muting channels through a MIDI LOCAL_CONTROL message (cc, 122).
Now according to the specs this local control is for synths with embedded keyboard (I will call composer). It actually tells the synth to sent the midi data through the midi out and not process it itself. In case of fluidsynth it decided not to process it itself, but there is no midi out.
There are several functionalities to be achieved with this. For example if you have the midi out of a composer send to different instruments at the sdame time, but want to mute one of them with a external controller. I will post this patch to the fluidsynth boys, and I am sure they want it implemnted on a synth basis and not channel. But I do not see composers sending data to multiple channels yet (through midi-routers yes)/ Anyway enough for today. Patches are tested and ok. ![]()
Gio.
Local on/off is extremely important to have if you want to use your synth with an external sequencer (including a PC), or in any environment where complex routing is required. Good on you for making the patch, I hope they take it on!
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.
-
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.
-
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. ![]()
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. ???
Good blogging you got here man, thanks ![]()
- 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:
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).
…
- 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…
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.
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.
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… ![]()
Sweet
Pics!
Just to let all know, I am still there, but very busy doing other things on the moment.
I hope I can inform you about some progress soon.
Gio. ![]()
Soon is turning into later. I only was able to finish the pots and push-buttons connections on the backside of the panel.
But I am still there, and still thinking about my second box… ![]()
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!