The New Profiler - Further Feedback and Issues
-
@It appears HISE doesn't want to compile my plugin (AU/VST3) with the new profiler enabled. The project will compile once I disable this flag:
HISE_INCLUDE_PROFILING_TOOLKIT=1
I'll see if Windows has the same behaviour but here is the Terminal output:
❌ Undefined symbols for architecture arm64 ❌ "hise::DebugSession::ProfileDataSource::ViewComponents::Manager::showOptions()", referenced from: ❌ ld: symbol(s) not found for architecture arm64 ❌ clang++: linker command failed with exit code 1 (use -v to see invocation)
Sequioa 15.1.1
XCode 16.1 -
@HISEnberg did you simply build HISE with it or do you have it set in the project's Extra Definitions fields?
-
@aaronventure Both in this context! HISE builds as a standalone but trying to build the plugin AU/vst3 fails. Not necessarily surprising since perfecto isn't designed for it!
-
@HISEnberg There's a "Compile with Perfetto" flag in Project Settings. Perhaps that's the one you need to tick if you want to built with the profiler?
Or maybe it hasn't been adjusted yet to work with the new profiler.
-
@aaronventure Nice suggestion, I had missed that flag. However the build fails still.
This is the template project:
HiseSnippet 927.3ocsV0uaaaCDmxIrXwccnEXO.B4uTJJLrZRryvvvxrcbqwZRMlxJFPAZ.sHkMQnHEnnZqwP.1SzdF5iTeCZOpOrjWb2BLV0ejf6ie28i2w6nmpUgrzTkF4z9xkILjy2hCVJMKFtfvknIi.83oZUDWvznAKSHooLJxwYmmYs6r2tn7uO9yCHBhLjUqBgdkhGxdAOlap0N8zekKDiIT1k73FdezoSBUxgJgJC3xN3tnDR30j4rKHV2ZgQOmjt.47XbOZDoGs+wc8YGdBs+S86e7ObT+dc6FQOwu+r9yNjPI852E4buynbiRGXHFVJxY2AJ5xfEp2IKRvq3o7YBlUvGE.YtP8XkfZOhVsngK3B5zphTJBhxz5R1NEkruGeNmxWoutz8vbCt0HZV.cZsN81YM542jdcaPuMPImFTZ2BJ8HbPnlmXpsX4y8wSjFlNh.8olTovWTq+tEdnB7PZ5DStlMVCBqP3Ak3m3B+4fercanWkZbeKQ6NyHup7Bh6O4VAeNyLTEmnjff29M7Y+ZzTV50FUxHtF.NFrErL0vhsXy6AZuFJGU3Lft.rPMebQJqCSdVsUGqEu8mJxlykuPMuCkXxyKWJ3RlaTlLzvURWkrAyrTWqDdgU79Iv4SjwNn8e11E93QtdkJrhEJseWtPyHzzNoFh1TDLtbtmeWa8pJWdIUFFQLjAjTVuiNXUHpCl8q7r04cZtgEXz1nsI3vIpBxMfP9+aeCn8NzE5jZskehGRDhYvvl2lJGPbaTttPYXuT5YKI609l1t+SSQQazVYrfUHazrcSf9eCnmLKdFS2ngj6Hbae8QH7WdDp4DdXQ4ogiJ4DI27xDl7KM2iJqo1wsRVAtZxG19txgsAYFiRh3vL0CvMJknbZ2byH52mX6iUAChK3ZBSa31igyH1agMmESx6gKu5m6aYyDNp2wT+9Uo8ud8oKWI7g2bpg8d6d4ps6vp4asEA1eonYBhY8kZ1U+kFf1zZaRraKjobyxlOM7+1lt6JEeDdJ2DtXybr0F3HzH9Zvwx2Gd.9rnHVnolf6hG+GecdL.8apLCrl3bBr2.Z93KxhCf2TCYP1kRlvNl3zxdgtPtqU1VABXRZtvmfuRi9VYmRi9UFQwjPs5pvhw.6KPeStFfSx7Wq2CetU10+127igGDuJLb8PcKfOcaAd31B7nsE3waKvdaKv9aKvS9uAZ+8J+RlQEWL1fPmO8r7MUNNmIIvMv7aqnOyKdcNY
-
@HISEnberg yeah, it's just a minor regression from my last update. I'll fix it soon.
I'll also change the API method to accept a JSON object that you can pass in to customize the profiling (which thread to record, how long, the trigger, basically anything you can adjust in the Profiler settings).
In your case you can exclude the audio thread callbacks to get rid of ~80% of the noise (and data size this way).
-
@Christoph-Hart Nice this sounds very promising, thank you!
-
@HISEnberg actually weird, I just checked and this function should not be compiled in the plugin. Are you sure you're using the latest HISE source code?
I've committed some other fixes and it's working for me now in the compiled plugin. I also added the possibillity of passing in a JSON object with the options (check the documentation for the method for an example):
-
Could the profiler be adapted to measure latency?
-
That seems like a natural and good feature.
-
nope, that's completely out of the scope of the profiler - it doesn't know anything about audio signals.
But I've added a small tool that will send an impulse through the signal chain and measure the delay. It's located at Tools -> Check latency. Just turn down your speakers and click on it, then it will measure the latency with the current sample rate and show a message with the value.
I tested it with a few test-patches (a simple delay or oversampling chains) and for me it works quite OK, but let me know if it chokes on "real-world" projects.
Open to suggestions what to do with the value (like including the samplerate / copy to clipboard or generate the code that sets the latency of the plugin).
-
@Christoph-Hart Cool looking forward to trying this. Some preliminary tests were showing the correct results (48 sample delay with the stock Limiter).
Also I am pretty sure I was using the most up-to-date version of HISE for my original post, but I just updated HISE again and it seems the profiler is compiling now so thanks!
-
@Christoph-Hart said in The New Profiler - Further Feedback and Issues:
Just turn down your speakers and click on it,
This should not be a thing; the tool should absolutely mute HISE's audio output while it's open and doings its thing.
-
@Christoph-Hart That was fast.
I'm confused how is that different from what I asked about?
-
@aaronventure it does but I can‘t guarantee that you have a delay somewhere or store the output in a custom buffer so that‘s an additional safety measure. It also says this before it actually puts the impulse in the buffer so you can‘t accidentally zap your ears out.
-
@Christoph-Hart Nice. All of these are good points that I hope no one has to learn by personal experience from.
-
@clevername27 said in The New Profiler - Further Feedback and Issues:
I'm confused how is that different from what I asked about?
It doesn't have anything to do with the profiler, it's just a simple function that inserts a impulse into the buffer and measures the delay to the first non-silent sample.
The profiler measures the time stuff takes on different threads with event dependencies so it's a different beast than that.
-
@Christoph-Hart Thank you.