Jump to content
Video Files on Forum ×

RBK Mixer BETA TESTERS WANTED (CT-X700 CT-X800 CDP-S350 Layer Balance Fix)


Recommended Posts

Looking for beta testers for the newest build of RBK Mixer -- see the most recent post in this topic for more info!!!

 

I was looking through @mrmr9494's .ac7 maker github page recently, and I saw that he has recently begun investigating the structure of the CT-X3000/X5000's .RBK (Registration bank) file formats, with some very interesting results to show for it. I just wanted to open up discussion of his findings here, as I think they MIGHT be of great interest for CT-X700 and CT-X800 users. Don't want to get anyone's hopes up, but it's definitely worth looking into.

 

What intrigues me the most is that the CT-X3000 .RBK files seem to have specific values for mixer parameters. This makes sense for the CT-X3000/X5000, as those models have a full blown mixer menu where every voice across all the different instrument blocks can be tweaked to change the volume, panning, reverb, chorus, delay sends etc, and all of these changes are storable and recallable via Registrations. The CT-X700 does not have any kind of mixer menu, and as all of us here on the forums know, the ability to change the volume of the upper1, upper2, and lower voices is one of the most commonly requested features for those models.

1478890787_RBKMixerParams.thumb.png.fe7c87c4f6825e32fd9cd70a53cd8f0c.png

 

So this has me thinking that perhaps the CT-X700/CT-X800 .RBK files have some provision for the volume of the upper1, upper2, and lower voices that aren't normally accessible through the panel controls, but can be modified by loading a specially tweaked .RBK file that can write these volume values via SysEx messages. Although pre-editing an RBK file every time you want to change the balance of your tones isn't ideal, it's certainly better than nothing and would be a more elegant standalone solution than the only other method I can think of (MIDI loopback).

 

Changing volume or other parameters of the Upper1, Upper2, and Lower voices via SysEx messages isn't entirely unheard of. For one, the CDP-S350 (a very close relative of the CT-X800) is compatible with the piano remote controller of Chordana Play for Piano. The remote controller can change the tones assigned to U1/U2/Lower remotely, as well as other handy stuff like whether or not a specific layer is affected by the sustain pedal. These are all operations that cannot be handled by MIDI CC or PC messages, but the Chordana Play for Piano app can make it happen (almost certainly by way of SysEx messages, as it's all handled via USB and the CDP-S350 can only communicate via MIDI message through the USB host port).

 

Second, the full MIDI implementation of the CT-X700/X800 does hint at the ability to control volume and effects sends via specialized SysEx messages. I imagine this is similar to how the Chordana app is making it work on the CDP-S350, although that model does not have its own expanded MIDI Implementation document so I can't be absolutely sure that this is the case.

875356348_X700ToneBlockSysex.png.c4ea04832e7af627e8d8a90841270b5f.png

 

Side note: I think they mean "Delay" send and not "Delete" send. Which would again be interesting, as the CT-X700/X800 cannot normally access Delay effects presets on their own (they're lumped in with the reverbs).

 

So, where do we go from here? Well, I have a CT-X700 and a CDP-S350, so if @mrmr9494 is willing to help out, I'm happy to generate some .RBK files from both machines for him to inspect and report back on. Once we know what to look for (or if it's even possible), we can try modifying an RBK file ourselves and see if it produces the desired result.

 

As far as what types of .RBK files would be most useful for testing and investigation, the CT-X700 and CDP-S350 manuals state that all the following parameters are saved in a Registration:

532301366_X700CDPS350StorableRegParams.png.df4e0ba570b25e41a834d6b01a568625.png

 

So I'm thinking I'll create an .RBK file for both the X700 and the CDP-S350, four individual regs in each bank file for a total of 8. When creating these Registrations, I'll mark down the exact values of all the parameters I stored for each slot in the bank, and while I'm putting these together, I'll try to include as many unique combinations of parameters as possible. For example, if Reg A has the Pedal effect set to Sustain, Reg B will have Pedal effect set to Sostenuto, Reg C will have Pedal effect set to Soft, and Reg D will have Pedal effect set to Rhythm stop/start. With all these unique values to compare against each other, hopefully these RBK files will be a bit more informative to investigate. Although if mrmr9494 thinks that going about it in a different way would yield better results, I'm happy to follow his suggestions.

Edited by Chandler Holloway
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Chandler, yes very happy to help out where possible. I've only just started looking at .RBK files so can't really say what can be achieved. That said, both your ideas here seem very likely to work out.

 

Can Chordana change mixer parameters (e.g. per-part volume, or turn parts on/off)? Lots of settings in the keyboard can be changed with SysEx messages, but not mixer parameters as far as I've seen. Tone parameters certainly can be changed in real time.

  • Like 1
Link to comment
Share on other sites

@mrmr9494

 

Chordana Play for Piano can enable and disable layers, change tones, and change the octave shift value for Upper1, Upper2, and Lower voices. I don't think enabling or disabling a layer/split is the same as turning it on/off in the Mixer menu on the CT-X3000/X5000, (where it mutes the split/layer voice but still keeps the layer active for stuff like MIDI output and polyphony etc). It can specify Reverb and Chorus effects (but not the depth of those effects), and it can set the global accompaniment volume from 0-127. Again, none of those seems like mixer parameters, so we might be out of luck for changing them in real time via SysEx.

 

Being able to change volumes via editing the .RBK file beforehand would still be a huge improvement, though, so your help in perusing these file formats is very much appreciated.

 

I'm going to start off with the CT-X700 bank files just to see if it'll work, then maybe we can look at the S350 if the experiment proves successful. I'm attaching two .RBK files to this post; one is the variety documentation bank, which contains 4 slots with varying parameters as we discussed before. I've included a word doc with organized tables showing which parameters I chose as well as some helpful notes that should help you make sense of the information better when you're looking through the structure of the RBK on the back end.

 

I've also included a Test bank, which has four identical Registrations we can tweak and test. These are just copies of the first Registration in the variety documentation bank spread to all four slots; if you think you've found the value for the Upper1, Upper2, and Lower volumes somewhere in the file, try tweaking those values in the test bank and send them back to me so I can try them out on my CT-X700. One example of a test

 

  1. Slot 1 could be the control, unchanged from stock
  2. Slot 2 would bring the volume of U1 (Stage Piano) up to max and make the other parts slightly quieter.
  3. Slot 3 would make U2 (Mellow Strings 1) max volume and make U1 and Lower slightly quieter.
  4. Slot 4 would make the Lower voice (Acoustic Bass 1) max volume and make U1 and U2 slightly quieter.

Just as a preliminary test to see if this is going to work out. I don't want to ask too much of you, especially considering you don't own one of these lower end CT-X models yourself. Thanks again for your help!

CT-X700 Testing Bank.RBK CT-X700 Variety Documentation Bank.RBK CT-X700 Registration Testing Info.docx

  • Like 1
Link to comment
Share on other sites

@Chandler Holloway, that's quite a comprehensive set of changes! I've made a start updating the Github document based on what you've sent. Lots more to do.

 

The file attached as 001.RBK should be the initial changes that you asked for above. My CT-X3000 rejects the file with the message "ERR WRONG DATA" which is a little bit worrying. Let me know how you get on with the CT-X700. I thought the files should be somewhat interoperable, but it appears maybe not.

 

In the .RBK you sent one thing that really jumped out was that the "Delay Type" setting was missing. (Only "Reverb Type" and "Chorus Type" are there). It suggests that Casio has deliberately nerfed delay in the X700, and so we might not be able to use RBK to do that. I'm wondering now if the CT-X700 even supports delay effects in rhythms? To test that out, would you try TAPTAP.AC7 on your CT-X700? It's a simple rhythm that alternates between a note with delay and then one without. Is there a difference? The difference should be super obvious if it's there.

001.RBK TAPTAP.AC7

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

WE'VE DONE IT!!!!!!!! Oh man, you have no idea how hard I popped off when I loaded in that registration bank and it worked PERFECTLY. What a joyous day for CT-X700 and CT-X800 users everywhere! Perfect way to end out the week. @vbdx66will definitely want to see this!

 

Yes, the CT-X3000/X5000 and the CT-X700/X800 RBK files are not cross-compatible with each other. Editing mixer values on the X5000 and swapping the file back over to the X700 was actually my first idea for solving the issue. That was like two years ago, haha. Just goes to show how long I've been dreaming of a solution to the problem.

 

I've tested the taptap Rhythm and the woodblock does properly alternate between Delay and dry, so no worries there. I'd imagine that there's no Delay type parameter because there's no Delay type menu on these models, and the Registration is just writing a stored value for whatever preset effects option is chosen in the Reverb or Chorus menu when a Registration is stored. The Delays are treated as a subset of the Reverbs, even though we know they are separate effects blocks on the AiX chips themselves. From your github page I can see that there are separate send values for Reverb/Chorus/Delay written to the RBK file, though, which is reassuring.

 

I'd imagine that any time Delay1 or Delay2 is selected in the Reverb type menu, there's still some Reverb being applied to the tone in addition to the delay. The tones don't sound completely dry of reverb when you select one of these two presets. The only way to enable Reverb and Delay effects and properly configure specific Reverb and Delay amounts would be to select Delay1 or Delay2 and then edit those send values in the RBK after the fact. Otherwise, the Delay type is probably (covertly) set to off somewhere along the way if you select one of the other standard reverbs in the Reverb menu. Limited control, but better than nothing.

 

I'm going to be away from my set-up for the weekend, but when I return on Monday I'll be sure to follow-up with some CDP-S350 registrations for you to look over (if/when you have the time). Thanks again, SO SO MUCH, for doing this and proving that it's possible. It's because of community members like you that this forum is such an awesome place to be! :grins:

 

 

 

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

