Jump to content

MIDIbox CV V2 Concept


TK.

Recommended Posts

Then, is there sort of an idealized synth for this project? I know it can be used for anything, but like, it seems like people are thinking 3 oscillators... Since TK is using the kraftzwerg for his test platform, I'm guessing he's kind of designing around it... That brings me to a slightly off topic question.

If you've got a little 3 osc synth, I can think of a lot of reasons you'd want to be able to fade each osc in/out of the mix. Would u rather have 3 VCF's or 3 VCA's? (Trying to think of a good way to assign the 8 available cv's)

so like, 3xOSC to 3x filters to mixer to one VCA, or 3xOSC to 3xVCA to mixer to one filter.. then maybe a final vca?

Link to comment
Share on other sites

Would u rather have 3 VCF's or 3 VCA's? (Trying to think of a good way to assign the 8 available cv's)

so like, 3xOSC to 3x filters to mixer to one VCA, or 3xOSC to 3xVCA to mixer to one filter.. then maybe a final vca?

My personal opinion on that is that analog filters make me really excited. So I will always pick VCF first I think. My application will be for an external filter for my SID and GameBoy so I will be adding additional capabilities as opposed to going all analog and won't have too much of a problem there. I do eventually want to move to an analog modular setup (or something like that).

Either way, you could always, in the worst case, just build multiple MBCVs if you need more CV inputs. I would think, in that case, having a 3xOSC, 3xVCA in one, and VCF's in another would make the most sense? I suppose that's not quite as ideal as it could be but still rather flexible I would think.

Link to comment
Share on other sites

Either way, you could always, in the worst case, just build multiple MBCVs if you need more CV inputs. I would think, in that case, having a 3xOSC, 3xVCA in one, and VCF's in another would make the most sense? I suppose that's not quite as ideal as it could be but still rather flexible I would think.

If it could be possible to do that and save it all under one patch, w/ one "brain".. (I need to read up on MB stuff again :) )

That would be great!! (But I'm kind of liking the new simple semi-modular synth idea right now.. My modular has grown to the size of my first apartment, and can't leave the house. A little midi-capable analog synth w/ all these time synchronized lfo's and eg's would be amazing (still 16cv's vs the 8 would be ideal))

Edited by wicked1
Link to comment
Share on other sites

  • 3 months later...

Here's a mad idea, hows about a slight mod of this using a couple of Bassboys running into some analogue filters (Seppos in my case)

Could be an amazing hybrid Digi osc/Analogue filter hybrid, all it would need is for this to be modded slightly to have a MIDI out to trigger the Bassboys and the ability to add 12 controls for the Bassboys :)

Link to comment
Share on other sites

  • 1 month later...

Hi all,

since on year I try to get some buchla modules done, but unfortunately things go slow. One module will be a midi2cv module. So I follow this thread since the beginning with a lot of pleasure.

Last Christmas I got the iPad2 and I use it a lot for music and all sort of things.

Since I got an lpc17 core module for my seq4 and an old aout cv interface ( max525) I was very happy to see this development here with the new midi2cv module.

I bought lemur (most expensive app ever) and tried the new midi2cv v2 app trough the websvn. It worked very unstable like described in an other topic, because of an broken aout driver. I waited a couple of month (went to china in the summer) and then Since the last update it works beautyfull and it is absolutely incredible to sit in front of my modular and have my iPad in my hand and control CVs, without any cable. Very nice. Thank you Thorsten for that experience.

After some time playing around I thought it would be nice to play with the multiball object which is inside lemur and to have a simple keyboard.

I looked at the code inside the lemur midi2cv file and figured out some things. But as so often not enough. Multiball is sending data to the same address as the octave knob for example. I works but not nice.

I am absolutely at he beginning to dig in but I don't understand this whole OSC NRPN thing. I just don't know what the core understand. And because i have a hard time scripting as well we understand each other not so good.

I found nothing in the forum about this so I need to ask here and hope for support. At the moment I am really stuck at the point to program a button in lemur which sends a note_on to the core which updates the cv of channel 1 and sets the gate1 high.

Thanks for all your enlightment in this matter.

Chris

Link to comment
Share on other sites

Hi Chris,

glad to hear that you already managed to get to this point!

The low-level function which sends NRPN controllers is sendNRPN(nrpnNumber, nrpnValue)

Both parameters are 14 bits.


decl chn = 0;

decl nrpnNumberMsb = (nrpnNumber >> 7) & 0x7f;
decl nrpnNumberLsb = (nrpnNumber >> 0) & 0x7f;
decl nrpnValueMsb = (nrpnValue >> 7) & 0x7f;
decl nrpnValueLsb = (nrpnValue >> 0) & 0x7f;

if( nrpnNumberMsb != lastNrpnAddressMsb ) {
lastNrpnAddressMsb = nrpnNumberMsb;
midiout(0, {0xb0 + chn, 0x63, nrpnNumberMsb});
}

if( nrpnNumberLsb != lastNrpnAddressLsb ) {
lastNrpnAddressLsb = nrpnNumberLsb;
midiout(0, {0xb0 + chn, 0x62, nrpnNumberLsb});
}

midiout(0, {0xb0 + chn, 0x06, nrpnValueMsb});
midiout(0, {0xb0 + chn, 0x26, nrpnValueLsb});

oscout(0, '/1/nrpn', {nrpnNumber, nrpnValue});
[/code] As you can see, there is a check if the last MSB or LSB of the address byte has already been sent. Both variables need to be initialized in - this is done in resetNRPN(), called from init() - and init() will be executed "on load" as you can see in the Execution field.
[code]
// initialize with invalid values
lastNrpnAddressLsb = 0xff;
lastNrpnAddressMsb = 0xff;

This should do the trick in a new panel.

If you doing modifications in my own panel, I would propose to call sendCVNRPN(), because it adds the selected channel to the NRPN number.

Best Regards, Thorsten.

Link to comment
Share on other sites

Hi Thorsten and all others,

thanks for your answer and help.

during the week i managed to work on my code every day for a few hours. I found out a couple of things. First thing i wanted to build was this standard keyboard:

http://midibox.org/forums/uploads/post-3513-0-50648300-1348235779.png

post-3513-0-50648300-1348235779.png

Since i could`t find anything about note_on and NRPN a tried the: Note Events: /<chn>/note <key-number> <velocity> line found at the "MIDIO128 V3" under "Supported OSC Packet Formats" page.

oscout(0, /1/note, {value, value2}); --> sends out a noteon with the note (value) and velocity (value2)

oscout(0, /1/note, {48, x}); --> sends out a noteon with the note 48 and x = (1) button pressed: velocity (1) (Gate high) () and x=0 button depressed: velocity (0) (Gate low). As long as the script is connected to "On Expression" and (x).

With this i managed to get to this code for the white and black keys. It is heavily copied from the Sequencer keys and i guess is too complicated. But it works. Only drawback so far is that there is sometimes no Note_off and the gate stays high. But so far i am very satisfied by this.

On the weekend i will scale it down for the iPhone.

Next will be the Multiball elements.

Christoph

decl changes = nonnull(x - last_x);

decl i;

decl cv_2 = '/8/note';

if( selectedCvChannels & (1 << 6) )

cv_2 = '/7/note';

if( selectedCvChannels & (1 << 5) )

cv_2 = '/6/note';

if( selectedCvChannels & (1 << 4) )

cv_2 = '/5/note';

if( selectedCvChannels & (1 << 3) )

cv_2 = '/4/note';

if( selectedCvChannels & (1 << 2) )

cv_2 = '/3/note';

if( selectedCvChannels & (1 << 1) )

cv_2 = '/2/note';

if( selectedCvChannels & (1 << 0) )

cv_2 = '/1/note';

decl value;

decl whiteKeys = {0, 2, 4, 5, 7, 9, 11};

for(i=0; i<sizeof(changes); ++i) {

decl ix = changes;

if( x[ix] ) {

decl oct = floor(127*StepValue.x / 12);

decl value = 12*oct + whiteKeys[ix];

StepValue.x = value / 127.0;

oscout(0, cv_2, {{value}, x[ix]});

}

else {

decl oct = floor(127*StepValue.x / 12);

decl value = 12*oct + whiteKeys[ix];

StepValue.x = value / 127.0;

oscout(0, cv_2, {value, 0});

}

}

last_x = x;

post-3513-0-50648300-1348235779_thumb.pn

Link to comment
Share on other sites

  • 1 month later...

Hi,

Sorry for the newbe ask but there is a concept that is not clear for me ( cause I am a beast in english ):

This new CV will generate ADSR voltage (built in envelope generators and LFOs ) while the V1 make it receiving CC message ?

or better : I can open ( modulate )the filter or the VCA with the Envelope Generator and not only with a knob ( encoder ) on a control surface ?

Thanks for any clarification

regards

Antix

Link to comment
Share on other sites

  • 4 weeks later...
  • 2 weeks later...

Theoretically an alternative panel could be created with Ctrlr, which runs under Windows and MacOS.

But since the development of this software is very turbulent, I would say that it isn't the right time to start with the yet.

E.g. the panels that I created for MBSID and MBFM are not working with newer Ctrlr versions, it's extremely difficult to get bugfixes (which won't lead to new issues) and meanwhile even MacOS updates are not provided anymore - which makes it impossible for me to test the panel under similar conditions like under Windows.

 

Lemur on iPhone: works, but you won't see the complete panel which makes it unusable.

It would be better to search for an iPad1 - I'm still using it as well, the performance is more than sufficient! :smile:

 

Best Regards, Thorsten.

Link to comment
Share on other sites

  • 2 months later...

Hi, just wondering:

How difficult will it be to add the analogue ins to MBCV2.0 and have them available in the mod matrix?

Ditto DINs?

Any plans to support multiple AOUTs ala MBNG?

 

I plan on adding this to my next panel of modular synth, so want to work out which ins/outs I should plan on being available before drilling!

Link to comment
Share on other sites

Analog INs: I tried this some time ago, but had no fun with this option - the achievable sample rate is too low for good results.

Features where I don't see a significant benefit won't be supported, because people will blame me for the bad performance and wrong promises.

 

DINs: using digital inputs as triggers sounds like a good idea.

 

Multiple AOUTs: running synth engines for more than 8 outputs would decrease the sample rate, at the end the results would be worse than today.

So: I could only provide "auxiliary AOUTs" to pass static values which are not modulated.

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Analog INs: I tried this some time ago, but had no fun with this option - the achievable sample rate is too low for good results.
Could I ask approximately what sample rate was possible? Would this limitation also affect other MB based projects reading the analogue ins, for example if ACSensorizer was ported to MIOS32?
Features where I don't see a significant benefit won't be supported, because people will blame me for the bad performance and wrong promises.
Sure, totally understood.
DINs: using digital inputs as triggers sounds like a good idea.
Great, I'll add some trigger ins to my panel :smile:
Multiple AOUTs: running synth engines for more than 8 outputs would decrease the sample rate, at the end the results would be worse than today.

So: I could only provide "auxiliary AOUTs" to pass static values which are not modulated.

OK that makes sense, I'll stick with 1x AOUT + MBCV2.0 for the nice fast synth engines and use my second AOUT on the MBSEQ :D

Cheers

Link to comment
Share on other sites

The AIN sample frequency was ca. 1kHz, which means that nobody can expect that a usable sinewave (e.g. generated from an analog LFO) could be passed to the synth engine this way. It sounds quantized & aliased in the negative way (!) - a lot of noise, no musical usage.

 

You mention another usage of AINs: for simple parameter control. This will be possible (-> knob functions).

It will definitely require an AINSER64 module (btw.: I consider to provide a downstripped PCB called AINSER8 with MCP3208 only for unmuxed inputs), because the analog inputs of the LPC17 jitter too much.

 

Best Regards, Thorsten.

Link to comment
Share on other sites

I turned my 8bit core running AC Sensorizer into an 8-channel midi to CV converter
Yes I was hoping that some of the features of AC Sensorizer could be brought in to MBCV. I believe it was even mentioned in this thread?

 

ok, noticed!
Super :smile:

I understand we won't be able to modulate parameters without some quantisation at 1Khz, but for certain operations 1Khz is fine!

 

Looking forward to what you come up with.

Link to comment
Share on other sites

  • 2 months later...
  • 4 weeks later...

Could someone tell me about the current status of this project? I've read through this thread, and I've been reading the source code, but I'm still unsure how complete the code is. Also, does the description of the menus and hardware options for CV V1 still apply to CV V2?

 

I compiled the V2 code and it appears to boot correctly on my STM32 core, but MIOS Studio is unable to communicate with the core over USB. (It worked previously when I was running different apps on the core.) 

 

I'd appreciate it if TK or someone else could tell me what to expect from the current V2 code. It looks really great, but I'd like to know what I can expect before I start building one of the AOUT modules.

 

Thanks very much for your assistance.

--Adam

Link to comment
Share on other sites

  • 2 weeks later...

Hi Adam,

 

there were almost no changes since 2012. All features that you can see on the Lemur snapshots are available, but the project itself still requires a lot of work for the control surface (not defined yet) and the documentation. Last but not least I would have to find some time to continue with this... ;)

If somebody wants to help out: step forward! :)

 

The SCS based menu interface is different to MBCV1, it's more like on MIDIO128 and MBNG (e.g. requires 2x20 LCD, rotary encoder and 6 buttons)

It doesn't allow to change all parameters - this is currently only possible with the Lemur UI.

 

The application has been designed for LPC17 (and faster CPUs, I guess that it will run on a STM32F4 as well)

The STM32 hasn't enough "horsepower" for handling the high-speed modulation pathes, and will probably stall.

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Hi Thorsten,

 

Thank you very much for the reply. I have an iPad and Lemur, and I just received an LPC1769 LPCXpresso board. (After posting my query I spent more time reading the source code and decided to switch to an LPC17 since that is what you are currently using.) I will start building up a MBCV2 system and let you know how it goes. 

 

I know that time is often the most difficult resource to obtain for projects like this!

 

Kind regards,

--Adam

Link to comment
Share on other sites

  • 3 months later...

Apparently the remark in my previous post about time was somewhat prophetic, since here it is November and I still haven't completed my MBCV2 system. There have been other unusual events vying for my time and attention, however, such as my company releasing its first hardware products  :w00t: , and a major natural disaster hitting the area where I live.  :cry:
 
However, my MBCV2 project is approaching completion. Here's a photo of the main board. It's basically the portions of a MBHP_CORE_LPC17 used in the MBCV2 built on stripboard:

post-7066-0-92729200-1384032538_thumb.jp

On the left are two custom PCBs with Analog Devices AD5734 DACs. These are 14-bit quad converters with built-in voltage references and output buffers with adjustable ranges, either monopolar or bipolar. They're kind of expensive but they require less external circuitry. I've added code to aout.c to accommodate them; they're fairly similar to the TLV5630 from a software perspective.

 

I've also built up a SCS-like control panel on another piece of stripboard. The CORE board has connectors for both a character LCD and a DOGM 128x64 graphic LCD. I'm going to use the latter because it fits better on a 5U-tall panel in my modular synth.

 

All of this is working on my bench but I haven't yet tested it thoroughly. The next steps are to connect it to a panel of 1/4" jacks and install it in my synth cabinet. Despite my slow progress it has been a fun project.

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