Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing notes #2

Closed
falkTX opened this issue Sep 10, 2019 · 14 comments · Fixed by #1088
Closed

Missing notes #2

falkTX opened this issue Sep 10, 2019 · 14 comments · Fixed by #1088
Labels
bug Something isn't working improvement Improve on existing functionality

Comments

@falkTX
Copy link
Contributor

falkTX commented Sep 10, 2019

Not sure if it happens in the JACK client or the SFZ engine, but compared to other sfz players I notice a definitive lack of notes played when using a few SFZs I have around.

This is one such case https://musical-artifacts.com/artifacts/460

Is there a polyphony limit? If so, it seems very low.

@paulfd
Copy link
Member

paulfd commented Sep 10, 2019

There is, it's hardcoded (well, compile-time constant, for now) at 64 voices, which should be healthy for simple pieces. There may be other issues. What do you use to compare?

@falkTX
Copy link
Contributor Author

falkTX commented Sep 10, 2019

I am just playing simple midi files, not a lot of notes in there really

@paulfd
Copy link
Member

paulfd commented Sep 10, 2019

One (big) issue that is appearing quickly is that the paths in the sfz file do not have the proper case, which is really not helping 😅 This is for the demo version at least.

The fact that you heard anything at all is surprising actually. The output for the command for me is:

Removed 1032 out of 1032 regions.
==========
Total:
        Masters: 1
        Groups: 250
        Regions: 0
        Curves: 0
        PreloadedSamples: 0

Which means nothing is loaded and no regions will be triggered.

@paulfd paulfd added bug Something isn't working improvement Improve on existing functionality labels Sep 10, 2019
@paulfd
Copy link
Member

paulfd commented Sep 10, 2019

Tracking the issues/required enhancements:

  • Gracefully handle non-conforming floating point values in the offset opcodes
  • Implement sustain_sw
  • Implement voice stealing
  • Implement rt_decay
  • Gracefully handle sample paths that are supposed case insensitive

For the last one, I'm tempted to not fix this and provide a script to change the samples. The only "proper" way to do this that I see would be to build an internal "case insensitive" representation of the root directory and map this to the real filesystem. But in this case you open up to conflicts and weird behavior if you have 2 files that actually differ by the case...

@paulfd
Copy link
Member

paulfd commented Sep 10, 2019

To get back to the original issue, one key problem would be voice stealing, since some samples actually last for 30s but are virtually silent, even before applying volume envelopes. Thanks for the report, I'll look into it ;-)

@paulfd
Copy link
Member

paulfd commented Sep 16, 2019

Seems a bit better now, except for the file names, I'll whip up a script to clean the SFZ file if I have some time tonight.

@paulfd
Copy link
Member

paulfd commented Sep 22, 2019

Script is up in scripts/sfz_sample_checks.py. Usage is indicated with --help although it's quite basic. I would encourage you to make a backup :)

For the demo file I have the only remaining issue is more related to playing the piano with the sustain_sw opcode behavior. I will investigate that separately in this issue #1. Does it work better for you now?

paulfd added a commit that referenced this issue Sep 25, 2019
Removed the LeakDetector so that it's only active for c++17 and above using static inlines
@paulfd
Copy link
Member

paulfd commented Jan 19, 2020

Hi there. Considering the version concerned by this issue is quite old I'd encourage you to check again and reopen an issue if needed! Closing this for now.

@falkTX
Copy link
Contributor Author

falkTX commented Apr 21, 2022

Finally coming back to sfizz, just tested latest git version but sadly the situation here has not improved.

My original description was a bit confusing, retesting sfizz the main issue I see is how note/voice stealing doesn't seem to work at all. With polyphony set to 8 voices, I can very easily put sfizz in a state where new notes are not heard. They "come back" after a while, my guess is when the previous samples have all decayed and stopped playing, freeing new notes to be played.

This should be quite easy to test: load up an sfz with long samples, set polyphony to the minimum, press a bunch of notes to hit that polyphonic limit, then try small note presses for a while and note how there is nothing playing until a few seconds pass.

If voice stealing is part of sfizz engine, it is just not doing its job correctly.

@falkTX
Copy link
Contributor Author

falkTX commented May 12, 2022

Hi, can we have this ticket reopened? or is it better for me to open a new one?

@paulfd paulfd reopened this May 13, 2022
@paulfd
Copy link
Member

paulfd commented May 13, 2022

There are different stealing algorithms, and I can make new ones. I'll test it out.

@paulfd
Copy link
Member

paulfd commented May 13, 2022

unsaved.project.-.REAPER.v6.57.-.Registered.to.Paul.Ferrand.Licensed.for.personal_small.business.use.2022-05-14.01-44-46.mp4

This is 8 voice polyphony, Lizard piano, sustain down, A/B-ing sfizz and sforzando. Which sfz did you try?

@falkTX
Copy link
Contributor Author

falkTX commented May 13, 2022

The VCO orchestra pack, from what I could tell any instrument with a tail would induce the issue.
Should I make a recording too?

@paulfd
Copy link
Member

paulfd commented May 14, 2022

I'll try tonight hopefully!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working improvement Improve on existing functionality
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants