New test version

All about the development and use of SynthFont2
Admin
Site Admin
Posts: 671
Joined: Tue Mar 17, 2015 9:22 am

Re: New test version

Post by Admin »

Here is version "G":
https://dl.dropboxusercontent.com/u/173 ... t2020G.rar

Bugs fixed:
  1. Soundfonts cannot be changed while in MIDI IN mode - Fixed
  2. MIDI IN: "midiInOpen error: device already allocated" now works as it should
  3. MIDI OUT devices do not work at all with MIDI IN mode - has never worked. MIDI thru is not an option. Button disabled.
  4. Synth volume activity bar does not update in real time in MIDI IN mode - fixed
  5. MIDI IN mode static noise problems fixed. The mode is now to poll the internal MIDI IN buffer every 512 samples.
  6. MIDI data saved in the arrangement file was not compatible with earlier versions of SynthFont2 - fixed
  7. The virtual keyboard in the Pianoroll didn't work with the new MIDI IN engine - fixed
  8. MIDI channel could not be changed in the Events list - fixed
  9. Also fixed a few other minor bugs that may have cause problems for lots of people
Feature requests:
  1. Voice Limiter engine to favor eliminating voices by lowest velocity, un-held, and/or simply the oldest of voices - Not implemented. Good idea. Something for 2.0.2.1
  2. Checkbox in the "Play to file" dialog to "Ignore voice limit setting" - Implemented
  3. MIDI IN mode now remembers the last set of MIDI programs used when you restart the mode
ray890
Posts: 40
Joined: Tue Mar 17, 2015 4:27 pm
Contact:

Re: New test version

Post by ray890 »

First off, I got some more bug discoveries to list:

<=>2.0.1.1 Entering a custom sample rate then pressing the drop-down arrow beside it produces an "Out of system resources" error
=>2.0.1.2R Cut previous note short/off and legato settings under overlapped note handling takes the "Do Nothing" behavior
=>2.0.2.0G Note release curves are incorrect in Virtual Keys and MIDI IN modes, especially with DLS sound files

Speaking of the Note Release Curve bug, do you think it would be a better option to actually do away with alternative curves and set the "Soundblaster Standard" as default to simplify things? (or at least move this into "setup & options" and make it global rather than in "edit track")



Now, seeing as how the "poll512" function from 2.0.2.0F is now default in 2.0.2.0G just without the static issues. Just like the previous version, there is no difference with how MIDI In data is being picked up on this version and the rate of pickup is still relying on the "Playback Samples/Buffer" setting, therefore I don't know if this functionality is even useful.

Honestly, I think even with the "poll512" checkbox selected in the previous version "F" there was great improvement with the MIDI Input just because of the lack of MIDI Data randomly going missing. On top of that, changing "3072 Samples/Buffer" to "1024" does produce decent results for standard usage now, again I would still look forward to the re-structuring of the MIDI Input engine as you said earlier in a future version.

But for now, I think the default setting should be 1024 Samples/Buffer with 4 or 5 Buffers as I found that setting was stable even on my single core Intel Atom netbook.



The hanging bug still remains but I found a simple way to reproduce the bug inside of MIDI Input mode: Just open a multiple instrument MIDI file such as this one into Piano From Above (loopedback) and seek multiple times through the file quickly (or click+drag seek slider) to produce rapid "All-Notes-Off" messages along with the notes; after notes are done seeking certain long notes may cut out early and/or the audio will suddenly stop and hang.
I also found that I can simply let this file play half-way through (or even less) and the bug seems to trigger on it's own for me.

The MIDI OUT button still seems to be enabled inside of MIDI Input mode, both within "Edit Track" and the "Track list". As well, the "MIDI Out Error" white/hanging issue isn't fixed yet either.

Lastly, as another potential idea: Instead of artificially disabling support for <8000hz sample rate, there could just be an "Abnormal Sample Rate" warning/confirmation message that appears when the user inputs a custom sample rate below 8000hz or above 192000hz
Admin
Site Admin
Posts: 671
Joined: Tue Mar 17, 2015 9:22 am

Re: New test version

Post by Admin »

Version H:
https://dl.dropboxusercontent.com/u/173 ... t2020H.rar

- Entering a custom sample rate then pressing the drop-down arrow beside it produces an "Out of system resources" error - Fixed. But now you have to explicitly press the new [+] button to add the new rate to the list. Additionally, there is a new [-] button to delete a rate.
- Cut previous note short/off and legato settings under overlapped note handling takes the "Do Nothing" behavior - Fixed.
- Note release curves are incorrect in Virtual Keys and MIDI IN modes, especially with DLS sound files - I don't fully agree. The same decay curves were used. However, I followed your suggestion of removing the original (long) decay curve and setting the SoundBlaster curve as the default. Additionally, there is only one alternative, with a very short decay. Finally, this is a global setting that you can change in Setup only.

Some words about the poll512 function - which is not in use in this version. The rationale behind this function is to decrease the latency. Think about it this way: a note-on event arrives at time t. In the worst case scenario this time corresponds to just after the start of filling a playback buffer. The earliest moment for this note to start to play is when the next playback buffer is built, which at 1024 samples per buffer and 44100 Hz is t+23 ms. Polling the events list in the middle of filling a buffer will give the note a chance to instantiate at time t+(23/2) ms, i.e. somewhat earlier. As this structure currently adds some overhead, it is not in use now. Finally - there will ALWAYS be some latency. Even if I can instantiate a new note immediately upon arrival, I cannot write the data immediately to the output, it must be written to a playback buffer at first and then later on the buffer is sent to the output. So, the lowest theoretical latency with 1024 samples is 23 ms. ASIO improves it a little bit. BTW - ASIO actually works in this version.