That's really good that it's worked out. I really enjoy doing this stuff, and when it ends up being useful that's even better.

 

We can continue with the CDP-S350 next week. It could be internally quite different from the CT-X so interested to see how far we get.

 

The other thread I guess to come out of this is a question of how to make our finding useful to others, for example how a CT-X700 owner could create an .RBK file to set things up as they wish. It really needs a user-friendly software solution which is something I'm not at all skilled at. I'm more than happy making Python scripts -- here is the one for creating 001.RBK. Do you have ideas for approaches that would be better than Python?

  • Like 1
Link to comment
Share on other sites

Also I've had another look at the interchangeability of the X3000 vs. X700 registration .RBK files, and it turns out there are very few differences - mostly just the number of registrations (4x for X700, 8x for X3000) and then some superficial stuff in the "header" portions of the files. The actual data content (the Registrations themselves) are very interchangeable between the models.

 

That might open up some possibilities for ways we could use the files. Things I've checked:

 

- Rhythm numbers seem to be encoded the same between X700 & X3000.

 

- Reverb & Chorus are very similar:

 

X700 Reverb "Off"  = X3000 Reverb "Off"

X700 Reverb "Hall 3" = X3000 Reverb "Hall 3"

X700 Reverb "Plate 2" = X3000 Reverb "Plate 2"

X700 Reverb "Delay 2" = X3000 Reverb "Long Delay 1"

 

X700 Chorus "Tone" = X3000 Chorus "Tone"

X700 Chorus "Flanger 4" = X3000 Chorus "Flanger 4"

X700 Chorus "Light" = X3000 Chorus "Chorus 1"

X700 Chorus "Chorus 6" = X3000 Chorus "Deep"

 

It might be that the effects aren't actually identical between the two, just that they are encoded the same. Someone in Casio might have decided that "Chorus 6" was close enough to "Deep" that they could use the same encoding.

Link to comment
Share on other sites

Hi @Chandler Holloway and @mrmr9494 I couldn’t follow this topic from the beginning because 1) my CT-X800 is still away for repair so I cannot experiment for the time being and 2) on top of that I caught Covid19 but fortunately it is getting better now (pfeew).

 

Gret job done! One of my greatest frustrations with the CT-X800 (together with its fragile keybed) was the impossibility to adjust the volume of R1, R2 and L voices. It is also a pity that the Chordana app doesn’t work with the CT-X700/800 when it works seamlessly with the CDP-S350. So the fact that it is indeed possible to send Syssex messages to the keyboard using RBK files as a workaround is really great news.

It is already nice to be able to balance the various voices, and also to add some reverb or delay (I didn’t understand if it is to the rhythms or to the tones by the way?).

 

I am wondering to which extent the CT-X700/800 parameters can be tweaked using RBK files. Since some tones have DSP applied to them, it would be interesting to check whether some of those can be tweaked through RBK files. Since the DSP are pre-set and not tweakable on the CT-X700/800, a question I have been asking to myself is whether the CT-X800 has a fully-fledged DSP unit but no function menu to access it from the front panel. If this is the case, it could probably be possible to add some effects to tones using RBK... I am thinking e.g. of adding a Leslie to an organ, a Flanger to a lead synth or a distorsion effect to a guitar, to name but a few.

 

Right from the beginning, I am convinced that what the CT-X range in general and the CT-X700/800 in particular needs is a computer-based editor, like in the golden times of the Yamaha DX7 and Korg M1.

 

Take care of yourself guys,

 

Vinciane

Link to comment
Share on other sites

@vbdx66, too bad to hear about your brush with Covid, how long has it taken you to get through it so far? Good that things are already improving.

 

I can answer some of these questions. The idea is you would be able to control Volume levels and Reverb/Chorus effects for keyboard tones using RBK files. Whether Delay effects can be changed remains to be seen (Chandler found last week they can be controlled for rhythms, so that's at least a promising sign as far as it goes). It's nearly certain that DSP won't be able to be controlled using this method - DSP is entirely defined by the selected Tone, and so not having a method to load .TON files is a limitation on what can be done there.

 

I completely agree about the computer-based editor. While X3000/5000 have a pretty good built-in tone editor, there are lots of under-the-hood parameters that could be made available, and also the ability to tweak effects while "in the mix" (e.g., while editing a rhythm). Such an editor is also something I dream of. Unlikely that Casio will provide it though.

  • Like 1
Link to comment
Share on other sites

@mrmr9494Thanks for your concern. The disease declared itself about 10 days ago and I am beginning slowly to see the light, so to speak. 😎

 

As for the DSPs, I am pretty sure they can be accessed, even though this is not documented. My reasons to think so are twofold:

 

1) I noticed that when you play a tone with a DSP applied to it then move to the next tone with the “+” sign while the first tone is still playing, the keyboard switches to the next tone but the DSP from the first is applied until the notes which were played before the change of tone finish to decay.

