Jump to content

modding the modmatrix - pitch 1,2,3 as single target


jrp
 Share

Recommended Posts

Hello again,

 

As my synth is slowly growing and i am getting more and more impressed with the engine i now want to turn towards my CS. With a open source, diy project i can´t resist searching the code - adjusting stuff for my hardware.

 

I did a few experiments messing with the Targets in the Modulation Matrix. Turned out to be very easy.

 

only one question:

 

Is there a definition for all three oscillators as a single modulation target?

 

 

This is only cosmetic. Of course the modmatrix gives you a nice selection of targets already, and everything not preassigned can be selected using the two target entries.
But i have found that i use OSC1,2,3 only rarely, while i always like to have EXT7 and EXT8 available, as well as LFO1 depth.
All can be done as is, i just want my matrix to show me something... so the idea to rearrange this a little.

 

Btw, i was really surprised that it was so easy to find the right code.

 

Unfortunately there is no available target that will affect the pitch of all three oscillators. Is that correct?

So the only way to do vibrato/pitch mod effects on all oscs is by selecting target 1-3 on the matrix, right?

 

 


 

The lines i found were in

 

sid_se_l.inc

 

From line 1991 on you find entries for the left targets, from line 2002 for the right targets.

 

For example,
(line 1991) SIDSE_L_MOD_COPYTARG_MACRO SIDSE_L_MOD_Hlp_AddTarget1, SID_MOD_TARG_PITCH1_L, 0
to

SIDSE_L_MOD_COPYTARG_MACRO SIDSE_L_MOD_Hlp_AddTarget1, SID_MOD_TARG_EXT7_L, 0

Available Targets are listed in app_defines.h from line 441 on. Seems like they are case sensitive, SID_MOD_TARG_ext7_L will not compile.
In menu_tables.inc the names of the colums can be changed from line 717 on.

 

 

 

 

Link to comment
Share on other sites

Unfortunately there is no available target that will affect the pitch of all three oscillators. Is that correct?

So the only way to do vibrato/pitch mod effects on all oscs is by selecting target 1-3 on the matrix, right?

 

If you want to modulate all three pitches from a single modulation path, just enable the L/R switches of the direct modulation targets:

 

mod2.gif

 

These are the same switches which are displayed by the Matrix LEDs of the CS

 

The "soft-targets" (Tr1 and Tr2) are only optional for the case that you want to control something else than Pitch, Pulsewidth, Filter or Volume.

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Thanks Torsten!

Actually i was hoping to find a target to mod the code that would modulate all three oscs as a single target (freeing up two matrix points for other targets).

Changing the code for a target listed in the app_defines.h was easy, just there are only targets for single oscs listed.

In the knobs menue and with sysex it is, however, possible to assign all oscs at once.

Link to comment
Share on other sites

I'm a bit confused from your reply and guess, that you missed the message:

you can modulate all six OSCs with a single modulation path by enabling the L/R switches of the direct modulation targets for OSC pitch.

This will copy the modulation result to all (selected) targets.

 

Did you every try this - where is the difference?

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Thanks and sorry for being a bit unclear. Your answer is of course correct and i know it works like this.

So everything is running perfectly and this is not a real issue!

 

I am just toying with your code. This is exciting - just scratching the surface of what´s really going on - your code provides a lot of possibilities for custom solutions even for the non programmer.

This is just fun for me. So i wouldn´t ask anyone to put any work into this if it´s more than just giving me the right keyword!

 

 

 

Idea i had was this: Adaption of direct modulation targets considering the way i most often will use this synth. I can configure it all using soft targets - but i want the shining lights and the handling of the cool Matrix buttons...

 

Direct modulation targets configured in sid_se_l.inc:

 

OSC123 L/R                            (not available as target?)

PWM 1 L/R

LFO 1 rate/ LFO 2 rate            (SID_MOD_TARG_LR1_L, SID_MOD_TARG_LR2_L)

Ext 7                                        (SID_MOD_TARG_EXT7_L)

Ext 8                                        (SID_MOD_TARG_EXT8_L)

Resonance L/R                       (not available as target?)

Cutoff L/R

Volume L/R

 

 

So please note, i am simply asking about this out of interest and while trying to configure a very personal adaption of your firmware. For me it´s fun searching through the code, trying to taylor towards my own hardware and usage.

Since i might be the only one interested, and since MB_Sid is perfect as it is, i can let this be with no real drawbacks!

The only reason i am repeatedly asking about stuff like this when i am stuck is because i cannot predict if it´s a larger code change (in that case not for me and i am sorry for even asking - feels a bit unpolite since the app is already so great), or if it is just a single line doing the trick.

I have come to learn that with assembly it is most often more involved than just "a line". I still can´t even imagine how deep this all is...

Edited by jrp
Link to comment
Share on other sites

In assembly language it mostly isn't a single line, but there are many places which need to be changed and dependencies which need to be considered. Sometimes it's even impossible due to higher execution times or missing resources (RAM, Flash)

 

Therefore I was carefully asking if you really want/need this, because normally it will be some effort (1..2 hours) to do & test the change.

 

And one mistake can lead to even more time since debugging without knowing the whole code is extremely difficult (e.g. where would you start if MBSID crashes sporadically after your change...)

 

 If you really want to start with this, it could make sense to read & understand the C based version (for MIOS32) of the firmware first: http://svnmios.midibox.org/listing.php?repname=svn.mios32&path=%2Ftrunk%2Fapps%2Fsynthesizers%2Fmidibox_sid_v3%2Fcore%2F

Because here most of the functions are mostly only a single line...

 

Then try to find the same function in the assembly based version, see how things are done (e.g. how to add + multiply 16bit variables), try changes.

 

Best Regards, Thorsten.

Link to comment
Share on other sites

good morning, what a quick answer!

 

there are many places which need to be changed and dependencies which need to be considered

 

I already noticed when adding new encoders... works in one engine, messes up the others. Not the subject now though...

Seems like assembly is one of the hardest languages, especially for big projects. From reading about it i understand it is also the most efficient.

 

Of course i donot want to stress your free time, i am very sure you have better things to do ;-)

 

As i said, this is more about toying, experimenting and none of it is really needed. Even if it was it wouldn´t make sense having you do any work for something that is not an official version. The effort you spent on this whole project is already amazing!

When i started writing questions like this i was expecting other users had it all figured out and would chime in. Doesn´t seem to be the case.

 

So there is a MIOS32 version written in C... Called MB_SID_V3!

Wow, i didn´t know about that!

I have no Core32 yet, but i definitly will check this out!

 

Is this running on the LPC17 based core or on the STM32F4 as well?

Is there a doc explaining the hardware of this? How do SID modules connect? Via slaved Core8´s?

 

 

Maybe this is obvious and i am doing something wrong, but is it possible to download the complete application folder? I can only open subfolders and look at single files. I´m on Snow Leopard with Firefox 30.0

Edited by jrp
Link to comment
Share on other sites

The MIOS32 based solution is only experimental, far from completion (e.g. there is no UI yet).

It was some kind of learning example for me some years ago, therefore you also won't find documentation - probably it will never be released to public.

E.g. SID core connection is a difficult topic, probably it would only be possible via CAN, which means that PIC based cores are still required, which makes the project too complex for newbies.

In order to download all files, use a SVN client as explained in the Wiki.

 

Best Regards, Thorsten.

 

P.S.: next reply next week - I'm on a weekend trip
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...