Novation Bass Station 2 Panel

Home Forums General Using Ctrlr Novation Bass Station 2 Panel

Viewing 20 posts - 1 through 20 (of 43 total)
  • Author
    Posts
  • #119425
    An0n3mau5
    Participant
    • Topics: 1
    • Replies: 18
    • Total: 19

    Hi everyone!

    I am currently working on a Bass Station 2 panel which I plan on sharing here once it is done.
    I am a total noob with understanding Sysex, Lua, Ctrlr, etc so please keep that in mind when responding
    and dumb everything down as much as possible for me if you don’t mind.

    I hope to use this thread for all my questions as they arise. So here are my first batch :).

    Is it possible to change the text size for the button text (independently)? And/or the text size for all modulators specifically (by font size/number) rather than with a knob?

    I used the Multi type knob with MSB/LSB for some of my knobs as mentioned in this thread https://ctrlr.org/forums/topic/two-cc-numbers-for-one-knob-not-nprn-need-help-creating-such-a-parameter/. How can I set the value indicator to show only 0 to 255 rather than 0 – 16512?

    Also is it possible to show the values inside the center of the circle rather than below/above etc?

    I have many more questions as I would like to gain a far deeper understanding as most of the replies on here are way over my head at the moment. That also goes for looking at existing panels for hints, so I will leave it here for now and see if I can begin with these basic things.

    Cheers!

    Edit: May as well tag a few more questions on.

    How can I add a slider as above (256 res MSB/LSB) with a value of -127 to +127?

    What can I do/fix to get CTRLR knobs to respond to MIDI from the BS2 Knobs?

    Thanks again.

    • This topic was modified 1 month ago by An0n3mau5.
    • This topic was modified 1 month ago by An0n3mau5.
    #119463
    samoht
    Participant
    • Topics: 0
    • Replies: 46
    • Total: 46

    How can I add a slider as above (256 res MSB/LSB) with a value of -127 to +127?

    This topic has been discussed many times in this forum. You can use the search function (keywords: offset displayed values) Also you can study the documentation about expressions in Ctrlr. It is under the topic “documentation” of this website.

    Is it possible to change the text size for the button text (independently)? And/or the text size for all modulators specifically (by font size/number) rather than with a knob?

    Yes, there is a knob in the panel of each component that looks like a mini-modulator and that will do what you are asking for.

    • This reply was modified 4 weeks, 1 day ago by samoht.
    #119464
    samoht
    Participant
    • Topics: 0
    • Replies: 46
    • Total: 46

    Also is it possible to show the values inside the center of the circle rather than below/above etc?

    I don’t think so. Maybe using Lua but that will be complicated.

    • This reply was modified 4 weeks, 1 day ago by samoht.
    #119471
    An0n3mau5
    Participant
    • Topics: 1
    • Replies: 18
    • Total: 19

    Hi samoht,

    Thanks for taking the time to reply to my thread. I appreciate it!

    I’ve made decent progress so far and answered a few of my own questions along the way. I will update this thread more later when I have time to provide answers for future reference.

    This topic has been discussed many times in this forum. You can use the search function (keywords: offset displayed values) Also you can study the documentation about expressions in Ctrlr. It is under the topic “documentation” of this website.

    I kind of figured these were all pretty basic questions that had been covered before but as a lot of this stuff is Greek to me I often don’t really know/understand what I’m looking at. Your keyword suggestions have been helpful and I should be able to figure it out from that so thanks again.

    Currently I have tried adding ” / 64″ to the modulatorvalue and value but it does not seem to have any effect on the displayed values. I assume midivalue will do nothing atm as Ctrlr is currently not responding to the BS2. Though I had it working previously. . . I’ll keep going with trial and error.

    Yes, there is a knob in the panel of each component that looks like a mini-modulator and that will do what you are asking for.

    I actually don’t see a knob to change the value under component at the very bottom where there is “Button text color [on]”, “Button outline when focused” and “Button text”. That was the one I was asking about but it’s not a big deal as I will just use some work around or custom graphics later on.

    Cheers!

    • This reply was modified 4 weeks, 1 day ago by An0n3mau5.
    • This reply was modified 4 weeks, 1 day ago by An0n3mau5.
    • This reply was modified 4 weeks, 1 day ago by An0n3mau5.
    #119475
    An0n3mau5
    Participant
    • Topics: 1
    • Replies: 18
    • Total: 19

    I’ve no idea what is going on as my reply to you samoht is not showing up but the thread is showing in my control panel as having 4 posts (prior to this one) and “This topic has 3 replies, 2 voices, and was last updated 3 hours, 31 minutes ago by An0n3mau5.” . . . So I will assume there is an error that can hopefully be dealt with by admin or something.

    In the meantime. I have also started simultaneously working on a panel for the MicroKorg and I just don’t understand how the heck to add values to the MSB/LSB 99/98 Coarse/Fine. I have all of my NRPN controls working fine on my BS2 where it gives me the NRPN number and I just change it on the midi controller number slider, but what about when I need to change the 98 number also?

    If I change the -2 value at the end it only seems to work for the MSB. . .

    Can someone explain how to accomplish this using the added NRPN preset?

    I’ve tried many things and when I try send direct CC values it appears as it should in the midi monitor but does not work and if I try to send the sysex command (as far as I can understand it (F0 42 3g 58 B0 63 04 B0 62 08 B0 06 xx F7)) it only sends the LSB (98).

    Any clues or hints would be much appreciated. Cheers!

    • This reply was modified 4 weeks ago by An0n3mau5.
    #119499
    PossemoPossemo
    Participant
    • Topics: 14
    • Replies: 634
    • Total: 648
    • ★★★

    NRPN 99/98 is not coarse/fine setting but msb and lsb part of ONE value – the controller number. You have to understand that msb and lsb are two parts of one value broken into two bit-pieces. E.g. 11111110000000 is a 14-Bit value. You can break this into msb (in this case 1111111) and lsb (in this case 0000000).

    CC,ByteValue,MSB7bitValue,99,-2
    CC,ByteValue,LSB7bitValue,98,-2
    CC,ByteValue,LSB7bitValue,6,-1

    This is a NRPN “multi” message in Ctrlr. -2 corresponds to the MIDI controller number. It can be as big as 16363 (a 14-bit value) broken into two 7-bit nibbles.

    Sysex does work similar. Use MS and LS for 7-bit nibbles and ms and ls for 4-bit nibbles. So a sysex message could look like this:

    F0 42 3g 58 B0 63 04 B0 62 08 B0 ms ls F7

    #119501
    An0n3mau5
    Participant
    • Topics: 1
    • Replies: 18
    • Total: 19

    Thanks for the help Possemo. I have read more or less that same info so many times but re reading your explanation a bunch of times and re-watching this video on youtube “https://www.youtube.com/watch?v=XxJTyXowrqI” where he gives the math equation at the end it has finally clicked for me.

    I know I will be able to map all of the parameters of the MicroKorg now and provide a free alternative to the other panel on here sticking with the open source spirit of Ctrlr.

    Now to solidify my understanding more of these basics and work my way up to LUA scripting and patch/library functionality.

    On that note. On my Bass Station 2 panel I would like to have the Pulse Width controls be greyed out or inactive unless Pulse Width is selected as the Oscillator Waveform form (per oscillator). It would also be cool to have a visual envelope display for the Amp and Mod Env sliders. If anyone here could leave some tips or advice what I should search or where to start when I get to overcoming these hurdles that would be much appreciated.

    Enjoy the rest of your weekend all! Cheers.

    #119505
    PossemoPossemo
    Participant
    • Topics: 14
    • Replies: 634
    • Total: 648
    • ★★★

    The guy in the youtube video tells that msb is the “coarse” value and lsb the “fine” value. Well ok you can look at it like this. For me, e.g. “coarse tune” is a different parameter than “fine tune” – not parts of one value. But that may be a matter of taste. Btw. a 14-bit value has 16364 values, that’s right. It goes from 0 to 16363. That’s why I mentioned 16363. Never forget that 0 is not nothing – it is a value as well.

    In the deprecated panels section there were examples of how to draw envelopes. Even with mouse-drag capability. Somehow they got lost. Here they are – attached to this post.

    Attachments:
    You must be logged in to view attached files.
    #119509
    An0n3mau5
    Participant
    • Topics: 1
    • Replies: 18
    • Total: 19

    Thanks very much Possemo for the helpful response(s). The attached panels will certainly be very useful to me if/when I get to implement them. I am having issues finding some parameters on the MicroKorg as they don’t present any output to the midi monitor.

    If anyone would mind having a look at the midi implementation here> http://i.korg.com/uploads/Support/MK1_633652915168960000.pdf as I’m still learning how to interpret it.

    Would I be correct in thinking I need to dump a patch sysex then change the parameter and dump again and compare them to get the sysex value for the “Mod FX” “Type” (0~2=Cho/Flg,Ensemble,Phaser), or can that be derived/interpreted from the chart?

    Many thanks in advance and for all the replies thus far.

    #119510
    PossemoPossemo
    Participant
    • Topics: 14
    • Replies: 634
    • Total: 648
    • ★★★

    This midi implementation chart is not complete. Look at this one:

    https://midi.user.camp/d/korg/micro-korg/

    Many parameters are accessible just by simple CC’s.

    The sysex dump format of the early digital korg synths are a pain in th *ss. It has been done on the Korg 05R/W panel. This is the same on the microkorg. MIDI-bytes only have 7 bits, computers in general normally use 8-bit bytes or a multiple thereof such as 16-bit or 32-bit “longwords”.

    Korg handles this as follows: 8-bit bytes are crunched into a “worm” of 7-bit MIDI bytes.
    The first MIDI byte has all the 8th bits of the following 7 bytes. Then the next “batch” of seven 8-bit bytes encoded into eight 7-bit bytes is appended, again the first byte includes all the 8th bits of the following 7 bytes. The last “batch” will be an incomplete one with the last few bytes – e.g. it just includes the last four bytes.

    Therefore, you have to write a Lua procedure which decodes this worm of appeded 7-byte batches into correct 8-bit bytes.
    mdeca did this on his Korg 05R/W panel with pure calculation but it can also be done with the help of a tool included in Ctrlr called “BigInteger” where you can extract and set bits.

    #119511
    An0n3mau5
    Participant
    • Topics: 1
    • Replies: 18
    • Total: 19

    Thanks Possemo for another informative response and for the link. I had also been using that link and have mapped already all of the CC’s listed there and some that weren’t listed (the NRPN’s listed above) for which I had to use the midi monitor (and a fair deal of trial and error till I finally clicked).

    I think it’s going to take me quite a while to digest and interpret your latest response and then figure out how to extract the remaining parameters, which I know can be done as they are listed on the Midi Quest editor, and also the Coffeeshopped one.

    Anyway, thanks again and I welcome any other advice or thoughts you or anyone else may have otherwise.

    Cheers!

    #119516
    PossemoPossemo
    Participant
    • Topics: 14
    • Replies: 634
    • Total: 648
    • ★★★

    just be aware that when there are parameters in the sysex program dump which you cannot access directly you will have to:
    receive the whole dump,
    decode it,
    edit the parameter,
    encode the altered dump,
    send it back to the synth

    There are some panels who are doing this procedure, including my panels for the Matrix-6 / Matrix-1000 and Moog Source. If the dump is not too big it does work quite well. In the case of the microkorg program dump these are about 300 bytes. That should be “near realtime”. But this will be some coding work.

    #119522
    An0n3mau5
    Participant
    • Topics: 1
    • Replies: 18
    • Total: 19

    Cheers Possemo.

    I have started work on mapping out the remaining/hidden parameters and I will take a look at your panels and see if I can figure out how to interpret what you have done and how I should best implement it (nevermind, just realized you only provide VST/EXE, but I know what to do and where to look so thanks anyway).

    I appreciate all of your help so far, and samoht also.

    A tiny update to an earlier issue regarding not receiving midi back from the Bass Station into Ctrlr. I surmised from other threads on the forum that I should be using an earlier version of Ctrlr so I went back to version 5.3.201 from 6.0.4 and MOST of my modulators are responding to MIDI from the BS2. . . Seems all of the modulators that are linked to the hardware switches on the BS2 dont respond.

    Also with this version I can just enter 256 as the max value on the filter cutoff and it works correctly and the expressions appear to function correctly. Will be back with more updates later (if anyone cares lol).

    #119539
    An0n3mau5
    Participant
    • Topics: 1
    • Replies: 18
    • Total: 19

    Ok. So I’m struggling to set my LFO correctly with the expressions to operate and display -127 to +127 seemingly because it uses 14bit CC with MSB sweeping 0 – 127 and LSB with an increment of 64 for off/on every other.

    Any hints or advice would be much appreciated.

    #119545
    dnaldoogdnaldoog
    Participant
    • Topics: 3
    • Replies: 430
    • Total: 433
    • ★★

    Hi An0n3mau5,

    I think you might have to do that in Lua. I looked at the manual. Is this what you are after?

    See attached panel. I think the CC number changes when the value exceeds a 7 bit number. Not sure how to do that without resorting to lua.


    
    lfo_sweep = function(--[[ CtrlrModulator --]] mod --[[ number --]], value --[[ number --]], source)
        local channelOut = panel:getProperty("panelMidiOutputChannelDevice")
        local statusByte = 0xb0 + (channelOut - 1) -- use this code for dynamic channel changes
    
        local ccNumber = 51
        
    	if value < 0 then -- values range -127 ~ +127
            value = value + 127
            ccNumber = 18
        end
        -- DEBUGGING
    	panel:getLabel("OUT"):setText(string.format("%.2x %.2x %.2x", statusByte, ccNumber, value))
        -- SEND MESSAGE
    	local myMessage = CtrlrMidiMessage({statusByte, ccNumber, value})
        panel:sendMidiMessageNow(myMessage)
    end
    

    Regards,

    Attachments:
    You must be logged in to view attached files.
    #119548
    samoht
    Participant
    • Topics: 0
    • Replies: 46
    • Total: 46

    How can I add a slider as above (256 res MSB/LSB) with a value of -127 to +127?

    Currently I have tried adding ” / 64″ to the modulatorvalue and value but it does not seem to have any effect on the displayed values.

    In the panel of the slider there is a field where you can set the minimum value of the slider (you have set it to -127) and another field where you can set the maximum value (you have to set it to 127).
    In the field where the modulator value is calculated from incoming midi you have to add -127
    In the field where the midi value is calculated from the modulator value you have to add +127
    This all assuming your real midi values are going from 0 to 254

    #119550
    PossemoPossemo
    Participant
    • Topics: 14
    • Replies: 634
    • Total: 648
    • ★★★

    I guess you are talking about parameters like this:

    osc1 LFO1 depth cc 28:60 -127 to 127*

    Interesting, I have never seen that. I don’t see any other way than Lua scripting eiter. The script of dnaldoog should do the trick. I would have done it similar.

    Btw. this has not much to do with MSB/LSB. It’s just that cc60 takes over where cc28 ends.

    If you are thinking 7-bit msb/lsb that would look as follows:

    0-127 = MSB 0 / LSB 0 to 127
    128-255 = MSB 1 / LSB 0 to 127

    This may be hard to understand when using decimal notation. In binary it makes much more sense:

    This is 127: 01111111 (see the 8th bit is 0 thus msb is 0)
    This is 255: 11111111 (8th bit is 1)

    For a value up to 255 you need just 8 bits. So, if you have 7-bit lsb/msb split you will just need 1 bit for msb.

    • This reply was modified 3 weeks, 3 days ago by PossemoPossemo.
    #119552
    samoht
    Participant
    • Topics: 0
    • Replies: 46
    • Total: 46

    @Possemo:

    It’s also possible that cc 28 handles mdi values -127 to 0 (7bits) and cc60 handles 0 to 127 (also 7 bits)
    In this case, both cc’s are 7 bits. So there has te be then a constructor that is switching both CC’s at 0

    #119553
    samoht
    Participant
    • Topics: 0
    • Replies: 46
    • Total: 46

    @Dnaldoog:
    Possemo made me think and that is why I can now understand your code 🙂

    #119554
    An0n3mau5
    Participant
    • Topics: 1
    • Replies: 18
    • Total: 19

    Thank you all for the helpful responses.

    I imagine you are probably all on the right track, and also understanding this far more than I am haha.

    Thanks so much also dnaldoog for taking the time to look at the manual and write that code for me, that’s awesome!. I would love to ‘lualize’ this entire panel eventually but as someone else said in this forum, ‘Rome wasn’t built in a day’, and there is not enough day as it is with my job and a 4 month old here so it’s taking me quite a while to be able to grasp this stuff atm.

    Do i need to use the latest build of Ctrlr to open the attached file as nothing happens when I try to open it in 5.3.201? I will get round to figuring out how/where to enter the code when I have the time anyway so thanks again to all of you.

    Just for the sake of interest/posterity a sampling of the midi for this particular parameter looks like this>>>

    [20:15:54:000366]: Ch:[ 8] No:[ 17] Val:[ 0] RAW:[b7 11 00]
    [20:15:54:000366]: Ch:[ 8] No:[ 49] Val:[ 64] RAW:[b7 31 40]
    [20:15:54:000430]: Ch:[ 8] No:[ 17] Val:[ 1] RAW:[b7 11 01]
    [20:15:54:000430]: Ch:[ 8] No:[ 49] Val:[ 0] RAW:[b7 31 00]
    [20:15:54:000475]: Ch:[ 8] No:[ 17] Val:[ 1] RAW:[b7 11 01]
    [20:15:54:000475]: Ch:[ 8] No:[ 49] Val:[ 64] RAW:[b7 31 40]
    [20:15:54:000510]: Ch:[ 8] No:[ 17] Val:[ 2] RAW:[b7 11 02]
    [20:15:54:000510]: Ch:[ 8] No:[ 49] Val:[ 0] RAW:[b7 31 00]
    [20:15:54:000535]: Ch:[ 8] No:[ 17] Val:[ 2] RAW:[b7 11 02]
    [20:15:54:000535]: Ch:[ 8] No:[ 49] Val:[ 64] RAW:[b7 31 40]
    [20:15:54:000565]: Ch:[ 8] No:[ 17] Val:[ 3] RAW:[b7 11 03]
    [20:15:54:000565]: Ch:[ 8] No:[ 49] Val:[ 0] RAW:[b7 31 00]
    [20:15:54:000620]: Ch:[ 8] No:[ 17] Val:[ 3] RAW:[b7 11 03]

    Cheers guys!

    *Edit. Oh yeah dnaldoog I just realized looking at the code you provided, maybe you combined cc’s from 2 different LFO’s from the manual (if im reading it correctly. . .) and that maybe the script was for one of the LFO speed param’s from (0-255) which I ‘think’ I currently have working correctly with just expressions. You might have to disregard this as i’m probably completely wrong as I can barely parse (that/any) code, lol.

    • This reply was modified 3 weeks, 3 days ago by An0n3mau5.
Viewing 20 posts - 1 through 20 (of 43 total)
  • You must be logged in to reply to this topic.
There is currently 1 user and 36 guests online
igor.mathez
Forum Statistics
Threads: 2,417, Posts: 17,039, Members: 57,336
Most users ever online was 12 on January 22, 2019 3:47 pm
Do NOT follow this link or you will be banned from the site!