2) It seems that the AiX chip is the same for the whole CT-X range (and the CDP-S350), so the problem of not having access to the DSPs is simply a question of “seeing” them one way or another. I am pretty sure Syssex could accommodate this. It would also be interesting to figure out if the rhythms do use some DSPs - this could give a workaround to control the DSPs since the CT-X700/800 can accommodate new rhythms. I am sure the Freeze functions might help, too, since it gives the possibility to change only some parameters while the others remain frozen. Also, if,the rhythms can control DSP, then it is pretty sure that this is through Sysex, since rhythms are basically MIDI files.

 

Which is exactly the way of controlling Delay in the CT-X700/800 rhythms? Does it involve AC7 or RBK files?

 

Vinciane

Link to comment
Share on other sites

On 3/21/2021 at 1:03 PM, mrmr9494 said:

The other thread I guess to come out of this is a question of how to make our finding useful to others, for example how a CT-X700 owner could create an .RBK file to set things up as they wish. It really needs a user-friendly software solution which is something I'm not at all skilled at. I'm more than happy making Python scripts -- here is the one for creating 001.RBK. Do you have ideas for approaches that would be better than Python?

 

Unfortunately that's not my area of expertise either. As always, knowing Casio users and their varying levels of tech-savviness, a simple GUI-based software packaged as a standalone executable is probably the best option, assuming Windows, Mac and Linux versions could all be compiled and maintained.

 

I think @shiihs' work on ReStyle is a great example of a friendly software utility, so his input would be valuable here. I think ReStyle would be a great template for the project in general; end users would export an RBK file from their CT-X, load it into the RBK Editor, tweak settings, and then export the modified file. No need to include any transfer protocols for direct import/export to the keyboard itself in the utility; Data Manager for CT-X and/or flash drive transfer are perfectly sufficient for that, and they have the added benefit of preventing you from importing a corrupt or incompatible file to the keyboard as extra protection against potential malfunction.

 

The most important features to target first are the ones that have absolutely no provision for change on the keyboard itself, and the obvious one is volume levels for the main (U1), layered (U2), and split (L) voices. Reverb/Chorus/Delay sends for each of those parts would be the natural next step, but since CT-X users can cycle between effects presets as it is, they have at least some control over it at present so it's a secondary priority.

 

Once those features are implemented properly, it would also be nice if the editor could "read" the specific tones assigned to U1, U2, and L for each registration slot and display the plain text name of the tone as part of the GUI. That would remind users of which specific tone they're raising and lowering the volume of within the editor. If it could also detect the stored values of Reverb/Chorus/Delay sends for each tone, that's even better.

 

I assume that all tones are at 127 volume (or some other static volume level across the board) by default (does your investigation of the RBK files I sent confirm this?), but I recall from my experience of selecting tones on the CT-X5000 that each tone will automatically write Reverb/Chorus/Delay send values to the mixer whenever it's selected. For example, even if you start with a Piano tone with a Reverb send of 40 on U1, switching U1 to a bass tone will automatically set the Reverb send to 0 or something really low because bass tones don't usually sound good with lots of reverb. So if the end user can see what these stored effects send values are when they load the RBK into the editor, they'd be able to tweak those values relative

 

Not much of a need to allow users to select a specific tone or tones within the editor, since I assume they would have already done that before exporting the RBK file they want to tweak. After all, how do you know you the volume balance of a specific set of layers needs fixing unless you've already tried them out with their default volume levels? Not a big priority to include, but it certainly wouldn't hurt I guess. 

 

It seems unlikely that someone's going to build a Registration "from scratch" in the RBK Editor; realistically speaking, you would have created a Registration you like on the keyboard itself, and if you decide it needs a few tweaks, then you bring it into the Editor to make the changes. There's no realtime editing aspect of it because this utility is acting as a middleman between the file transfer utilities and the keyboard itself, unlike a realtime software control panel a la Dexed or one of the many MIDIQuest editors for hardware synths.

 

Because there's this disconnect between making changes and hearing them on the keyboard, the last feature I can think of (completely non-essential, only to be implemented if/when everything else is rock solid) would be a quality of life thing to minimize the amount of times an end user might need to "re-edit" the RBK if they don't like the tweaks. Let's say the Registration I want to tweak is a Piano on U1, and Strings on U2. I bring it into the editor, set the piano volume to 100 and the strings volume to 90, and then export the RBK. When I play it on the keyboard, I find that I don't like the balance, so I have to tab back to the editor, set piano volume to 105 and the strings volume to 85 and try again. Now, because the editor lets you make changes to all four slots in the RBK file at once, the obvious solution would be to copy the layered piano/strings Reg to all four slots before exporting, and then make four sets of volume level tweaks in the editor before I export the RBK back to my keyboard (e.g. slot 1 has Piano at 100 and strings at 90, slot 2 has piano at 105 and strings at 85, slot 3 has piano at 105 and strings at 90, slot 4 has piano at 110 and strings at 85). That way I can try out all four different "variants" of the tweaked volume balance, decide which one I like the most, and then dump the rest.

 