Lastly - I cannot reproduce the window freezing cold gray upon trying to open a midi port that is not available (i.e. The Coolsoft Beta 2 - which I don't have and don't plan to install - I don't have access to it either). I have tested the midiInOpen function for example by feeding a non-existing port number to the function, which then returns and error code, which then lets SynthFont2H exit gracefully from the midi input mode. So, I need you to run DBWIN32 alongside with version H and ship me the text, if H doesn't work for you.
(https://dl.dropboxusercontent.com/u/1733095/DBWIN32.exe)
ray890
Posts: 40
Joined: Tue Mar 17, 2015 4:27 pm
Contact:

Re: New test version

Post by ray890 »

Alright,

- The new sample rate plus and minus system is very nice and I find it more intuitive, however when the (+) button is enabled, I don't see any reason for the (-) to be enabled at the same time therefore I think that should be disabled

- The legato function is fixed, but the "cut note short" or "the new note turns off previous note" options still doesn't seem to work yet

- The MIDI Port error issue doesn't seem to reproduce any debug information inside of DBWIN32, so here's a video of me reproducing it (using my hardware MIDI keyboard) instead: https://drive.google.com/open?id=0B2mBT ... jM3YTJLZ2M

- The situation with the hanging is much better, but there seems to be a bit of it still remaining; when I drag-seek a multi-instrument MIDI file with PFA (producing lots of All Note Off messages at once), the audio thread seems to stall for a period of time, while the bank number keeps flickering between different numbers (and DBWin32 is reporting a bunch of continuous "8860: GetSfOverride not found: x:xx" messages) then the audio continues after a burst of notes: https://drive.google.com/open?id=0B2mBT ... mpXWnBNOWM

- Actually, yes the note curve within the Virtual Keyboard is in fact incorrect when using MIDI Input or Virtual Keys; With SF2 files the decay curve is abnormally short, and with DLS files the note-hold volume curve is way too slow and there is zero decay time.

- Changing Sample Rate while MIDI Input mode causes pitch change in audio output

- I discovered that the medley this MIDI file seems to sound out of tune when using "GM.DLS"

- With this midi file and "gm.dls" or "GMGSx.sf2", the pitch seems to go all out of whack when the file is played with a lower sample rate like 8000hz as opposed to the regular 44100hz rate

- I think I discovered that the note release curve can be slightly longer with lower sample rates, I don't think this'll be the easiest to reproduce everywhere, but I seem to notice this with the MIDI file in the previous point ("ava sample rate.mid") using the "sc-55" soundfont (eg. 8000hz releases longer than at 44100hz)

- Did you intend to make MIDI Input channels default to MIDI Programs set by the MIDI file loaded in SynthFont? (As opposed to being all 000=Acoustic Grand Piano)
Admin
Site Admin
Posts: 671
Joined: Tue Mar 17, 2015 9:22 am

Re: New test version

Post by Admin »

Right!
Here is version "I":
https://dl.dropboxusercontent.com/u/173 ... t2020I.rar

+ "The new sample rate plus and minus buttons ..." - the minus button is now enabled only if a "non-standard" rate is chosen, i.e. one you have entered yourself.

+ The legato function, the "cut note short" or "the new note turns off previous note" options do NOT work in MIDI IN mode. These are extremely tricky to implement in this mode so I will leave it until later.

+ "The MIDI Port error issue doesn't seem to reproduce any debug information..." - OMG! I have been looking at MIDI IN - not MIDI OUT! Sorry! :oops:

+ "The situation with the hanging is much better, but there seems to be a bit of it still remaining ..." - Maybe, maybe not. I did some changes. Any better?

+ "Actually, yes the note curve within the Virtual Keyboard is in fact incorrect when using MIDI Input or Virtual Keys;" - Yes, yes, there was a flaw. Fixed.

+ "Changing Sample Rate while MIDI Input mode causes pitch change in audio output" - not allowed

+ I discovered that this MIDI file [angry birds] seems to sound out of tune when using GM.DLS" - it sound out of tune with ANY SoundFont or using Microsoft's player. Not my favorite tune.

+ "With this midi file [ava sample rate] and gm.dls or GMGSx.sf2, the pitch seems to go all out of whack when the file is played with
a lower sample rate like 8000hz" - Can't hear anything strange (my hearing IS bad). It naturally sounds very poor at 8000Hz, as you would expect.

+ "Did you intend to make MIDI Input channels default to MIDI Programs set by the MIDI file loaded in SynthFont?
(As opposed to being all 000=Acoustic Grand Piano)" - Yes, there was a bug introduced in version "H" when introducing the "preset history" for MIDI IN.
Elven Spellmaker
Posts: 37
Joined: Tue Mar 17, 2015 3:02 pm

Re: New test version

Post by Elven Spellmaker »

I get crash reports if I try to play that file with GM.dls (although SynthFont itself doesn't crash)
Admin
Site Admin
Posts: 671
Joined: Tue Mar 17, 2015 9:22 am

Re: New test version

Post by Admin »

Explicitly which file?
Elven Spellmaker
Posts: 37
Joined: Tue Mar 17, 2015 3:02 pm

Re: New test version

Post by Elven Spellmaker »

Admin wrote:Explicitly which file?
The Angry Birds file, hopefully you received the reports.
ray890
Posts: 40
Joined: Tue Mar 17, 2015 4:27 pm
Contact:

Re: New test version

Post by ray890 »

- When I mentioned the cut note short and turn off previous note thing, yes I did notice the MIDI In thing too, but I actually meant during playback/rendering, both of those two options still take the "Do Nothing - play both" functionality

- The hanging issue is no different in this version. Further investigation led me to find that this bug seems to be MIDI File specific, and this occurs when simply dragging piano from above's seek slider backwards even while the MIDI is paused. Basically there is a thread that maxes a thread's CPU Usage (as shown as 13% cpu usage on my 8-threaded cpu), while "8860: GetSfOverride not found: x:xx" messages are being generated in DBWin's console. I've managed to get this with several MIDI files, but heres a MIDI file where it stands out the most, producing the message everywhere within the file: https://drive.google.com/open?id=0ByIDT ... mVuT2ZRdWc

- Angry Birds MIDI, I don't get crashes with it personally, but I looked into this some more, and I think it has to do with how instruments in GM.DLS are rendered themselves in SynthFont where certain notes may be a tiny bit higher or lower in pitch, so far I've heard this with the Flute, Oboe, and Clarinet. Here's a direct comparison of Angry Bird's flute is rendered with gm.dls with synthfont compared to "Fruity LSD" VST in FL Studio and Microsoft Wavetable synth: https://drive.google.com/open?id=0B2mBT ... l9UOGVPVzg

- AVA Sample Rate, here, I've created a comparison between that MIDI being rendered at 44khz and 8khz with all the frequencies above 4khz cut off so you can hear what I mean, the problem is that the pitch is out of control on the 8khz version which seems to mean the sample rate setting is messing up rendering of certain kinds of MIDI effects: https://drive.google.com/open?id=0B2mBT ... zVvYmwwXzg

- Is that a yes to MIDI Input channels defaulting to arrangement's programs being the intended behavior?
Last edited by ray890 on Tue Jun 23, 2015 4:30 pm, edited 1 time in total.
Admin
Site Admin
Posts: 671
Joined: Tue Mar 17, 2015 9:22 am

Re: New test version

Post by Admin »

I got them alright!
Try this version:
https://dl.dropboxusercontent.com/u/173 ... 2020I1.rar
Post Reply