Author Topic: BASSMIDI: Portamento Control  (Read 8741 times)

DjTony

  • Guest
BASSMIDI: Portamento Control
« on: 13 Jan '07 - 10:05 »
Can you add this MIDI control? This is much used in recent MIDI Files!! Thanks!!

Ian @ un4seen

  • Administrator
  • Posts: 20424
Re: BASSMIDI: Portamento Control
« Reply #1 on: 13 Jan '07 - 12:51 »
Yep, that should be possible, but please upload some example files to test with :)

   ftp.un4seen.com/incoming/

Ian @ un4seen

  • Administrator
  • Posts: 20424
Re: BASSMIDI: Portamento Control
« Reply #2 on: 14 Jan '07 - 14:52 »
Here's an update to try...

   www.un4seen.com/stuff/bassmidi.dll

Apparently, there's no standard for portamento time (CC5) and it's up to the implementor to decide how quickly the pitch slides. I have nothing at hand to compare with, so I just guessed something that sounds decent with your test file. Let me know if it sounds wrong, and if so, please upload a recording of what it should sound like. If you have more examples that use portamento, please upload those too :)

DjTony

  • Guest
Re: BASSMIDI: Portamento Control
« Reply #3 on: 15 Jan '07 - 16:16 »
Hi Ian! I've put other files in FTP for examples! The mp3 are those MIDI FILES played with Roland VSC-88, the generalmidi-synthesis of reference!

Ian @ un4seen

  • Administrator
  • Posts: 20424
Re: BASSMIDI: Portamento Control
« Reply #4 on: 16 Jan '07 - 13:33 »
Good, I was hoping you'd have a file that uses CC84 :)

I've added support for that now too...

   www.un4seen.com/stuff/bassmidi.dll

I think all 3 example files are sounding about right now?

Btw, I've also disabled the transposing on percussion channels in the update above.

DjTony

  • Guest
Re: BASSMIDI: Portamento Control
« Reply #5 on: 16 Jan '07 - 15:35 »
Ok, Ian :)!! You are one step to the solution,but... :-\ something sound wrong too! Listen the glissato of the bass "LEMOZION.MID"! I'm inserting others some midi for examples! These midi use portamento on bass channels as "LEMOZION" to compare difference!

However thank you for kind attention! And thank you very much for TRANSPOSE event!!!

Ah, i forgot! Can you make a Stream Event that control TEMPO (BPM) Percents?

Ian @ un4seen

  • Administrator
  • Posts: 20424
Re: BASSMIDI: Portamento Control
« Reply #6 on: 17 Jan '07 - 15:17 »
Listen the glissato of the bass "LEMOZION.MID"! I'm inserting others some midi for examples! These midi use portamento on bass channels as "LEMOZION" to compare difference!

I guess it's a bit too quick? Here's another update to try...

   www.un4seen.com/stuff/bassmidi.dll

If it's still not quite right, could you please make a recording of just the bass channel? That'll make it easier to hear exactly how long the portamento is taking.

Ah, i forgot! Can you make a Stream Event that control TEMPO (BPM) Percents?

As I mentioned, there is an undocumented TEMPO event (event number 30) that you could try playing around with, which takes the same parameter values as tempo events in MIDI files (microseconds per quarter-note). Or did you want a simpler percentage (eg. 100%=normal) control? Either way, it'll obviously change the playback length, which could cause you problems if you're planning to display karaoke lyrics, ie. the positions returned by BASS_MIDI_StreamGetMarks will no longer be accurate.

DjTony

  • Guest
Re: BASSMIDI: Portamento Control
« Reply #7 on: 17 Jan '07 - 16:39 »
Ok, Ian! I've been insert some records examples in FTP! Listen and compare some difference! I've been listen also new dll and the bass glissato in "LEMOZION" playing a bit slowly now!!!  ;D ;D ;D

DjTony

  • Guest
Re: BASSMIDI: Portamento Control
« Reply #8 on: 17 Jan '07 - 16:44 »
For Tempo Event, don't worry! Even it will be developed later!! Thank you a lot ever!!  ;D :D ;)

Ian @ un4seen

  • Administrator
  • Posts: 20424
Re: BASSMIDI: Portamento Control
« Reply #9 on: 18 Jan '07 - 17:41 »
I think the best/only way to workout the "portamento time" properly is to take recordings at a sequence of settings. So please upload a recording of this file...

   www.un4seen.com/stuff/porta.mid