However, you could speed up the process of making slight variations of the same tweaks by including a "generate variants" button with an adjustable +/- range. After setting the "baseline values" for Reg 1, you could check a box next to the other fields/sliders that you want to be "randomized" for slots 2-4 (volume, Reverb/Chorus/Delay sends), type in a number that represents the range within which said values can be randomized (+/- 20, for example) and then automatically distribute these slightly altered permutations of whatever changes were made for Reg slot 1 into slots 2-4. You'd also want to include some logic for the variant generator such that it can't create variants that are identical/too close to what was selected for Reg Slot 1, or variants that are identical to one of the other variants that have been generated for a different slot. You'd also probably want to make sure it doesn't create something that's within +/- 5 ticks of the original values, because a difference of one or two is way too subtle to hear anyway. This may also need to come with a "Copy Slot <x> to all other slots" option for convenience in case the end user forgot to do this on the keyboard itself, but again, this is not a feature that should be implemented until everything else is squared away.

 

I've attached a "baby's first HTML" mock-up of the GUI I had in mind. Don't know if it'll be useful for anyone, but if nothing else, it should be a good laugh. My knowledge of HTML is all based off what I can remember from the one "computers for dumb idiot kids" class I took back in high school, so I couldn't figure out of how to do stuff like collate the Registration slot tables into a 2x2 grid, but hey, maybe it'll be useful. Also attached an image of how I think it (very roughly) oughta look in MS Paint with some other notes. Stuff like this reminds me of why I'm better at marketing/product support than RnD, haha. I have asked a programmer friend of mine if he'd be interested in helping develop the utility, but he's pretty busy so I can't say that he'll be able to commit to the project as of yet.

 

On 3/21/2021 at 1:28 PM, mrmr9494 said:

X700 Reverb "Delay 2" = X3000 Reverb "Long Delay 1"

 

Interesting, I thought all the Delays and Reverbs were kept separate in the CT-X3000/X5000, but I just checked myself and you're right. There are four Delays in the Reverb menu of the CT-X3000, and even two in the Chorus menu as well. Unfortunately, it doesn't look like the CT-X700 could have access to a tempo sync'd delay because those are locked in the dedicated Delay menu. That would have opened up some fun pseudo-synthesis options, I'm sure.

 

Just to confirm whether the Reverb and Delay options are separate (and to help you find out what Delay1 is equivalent to in the CT-X3000), I've attached two more banks of CT-X700 Registrations. Delay1.RBK has Delay1 (Setting Value 18) selected and the Sequencer Saw sound (PC: 85, BS 15) assigned to U1 for all 4 banks. Delay2.RBK is the same, but with Delay2 (Setting Value 19) selected. I figure we can run this test on the two banks:

 

  1. Slot 1 has Reverb send for U1 at 0, Delay send for U1 at 0.
  2. Slot 2 has Reverb send for U1 at 127, Delay send for U1 at 0.
  3. Slot 3 has Reverb send for U1 at 0, Delay send for U1 at 127.
  4. Slot 4 has Reverb send for U1 at 127, Delay send for U1 at 127.

If Reverb and Delay1 use the same effects block on the CT-X700, then Slot 1 and 3 will sound identical and the matter will be settled. If Slot 3 has any effects applied to it at all, then we'll know that some Delay is configured for the CT-X700 by default, but the send values are always zero (that seems unlikely, as the default setting is much more likely to be Delay = 1 (Tone), which would default to nothing as Seq. Saw is not a DSP preset tone.

 

I have also attached the CDP-S350 RBK bank, with a similar "Variety Documentation Bank" and a "Testing Bank" so we can repeat the layer volume adjustment tests for posterity's sake. Interestingly, the CDP-S350 has no Delays in its Reverb menu at all. It still has a flanger in the chorus menu, though, which is nice. I think you'll be surprised by just how similar these boards are under the hood.

 

It may also be a good idea to split your documentation page for the RBK formats into two separate pages; one for the CT-X700/X800/CDP-S350, and another for the X3000/X5000. It's your call, of course, but I worry it's going to get pretty crowded if/when the structures of the RBK files on these different models start to diverge a bit more.

 

Thanks again for your help! Very excited for what the future holds.

 

 

RBK Editor Mockup Notes.png

RBK Editor Prototype v8.html CDP-S350 Testing Bank.RBK CDP-S350 Variety Documentaion Bank.RBK Delay1.RBK Delay2.RBK

Link to comment
Share on other sites

I was also thinking of @shiihs ReStyle application, it's very similar to what we are trying to achieve here. Although it seems that you already have the graphical design element sorted 🙂.

 

There's a lot to go through in your post, so let's start with Delay. Firstly the encoding:

 

       X700 Reverb "Delay 1" = X3000 Reverb "Delay".

 

Not surprising.

 

The attached file 002.RBK is as you suggest - starting with "Delay2.RBK" and adjusting the Reverb send and Delay send values for each slot exactly as you specified. When I loaded this into my CT-X3000 the Delay type became "Tone" but there is still a distinct delay effect on Slot 3 (quite a short one, similar but not the same as the "Short 2" setting). So your hypothesis that Seq. Saw would default to nothing doesn't seem correct, at least on the CTX3000. Let's see on the CTX700.

 

The file 003.RBK is a bit of an experiment. It is the same as 002.RBK but with the 0x5E atom (that's the one that controls Reverb/Chorus/Delay types) set to a CT-X3000 format. On the X700 the atom is only 2 bytes long (since it only has reverb & chorus), but on X3000 it's 3 bytes long. There are several things that might happen here:

 - The X700 will reject the file

 - It will accept it but do nothing

 - It will actually change the Delay to the specified type (it is "Long Pan 1" - very obvious if it's applied or not!)

002.RBK 003.RBK

Link to comment
Share on other sites

 

20 hours ago, vbdx66 said:

1) I noticed that when you play a tone with a DSP applied to it then move to the next tone with the “+” sign while the first tone is still playing, the keyboard switches to the next tone but the DSP from the first is applied until the notes which were played before the change of tone finish to decay.

Interesting observation. I've never noticed it before. For me it happens sometimes and not others, the difference being whether the tone being switched to has DSP or not. If yes, then the effect immediately changes, if not then it does as you say. Interesting do get this window into what the keyboard might be doing internally.

 

20 hours ago, vbdx66 said:

2) It seems that the AiX chip is the same for the whole CT-X range (and the CDP-S350), so the problem of not having access to the DSPs is simply a question of “seeing” them one way or another. I am pretty sure Syssex could accommodate this. It would also be interesting to figure out if the rhythms do use some DSPs - this could give a workaround to control the DSPs since the CT-X700/800 can accommodate new rhythms.

You're absolutely correct that SysEx can "see" the DSP settings and control them (although Casio doesn't document how to do this). It's just that the .RBK files can't.

 

Also, rhythms certainly use DSP but be aware that there are multiple effects engines. Keyboard tones use engine "DSP 1" while rhythm tones use "DSP 2 & 3". If your goal is to affect the DSP on keyboard tones then rhythms are probably not going to help you.

 

20 hours ago, vbdx66 said:

Which is exactly the way of controlling Delay in the CT-X700/800 rhythms? Does it involve AC7 or RBK files?

AC7 files. Possibly also SysEx message.

  • Like 1
Link to comment
Share on other sites

Well, I have good news and bad news.

 

The bad news is, all the Reg slots in 002 and 003 sound exactly identical. This would lead me to believe that Reverb/Chorus/Delay sends are completely inert on the CT-X700 models, even if the RBK file contains some provision for addressing those values. I made doubly sure I wasn't reimporting the original files or using the wrong bank, and indeed, they all sound exactly the same. I have taken the liberty of re-exporting the .RBK files from the CT-X700 so that you can review them again and see if any of the changes you made were preserved after the import -> re-export process.

 

Whatever extra data you appended to the 003 version was preserved upon import, even if it didn't affect anything. It shows up as 852 bytes in Data Manager, when all the "vanilla" registrations are 848. When I re-exported 003, it reverted back to the standard 952 bytes. 1221215200_DelayEditRBKTests.png.bf8c8f7f2912157ef2e58b6f8e63340f.png

 

No idea why the volume level changes work, but the sends don't. Both are mixer menu parameters on the CT-X5000, so they should be equally accessible/inaccessible on the CT-X700. The only behavior difference I can think of is that switching tones on the CT-X5000 will never cause the volume level of that part to change, but it will automatically apply new effects send values to the mixer menu to suit that tone. So, if I have Stage Piano assigned to U1 and lower the volume to 70, switching U1 to Acoustic Bass will still keep the volume level at 70. However, the reverb send for U1 will change from 30 on the piano to 007 on the bass (because lots of Reverb on bass sounds doesn't usually produce good results). So maybe the modified send values you have embedded in the RBK are being overwritten by whatever automatic change occurs when the Registration selects tones upon being recalled.

 

The other possibility has to do with the order of things in the RBK file according to your documentation. Reverb/Chorus/Delay sends appear earlier on in the file than the Reverb/Chorus/Delay type. Given that the CT-X700 does not have a mixer menu where you can set your own effects values, it's possible that selecting an effects preset will automatically apply specific send values to each tone you have selected. If the send values are being "read" first, and then the "type" values, it's possible that the send values associated with the type are overriding the changes you made to the RBK file. It would make some sense that the CT-X700 is specially programmed to always "defer" to the automatic effects send values that accompany each preset tone or preset effect, because it has no mixer menu to specify different values on its own.

 

I think the next best test would be to try modifying the Pan and Part On/Off values and see if those edits have an effect. These mixer parameters, like volume, are always retained, even when a tone switch occurs. If these experiments produce the desired results, then we'll know it must have something to do with the preset tones applying automatic send values.

 

