PG8X (inspired by the JX8P): new beta version uploaded

VST, AU, AAX, CLAP, etc. Plugin Virtual Instruments Discussion
Locked New Topic
RELATED
PRODUCTS
pg-8x

Post

EvilDragon wrote:Bizarre... Why would everything work fine with virtual MIDI keyboard, but not with an actual MIDI keyboard :/
Good thing is: I also have an AN1X. I will check it when I have time.
So far, I normally used my JX8P or my small Novation Remote as test keyboards.

Post

Ehehe. Well that's just stupid luck! :D


I love that blue plastic thing!

Post

EvilDragon wrote:Ehehe. Well that's just stupid luck! :D


I love that blue plastic thing!
It's a nice synth, but the MIDI implementation seems a bit messed up.
I had big problems searching for a bug in my plugin, when I tried to move two controls of the AN1X at the same time. My sliders on the plugin just would not move smoothly, jumping around, etc. I spent quite some time searching in my code, before I realized that the MIDI coming out of the AN1X was messed up. It just does not deal well with moving two knobs at the same time...

When I did the same with my Novation (which I bought because of that), everything was fine. That's when I stopped using the AN1X as 'master keyboard'.

But I will try again.

One other thing, which comes to my mind, and which I need to check again, is that thing that some synth's send NoteOn with velocity 0 when they actually want to say NoteOff. Both should be implemented, but there might be some bug hidden there, which I might not have noticed when using only one kind of keyboard for testing...

Post

Right, that might be. However I see Note On and Note Off messages in MIDI-OX, coming from AN1x...