DjTony

  • Guest
Re: BASSMIDI: Portamento Control
« Reply #10 on: 18 Jan '07 - 19:05 »
Ok, Ian! I've been upload the recorded!! Listen it!! ;)

Ian @ un4seen

  • Administrator
  • Posts: 20424
Re: BASSMIDI: Portamento Control
« Reply #11 on: 21 Jan '07 - 14:18 »
I think I've worked out the portamento time "curve" of your device now, but are you sure the device's portamento implementation is the way that it's usually done? I was under the impression that portamento should slide the already playing note (if there is one), rather than start another one? For example, look at the CC84 info in the spec you posted...

Quote
* If a voice is already sounding for a note number identical to the Source Note Number, this voice will continue sounding (i.e., legato) and will, when the next Note-on is received, smoothly change to the pitch of that Note-on.

It's not doing that in your recording :)

DjTony

  • Guest
Re: BASSMIDI: Portamento Control
« Reply #12 on: 21 Jan '07 - 16:49 »
Ian, i think that the right way to make a good job is following the spec that i've posted!! Therefore, let you make this good job, if you want!!  ;)

Ian @ un4seen

  • Administrator
  • Posts: 20424
Re: BASSMIDI: Portamento Control
« Reply #13 on: 21 Jan '07 - 18:17 »
Are you saying your device's portamento is wrong then?

The problem is there doesn't seem to be a standard portamento implementation. So however it's implemented may not sound correct, depending on what the MIDI file was composed with. That being the case, I'd like to find out what the most common implementation is.

DjTony

  • Guest
Re: BASSMIDI: Portamento Control
« Reply #14 on: 22 Jan '07 - 09:13 »
No, Ian! The spec that i've posted are of Roland VSC-88, the record's device!! Then i suggest to WORK exclusively on PORTAMENTO TIME now!!  ;)

Ian @ un4seen

  • Administrator
  • Posts: 20424
Re: BASSMIDI: Portamento Control
« Reply #15 on: 22 Jan '07 - 15:29 »
I think the portamento time is already sorted...

   www.un4seen.com/stuff/bassmidi.dll

Now I just need to know if/when it should slide old notes or start new notes.

DjTony

  • Guest
Re: BASSMIDI: Portamento Control
« Reply #16 on: 22 Jan '07 - 16:35 »
> Portamento control (Controller number 84)

Status 2nd byte 3rd byte
  BnH      54H        kkH

n = MIDI channel number : 0H-FH (ch.1-ch.16)
kk = source note number : 00H-7FH (0-127)

* A Note-on received immediately after a Portamento Control message will change continuously in pitch, starting from the pitch of the Source Note Number.
* If a voice is already sounding for a note number identical to the Source Note Number, this voice will continue sounding (i.e., legato) and will, when the next Note-on is received, smoothly change to the pitch of that Note-on.
* The rate of the pitch change caused by Portamento Control is determined by the Portamento Time value

What don't you understand about this? However, i think that the last release of bassmidi sounds good!! Good job, Ian!!  :D

Ian @ un4seen

  • Administrator
  • Posts: 20424
Re: BASSMIDI: Portamento Control
« Reply #17 on: 23 Jan '07 - 17:45 »
What don't you understand about this?

I don't understand why your device didn't do what it says :)

DjTony

  • Guest
Re: BASSMIDI: Portamento Control
« Reply #18 on: 24 Jan '07 - 08:51 »
Don't listen how the device sound, but follow MIDI Implementation chart ONLY!! ;D Thew actual Portamento control sound good, and you can now adjust ONLY Portamento Time because it's sound a little FAST!!  :D :D

Ian @ un4seen

  • Administrator
  • Posts: 20424
Re: BASSMIDI: Portamento Control
« Reply #19 on: 26 Jan '07 - 14:44 »
I think the portamento implementation is completed now. It'll slide old notes when the channel is in MONO mode, and start new notes when it's in POLY mode (except CC84 which'll slide the matching old note if there is one)...

   www.un4seen.com/stuff/bassmidi.dll

DjTony

  • Guest
Re: BASSMIDI: Portamento Control
« Reply #20 on: 26 Jan '07 - 20:20 »
OOOOOOOOOH! A VERY-VERY-VERY GOOD JOB, Ian!!! I'm very impressed!!! Congratulation!! Now it sounds PERFECTLY!! GOOD!!  ;D ;)

And NOW!!! NRPN Controls IMPLEMENTATION!!!  :)