So, here's an idea for two testing banks that will also be useful RBK files in their own right (if the edits work). We can release them as their own separate download and folks will immediately benefit from it. Take my testing bank with Piano/Strings/Bass from the first round of investigations and do the following:

 

RBK 1:

  1. Slot 1 has U1's part set to off, U2 and L on.
  2. Slot 2 has U2's part set to off, U1 and L on.
  3. Slot 3 has L's part set to off, U1 and U2 on.
  4. Slot 4 has U1 and U2 set to off, L set to on.

RBK 2:

  1. Slot 1 has U1 and L set to off, U2 set to on.
  2. Slot 2 has U2 and L set to off, U1 set to on,
  3. Slot 3 has U1, U2, and L all set to off.
  4. Doesn't matter.

This bank will not only be a test, but circumvents one of the main limitations of the CT-X700's MIDI control capabilities. It has Local control as an option in the function menu, but when you set local control to off, it silences all of the parts within the internal sound engine. That means U1, U2, L and the Rhythm/accompaniment sounds. However, if you wanted to silence one particular part (U2 for example) so that you can control an external synthesizer/VST/sound module via MIDI but still have control over the other parts in the internal engine, there's no way to do that normally because no mixer menu = no individual part on/off.

 

By disabling these parts in the mixer, we can use them for MIDI control purposes without having to give up local control over all the other parts. Slot 3 in the second bank will be useful if you want to only use the drums/accompaniment sounds, but control the other voices assigned to the keyboard via MIDI.

 

Even if the test fails, we can still replicate it by replacing part on/off with volume = 0, but we'll cross that bridge when we come to it.

 

As for pan, just take the Seq Saw bank and do one slot with it panned hard left (0 or -64), and another panned hard right (127 or +64). That should be enough to settle the matter.

 

ANYWAY, as for the good news; my programmer friend says he can help develop a GUI to complement your python scripts and package them as an executable for Windows/Mac/Linux. If you can provide something that runs from command prompt in Linux (or your operating system of choice, but judging from your Github that seems to be Linux), the two of us can handle the rest. I also plan to release some tutorial videos for it on my personal YouTube channel that will walk less tech savvy users through the process of using it, and covering some of the possible use cases. Volume level editing is the main priority right now, so that would be the best place to start in my opinion.

 

When you have time, of course. You've already done so much great work, please go at your own pace. He won't be able to start work on the GUI for another two weeks anyway, most likely. Not that you should consider that a deadline or anything. Again, no pressure. 😎

002 Re-Export.RBK 003 Re-Export.RBK

Link to comment
Share on other sites

Good news indeed that you have someone to assist with the software. I will do everything I can to help out, only hope I can keep up with your pace 😃.

 

I really don't know what's going on with the Reverb sends. The values are all in the registrations you export so there's no reason why the same information wouldn't be imported back in the opposite direction. So strange.

 

As you guessed, the re-exported 003 is indeed removing the extra bytes, so in fact the re-exported 003 is an identical file to 002. That's expected, the CT-X3000 does the same thing when it's given a CT-X5000 registration bank it will simply remove the stuff it doesn't understand.

 

Attached 2 more test files:

 

004.RBK 

  - this is identical to 002.RBK except re-ordered so that the reverb sends now come before the tone specifications. I don't expect it to make any difference since ordering hasn't made a difference before. Worth a try though.

 

005.RBK

  - uses your original (piano/string/bass) set-up but testing out pan and on/off:

       Slot 1: All parts panned center

       Slot 2: U1 hard left, U2 + L center

       Slot 3: U1 hard right, U2 + L center

       Slot 4: U1 off, U2 + L on.

 

I think it's worth trying out this simple test before your full suggestion. Very likely the X700 doesn't recognise On/Off so we will need to go for your Volume = 0 idea. The bank here works on the X3000 so let's try it on the X700. 

004.RBK 005.RBK

Link to comment
Share on other sites

004 and 006 still sound identical across all banks, and identical to the vanilla versions. Looks like effects sends are a no-go, unfortunately.

 

You were right about Part On/Off not working, good call on testing that first. We'll have to use volume 0 for the MIDI control RBKs instead, but it's all the same really. Happy to report that pan works perfectly, though. Slot 2 had U1 coming out the left speaker, Slot 3 had U1 coming out the right speaker.

 

Provided you turn off the internal reverb/chorus (which will always add some stereo width to the signal), this means you can now send sound out of the CT-X700/X800 via two separate outputs by hard panning certain sounds hard left and certain other sounds hard right. These separate mono outputs can then be processed separately via outboard effects if desired, very cool. Also means you can run it completely in mono by panning all sounds hard left and plugging a TS cable into the combined headphone/output jack, although I don't see much point in that.

 