And yes, I noticed some strange behaviour with MIDI on AN1x. Namely, when trying to use the ribbon controller on my Kurzweil PC3K8 to substitute the (very badly done) ribbon controller of AN1x (seriously, why doesn't it snap to middle, and why does it always mess with the parameter it was assigned to as soon as you touch it, it never snaps back to the actual parameter value set, but goes back to 0! Makes no sense, Yamaha!), I got a lot of glitches, as if it can't cope with the amount of MIDI data it receives (which wasn't really THAT much...)

Post

EvilDragon wrote:Right, that might be. However I see Note On and Note Off messages in MIDI-OX, coming from AN1x...
Yes, I think it is the Rolands, which send the velocity 0 noteOn events instead of NoteOff.

And yes, I noticed some strange behaviour with MIDI on AN1x. Namely, when trying to use the ribbon controller on my Kurzweil PC3K8 to substitute the (very badly done) ribbon controller of AN1x (seriously, why doesn't it snap to middle, and why does it always mess with the parameter it was assigned to as soon as you touch it, it never snaps back to the actual parameter value set, but goes back to 0! Makes no sense, Yamaha!), I got a lot of glitches, as if it can't cope with the amount of MIDI data it receives (which wasn't really THAT much...)
Yes, it's a shame they did not get this right. ALthough I have never played one, it seems they got it right on the CS-80. But well, that was a VERY different beast altogether...

Post

Spitfire31 wrote:
Hanz Meyzer wrote:Will Martin update this for OSX, too?
:dog: It's for Windows and Mac OS X since a l-o-n-g time back. The latest update was today…

/Joachim
Oh sorry, did not find the corresponding post in this 8k thread :hihi: Maybe martin could post the recent links always on post #1? Thanks, that would help confused people like me :clown:

Post

martin_l wrote:
EvilDragon wrote:Bizarre... Why would everything work fine with virtual MIDI keyboard, but not with an actual MIDI keyboard :/
Good thing is: I also have an AN1X. I will check it when I have time.
So far, I normally used my JX8P or my small Novation Remote as test keyboards.
OOOOHHHH... BE CAREFUL WITH THIS, MARTIN!

If you're using a JX8P as a master controller into your computer, be aware that the JX8P gives note-off the priority over sustain on the midi out port!
In other words,

On the JX8P:
Play a chord, press the sustain pedal, release the keys = sustain chord (as intended)

Using the JX8P as a controller:
Play a chord, press the sustain pedal, release the keys = notes stop on controlled device

Why?
The JX8P (and JX10) send out a CC #123 ("All Notes Off") command after the last key is released (which trumps the sustain pedal).

Meaning
It's not a very good idea to use a JX as a master controller, especially to test software! :scared:

I *also* have an AN1x. I'll check this out later too.

Post

lionscub68 wrote:Using the JX8P as a controller:
Play a chord, press the sustain pedal, release the keys = notes stop on controlled device

Why?
The JX8P (and JX10) send out a CC #123 ("All Notes Off") command after the last key is released (which trumps the sustain pedal).
Yes, this is a (stupid) behaviour common to many Roland keyboards. I have a MKB-1000 (which is a Master Keyboard Controller), and for some time, I thought Kontakt had a bug, because it didn't respond to the Release portion of the envelopes. However, when recorded, it responded well on sequenced data. Someday, I had a talk with some people of Native Instruments, and one of them asked me what keyboard I was using. "A Roland MKB-1000" I said. "Ah, that one send All Notes Off after releasing the notes - that's why Kontakt do shut up the notes".

"WHAT?" I thought. "You must be nuts". I came home, checked the data, and effectively, the damn thing was sending All Notes Off messages, instead of the regular Note Off messages.
Fernando (FMR)

Post

First of all, this plug-in is amazing! Great looking design and function.

I am hoping it will be my one-stop all-in-one solution for programming a newly-acquired JX-8P with a 1984 serial # that I found in really good shape (with working aftertouch even!).

Ideally, what I want to do is use the PG-8X VST to audition and organize banks of patches (existing and ones I program) for dumping into the JX-8P. I would also use PG-8X for song creation in Ableton Live away from the home studio and be able to later play those parts back through the real JX-8P (along with accompaniment from multiple tracks played through the VST).

I'm having a few tech issues right now that I am hoping someone who is trying to do similar things has solved.

I am using a M-Audio Uno USB MIDI interface on laptop running Windows 7 - from what I have read, it is supposed to be one of the good models for transmitting and receiving SYSEX. Testing both PG8X-1.04 and PG8X-09-11 in SaviHost and VSTHost, when I make patch changes in my JX-8P using the preset buttons or make parameter changes from the edit slider, this data is transferred to PG-8X. However, the reverse is not true: changes made to parameters in PG-8X don't modify the parameters in the JX-8P (and patch changes in PG8X have no result in the JX-8P either.)

For both 1.04 and 09-11, I set the switches for SYSEX on. I was testing with both VSThost and SaviHost as two low-overhead hosts that supposedly don't do any SYSEX filtering/stripping, and SYSEX is indeed being transmitted to PG-8X in both hosts from the JX-8P to the PG-8X VST, just not the other direction. Very strange, as I am getting two-way transmission in older standalone applications that interface with the JX-8P, such as two different templates in CTRLR, and PC-JX8P for Windows Version 3.3 Beta 4 (from 2003).

From reading through forum posts, I thought that this functionality was present, so I am wondering what I am doing wrong. I suppose a workaround would be to save a SYX file from PG-8X for a particular patch and transmit that to my JX-8P using Midi-Ox. However, I see no provision for saving SYX files from either 1.04 or 09-11.

Thanks in advance for any help anyone can provide!

Post

rkell wrote: I'm having a few tech issues right now that I am hoping someone who is trying to do similar things has solved.

I am using a M-Audio Uno USB MIDI interface on laptop running Windows 7 - from what I have read, it is supposed to be one of the good models for transmitting and receiving SYSEX. Testing both PG8X-1.04 and PG8X-09-11 in SaviHost and VSTHost, when I make patch changes in my JX-8P using the preset buttons or make parameter changes from the edit slider, this data is transferred to PG-8X. However, the reverse is not true: changes made to parameters in PG-8X don't modify the parameters in the JX-8P (and patch changes in PG8X have no result in the JX-8P either.)

For both 1.04 and 09-11, I set the switches for SYSEX on. I was testing with both VSThost and SaviHost as two low-overhead hosts that supposedly don't do any SYSEX filtering/stripping, and SYSEX is indeed being transmitted to PG-8X in both hosts from the JX-8P to the PG-8X VST, just not the other direction. Very strange, as I am getting two-way transmission in older standalone applications that interface with the JX-8P, such as two different templates in CTRLR, and PC-JX8P for Windows Version 3.3 Beta 4 (from 2003).

From reading through forum posts, I thought that this functionality was present, so I am wondering what I am doing wrong. I suppose a workaround would be to save a SYX file from PG-8X for a particular patch and transmit that to my JX-8P using Midi-Ox. However, I see no provision for saving SYX files from either 1.04 or 09-11.

Thanks in advance for any help anyone can provide!
Yes, I can confirm the problem, but have not found the source of it yet.
The strange thing is, that if I chain up two instances of the plugin in my host (reaper or vsthost), I can control one from the other. I was assuming so far that this indicates that the sysex should work, but at second thought, it might be automation data which is passed on.

In need to have a closer look in the debugger to see which routines are actually called, and to make sure that the SendSysex is actually called.

As for saving to sysex file, I am planning to implement it. Saving one preset already works (although not yet enabled in the beta), but saving a whole bank is a bit more tricky (due to some internal implementation reasons...), but I am sure that I will manage to do that as well.

A small Problem is, that the JX8P does not really support Sysex banks, but the workaround is to send the TONE sysex, followed by a WRITE TONE sysex command.

Cheers,
Martin

Post

What a pleasure this synth is to play, feels and sounds great.
thanks for sharing

Post

martin_l wrote: Yes, I can confirm the problem, but have not found the source of it yet.
The strange thing is, that if I chain up two instances of the plugin in my host (reaper or vsthost), I can control one from the other. I was assuming so far that this indicates that the sysex should work, but at second thought, it might be automation data which is passed on.

In need to have a closer look in the debugger to see which routines are actually called, and to make sure that the SendSysex is actually called.
Good to know that I am not crazy then, or have a bad cable or something!

When this is sorted out, that will be 95% of what I need. Saving the changes to an individual patch on the JX-8P once the PG-8X can send SYSEX to it will be great!
martin_l wrote: As for saving to sysex file, I am planning to implement it. Saving one preset already works (although not yet enabled in the beta),
Great to hear!
martin_l wrote: but saving a whole bank is a bit more tricky (due to some internal implementation reasons...), but I am sure that I will manage to do that as well.

A small Problem is, that the JX8P does not really support Sysex banks, but the workaround is to send the TONE sysex, followed by a WRITE TONE sysex command.
Yeah, that is a bit more of an issue I would think. Need to insert the WRITE TONE command for each patch in order inbetween the individual TONE commands. One temporary workaround I've done within Midi-Ox for a SYSEX file that has 32 tones one after the other is to insert a delay of a couple seconds in between each F7, and then I manually hit "Write" on the PG-8X and select the Tone button for each one in order - essentially just reversing the manual bulk dump that is required to get bank data extracted.

By the way, I've made a donation to your PayPal and would encourage everyone else who is getting value from this plugin to do the same!

Cheers,
Rik

Post

lionscub68 wrote:
EvilDragon wrote:
lionscub68 wrote:
EvilDragon wrote:I'm getting hanged notes in both Unison and Mono modes... I apologize if this was already stated.
I've stated the same thing about 6 months ago, fairly certain it's on Martin's list.
To verify, are you getting it when using a sustain pedal, and playing two notes?

Here's how to reproduce the error, in mono/unison mode:
play a note
press & hold sustain pedal
release first note
play a second note
release sustain pedal
release second note

the first note will continue to play, until you play that note again.

No sustain pedal used at all! I just play some notes in Poly mode, then switch to Unison or Mono mode and getting voices playing constantly. Very annoying.
Ah, you're getting it with mode switching as well. That's sort of identical to what I'm doing above (in mono mode). It's a note-off/note-priority issue.
Some update on the hanging note front:

First of all, it seems the two reported issues are unrelated.
I could not reproduce lionscub68's problems (neither with AN1X, JX8P or any other keyboard). I am still trying. However (!), I found some hanging notes in some situations when switching from or to POLY 2 mode (round robin) while using the pedal. I need to investigate that further.

The bit of good news is, that I found the reason for the problem reported by EvilDragon. It had to do with the fact that some keyboards send NoteOn with velocity 0 when they would like to say NoteOff. I translated that internally, but (quite annoyingly) I did this only for the primary voice in Unison modes, and not in the slave voices, which meant, that they actually never received a NoteOff event.

This will be fixed in the next beta, but I want to first make some more progress on lionscub68's problem, and also the reported crashes after loading SysEx.

Cheers,
Martin

Post

martin_l wrote:It had to do with the fact that some keyboards send NoteOn with velocity 0 when they would like to say NoteOff.
That's very common and is to support MIDI's "running status" feature, where additional data bytes sent after a status byte are interpreted to be new events of the same, previous status type. For dense streams of notes it reduces the bandwidth by up to half, by not needing to constantly switch between note-on and note-off statuses.

You should of course only be interpreting the MIDI in one single piece of code. The voice assigner should be called downstream from the MIDI interpreter and entirely unaware of the raw MIDI data.

Post

AdmiralQuality wrote: That's very common and is to support MIDI's "running status" feature, where additional data bytes sent after a status byte are interpreted to be new events of the same, previous status type. For dense streams of notes it reduces the bandwidth by up to half, by not needing to constantly switch between note-on and note-off statuses.
I guess the host will take care of the "running status" bit, and as a plugin, I always see correctly formed events (albeit with NoteOn, velocity 0), as I get them through the VSTMidiEvent structure.
AdmiralQuality wrote: You should of course only be interpreting the MIDI in one single piece of code. The voice assigner should be called downstream from the MIDI interpreter and entirely unaware of the raw MIDI data.
Yes, in the ProcessMidiMsg (a wdl routine), translate all messages into an internal format which then is sent to and processed by the voiceallocator. It was in this routine, where I passed on the wrong message to some voices.

Cheers,
Martin

Locked

Return to “Instruments”