It's likely that the 3 values you have labeled as "CDP-S only" on the RBK documentation page are related to Duet Mode. Those are the only settings that are stored in the CDP-S350's Registrations that I didn't include in my testing files or documentation, mostly because they're not very useful for anything (and they prevent you from configuring other settings that were more important for testing). You can turn Duet Mode to On (splits the keyboard in half and octave shifts the two sides so they play in the same range, allowing two students to sit at the same piano in a lab setting), Pan (hard pans each of the two keyboard halves to the left and right outputs so you can isolate the signals for audio routing in a classroom setting) or off (standard operation). This disables all effects and only allows you to assign one tone to the keyboard (U1), so it's not useful for performances or synthesis. I could make a testing bank on the CDP-S that cycles through the various Duet Mode options if you really want to look at it, though.

Link to comment
Share on other sites

Chandler, here are the final two banks that you suggested above, using Volume=0 instead of turning parts off since that appears to be how it must be done for CT-X700.

 

That seems to conclude the experimental portion of this project. We were able to get Mixer levels and pan controlled through registrations. Effects don't seem to work the way they do on CT-X3000/5000 for whatever reason. We didn't try Portamento, but from looking at the files it seems highly unlikely that functionality is implemented in the CT-X700 in a way that could be used. Is there anything else you wish to try out?

 

Thanks for noting about Duet mode. I'll note that in my documentation, I think no need for detailed testing.

 

I now have some work to do to get a Python library put together and expanding the documentation of what we've found. Will aim for a couple of weeks.

RBK1.RBK RBK2.RBK

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Yes, I'd say we've tested everything that could have real application to sound design or functionality. Can't really think of much else. If you wanted to test portamento or coarse tune per part, I'm happy to help with that, but otherwise, I look forward to seeing the results of your scripting.

 

Will the script automatically detect whether the RBK file is from the CT-X or the CDP-S350? Or will there just be two different versions of the program; one for the X700/X800 and a second one for the S350?

 

Do you think you'll be able to implement that feature I talked about a few posts back where it "detects" the tones assigned to U1/U2/L and displays the plain English names so end users know which sounds they're changing the volume of? The official patch scripts for the CT-X700/CT-X800 might be a good resource to help implement that, but if it's too complicated, I wouldn't worry about it. It's just an ease of use thing, same with that "generate variants" idea I had. Copy <x> slot to all slots or one specific slot would be handy either way, though.

 

The CDP-S350 doesn't have official patch scripts released, but it shares the majority of its tones with the CT-X models (even down to the PC/BS values used to select each tone). I could see about creating CDP-S350 patch scripts to add in the exclusive CDP-S tones myself over the next few weeks if that would help you. If there's a particular version of patch script that you would prefer to work with (for example, Cubase uses .txt format, Cakewalk uses .INS instrument definition files etc), I can prioritize that one.

 

Thanks again for everything! I'll be sure to credit you when I upload those volume 0 MIDI control banks in the Download section, along with instructions for use and maybe even a quick demo video if I can find time.

  • Like 2
Link to comment
Share on other sites

I think @Mclandy has some experience with "reading" PC and BS values in a Casio format file and cross referencing the patch scripts file to display the plain English names of tones from the CT-X series. I can't say exactly why he has this experience (wink wink), but perhaps there's some code you could borrow from a certain "tokenizer" to implement this in your own scripting.

Link to comment
Share on other sites

There's not really anything tricky to reading the patch file.  I use the Cubase patch file version, because it's very easy to parse.  Basically, it looks like this (this example is the first few lines from the CT-X700/800 patch file):

 

[cubase parse file]
[parser version 0001]
[comment] Created by Casio Computer Co., Ltd.
[creators first name] H
[creators last name] S
[device manufacturer] CASIO
[device name] CT-X700/800
[script name] CT-X700/800 Tones
[script version] 1
[define patchnames]
[mode] CT-X700/800
    [g1]PIANO
    [p2, 0, 1, 0] 1 StagePno
    [p2, 0, 3, 0] 2 GrandPno
    [p2, 1, 1, 0] 3 BrtPiano
    [p2, 0, 2, 0] 4 MlwPiano
    [p2, 0, 32, 0] 5 PopPiano
    [p2, 1, 2, 0] 6 Rock Pno
    [p2, 1, 3, 0] 7 DancePno
    [p2, 1, 4, 0] 8 LA Piano
    [p2, 0, 33, 0] 9 Tack Pno
    [p2, 0, 4, 0] 10 Mono Pno
    [p2, 3, 32, 0] 11 HnkyTonk
    [p2, 3, 33, 0] 12 Oct.Pno

......

The p2 "tokens" are the maps from bank/program to Tone name descriptions. The number immediately following p2 is the program number, the next is the Bank number (msb) and the last number is probably the LSB Bank, which is always 0 on CT-X.  Text following the brackets [] is the Tone number and name.  So all I really do is just parse this file and scan it to find the reference to a particular bank/program.  The only "fancy" thing I do in addition is "cache" the patches that I look up, so that subsequent references to the same patch are found much quicker (don't have to scan the whole list again).

 

I've attached the full file for CT-X700/800 here:

 

 

CT-X700_800_CB.zip

  • Thanks 2
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.   Restore formatting

  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.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.