Sorry for the code dump...
-
Bear with me, I somehow got mixed at multiple places and now I had to commit everything to the dev branch, but todays commit history gives serial killer vibes.
There are a few gems in there that will be documented over the span of the next days:
- complete rewrite of the profiling suite (basically a extended version of Perfetto with much tighter integration into HISE). Profile your scripts down to each line of code, quickly check the DSP tree for the worst runtime & see event dependencies across different threads (broadcaster events etc).
- complex sample group manager (the UX is still all over the place and some functions are missing but the basics are there)
- WebSocket server communication for fast data transfer between web view and HISE. Oh and the Webview should now work on Linux too - David let me know if that is the case and what needs to be done to make it REALLY work.
I tried to focus on it not breaking stuff (most of the profiling tools can be completely removed with a preprocessor flag which is disabled by default), but if something behaves nasty let me know. When it's dusted off and documented, we'll call this bad boy HISE 4.5.0...
I suggest we make these things the topics of the next HISE meetup :)
-
@Christoph-Hart said in Sorry for the code dump...:
I suggest we make these things the topics of the next HISE meetup :)
Nice, looking forward to it.
@Christoph-Hart said in Sorry for the code dump...:
WebSocket server communication for fast data transfer between web view and HISE. Oh and the Webview should now work on Linux too
Also nice, not sure what I'll use it for, but I'll give it a spin to see that it works.
-
Wonderful. I never thought to ask for better profiling but that's a great idea indeed
-
@Christoph-Hart Thanks and I love the energy, but respectfully and personally, would rather have a more reliable and consistent developer experience with the existing feature set. Just my $0.02.
-
@Christoph-Hart thank you!!
-
Getting some build errors
../../../../../HISE/hi_faust_jit/FaustJitNode.h:261:9: error: ‘NodeProfiler’ was not declared in this scope 261 | NodeProfiler np(this, data.getNumSamples());
../../../../../HISE/hi_faust_jit/../hi_faust/../hi_dsp_library/../hi_tools/hi_binary_data/hi_binary_data.h:41:88: error: static assertion failed 41 | #define LOAD_PATH_IF_URL(urlName, editorIconName) static_assert(sizeof(editorIconName) > sizeof(char*)); ids.addIfNotAlreadyThere(urlName); if (url == urlName) p.loadPathFromData(editorIconName, sizeof(editorIconName));
../../../../../HISE/hi_tools/../hi_dsp_library/../hi_tools/../JUCE/modules/juce_core/memory/juce_ContainerDeletePolicy.h:52:23: error: invalid application of ‘sizeof’ to incomplete type ‘choc::ui::WebView’ 52 | ignoreUnused (sizeof (ObjectType));
../../../../../HISE/hi_tools/../hi_dsp_library/../hi_tools/../JUCE/modules/juce_core/memory/juce_ByteOrder.h:81:21: error: call of overloaded ‘swap(long unsigned int&)’ is ambiguous 81 | return swap (value);
../../../../../HISE/hi_tools/../hi_dsp_library/../hi_tools/hi_standalone_components/ChocWebView.h:402:34: error: ‘class juce::XEmbedComponent’ has no member named ‘updateEmbeddedBounds’ 402 | #define resizeToFitCrossPlatform updateEmbeddedBounds
-
@Christoph-Hart I’m a new HISE user - I love it. I’ve been experimenting and compiling VSTs to try things out. I last built HISE shortly after the “fix compilation for real” commit 078a2487 from March 5 and it’s been smooth sailing.
I built HISE from fresh source to get in on this new serial killer agenda. I think it worked - I’m seeing fatal errors during plug-in compile that weren’t present before.
Terminal log attached, with cap blocks added to bracket the new warnings and errors.
-
@d-healey The build errors should be fixed now, but I don't have a linux machine at the moment. Can you check whether the webview shows up?
-
@Christoph-Hart This gem still seems to be active :D
struct SorryDavid: public Component { void paint(Graphics& g) override { g.fillAll(Colours::grey); g.setColour(Colours::black); g.drawText("Not there yet...", getLocalBounds().toFloat(), Justification::centred); } void doNothing(float){} void doNothing(void*){}; void doNothing(){}; };
Haha, love it
#elif JUCE_LINUX // Unfortunately I'm too stupid to figure out how to // use the Linux native handle wrapper - // that would be juce::XEmbedComponent using NativeComponentType = SorryDavid;
-
@Vitruvius I currently have a simmilar error on mac.
❌ /Users/julian/Documents/GitHub/HISE/hi_tools/hi_standalone_components/SliderPack.h:192:15: [31munknown class name 'ProfiledComponent'; did you mean 'PropertyComponent'?[0m 192 | public ProfiledComponent, [36m | ^~~~~~~~~~~~~~~~~[0m ⚠️ /Users/julian/Documents/GitHub/HISE/hi_tools/hi_standalone_components/SliderPack.h:191:20: [33mdirect base 'Component' is inaccessible due to ambiguity:[0m class hise::SliderPack -> Component [32m class hise::SliderPack -> PropertyComponent -> Component [-Winaccessible-base][0m
ProfiledComponent
class seeems to be missing on latest HISE version?I tried to compile my scriptnode and got this error from the current HISE version 1h ago.
-
@Straticah I built HISE again after @Christoph-Hart's post three above. I think commit 6971948 may have addressed enough of what I was seeing to allow successful plug-in builds again. What I'm building is just a learning project, though, focused on whatever limited functionality I'm working through from the documentation or that I've found here in the forum. It doesn't have the breadth or depth of production dev.
Where I had build-failing errors before, I now have warnings instead:
[CleverCrow - Shared Code] Compiling include_hi_tools_03.cpp ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/../hi_dsp_library/../hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/hi_dev/CodeEditorApiBase.cpp:728:24: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'uint32' (aka 'unsigned int') [-Wshorten-64-to-32] 728 | return Colour(label.hash()).withSaturation(0.5).withBrightness(0.7f).withAlpha(1.0f); | ~~~~~~ ~~~~~~^~~~~~ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/hi_dev/CodeEditorApiBase.cpp:1021:8: unused variable 'legend' [-Wunused-variable] 1021 | auto legend = b.removeFromTop(24); | ^~~~~~ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/hi_dev/CodeEditorApiBase.cpp:1226:7: unused variable 'isBase64' [-Wunused-variable] 1226 | auto isBase64 = [](uint8 c) | ^~~~~~~~ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/hi_dev/CodeEditorApiBase.cpp:1294:2: non-void function does not return a value [-Wreturn-type] 1294 | } | ^ [CleverCrow - Shared Code] Compiling include_hi_tools_02.cpp ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^ [CleverCrow - Shared Code] Compiling include_hi_tools_01.cpp ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/../hi_dsp_library/../hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/hi_standalone_components/ChocWebSocket.cpp:10:8: unused variable 'isBase64' [-Wunused-variable] 10 | auto isBase64 = [](uint8 c) | ^~~~~~~~ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/hi_standalone_components/ChocWebSocket.cpp:70:8: unused variable 'ok' [-Wunused-variable] 70 | auto ok = socket->waitUntilReady(true, 3000); | ^~ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/hi_standalone_components/ChocWebSocket.cpp:260:14: unused variable 'fin' [-Wunused-variable] 260 | bool fin = firstByte & 0x80; // FIN bit | ^~~ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/hi_standalone_components/ChocWebSocket.cpp:270:42: multiple unsequenced modifications to 'offset' [-Wunsequenced] 270 | payloadLength = (frame[offset++] << 8) | frame[offset++]; | ^ ~~ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/hi_standalone_components/ChocWebSocket.cpp:278:39: multiple unsequenced modifications to 'offset' [-Wunsequenced] 278 | maskingKey = (frame[offset++] << 24) | | ^ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/hi_standalone_components/ChocWebSocket.cpp:303:35: implicit conversion loses integer precision: 'size_type' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32] 303 | int numValues = payload.size() / 4; | ~~~~~~~~~ ~~~~~~~~~~~~~~~^~~ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_tools/hi_standalone_components/ChocWebSocket.cpp:342:5: non-void function does not return a value in all control paths [-Wreturn-type] 342 | } | ^ [CleverCrow - Shared Code] Compiling include_hi_streaming.cpp [CleverCrow - Shared Code] Compiling include_hi_snex_62.cpp ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_snex/../hi_dsp_library/../hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^ [CleverCrow - Shared Code] Compiling include_hi_snex_61.c [CleverCrow - Shared Code] Compiling include_hi_snex_60.c [CleverCrow - Shared Code] Compiling include_hi_snex.mm ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_snex/../hi_dsp_library/../hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^ [CleverCrow - Shared Code] Compiling include_hi_scripting_04.cpp [CleverCrow - Shared Code] Compiling include_hi_scripting_03.cpp ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_scripting/../hi_core/../hi_dsp_library/../hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^ [CleverCrow - Shared Code] Compiling include_hi_scripting_02.cpp [CleverCrow - Shared Code] Compiling include_hi_scripting_01.cpp ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_scripting/../hi_core/../hi_dsp_library/../hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_scripting/scripting/api/ScriptingApi.cpp:6824:8: unused variable 'dh' [-Wunused-variable] 6824 | auto& dh = getScriptProcessor()->getMainController_()->getDebugSession(); | ^~ [CleverCrow - Shared Code] Compiling include_hi_frontend.mm ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_frontend/../hi_core/../hi_dsp_library/../hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^ [CleverCrow - Shared Code] Compiling include_hi_dsp_library_02.cpp [CleverCrow - Shared Code] Compiling include_hi_dsp_library_01.cpp ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_dsp_library/../hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^ [CleverCrow - Shared Code] Compiling include_hi_core_05.cpp [CleverCrow - Shared Code] Compiling include_hi_core_04.cpp ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_core/../hi_dsp_library/../hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_core/hi_sampler/sampler/ComplexGroupManager.cpp:525:9: unused variable 'input' [-Wunused-variable] 525 | auto input = jlimit(0.0f, 1.0f, value); | ^~~~~ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_core/hi_sampler/sampler/ComplexGroupManager.cpp:532:9: unused variable 'input' [-Wunused-variable] 532 | auto input = jlimit(0.0f, 1.0f, values[0]); | ^~~~~ ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_core/hi_sampler/sampler/ComplexGroupManager.cpp:1264:17: loop variable 'l_' creates a copy from type 'juce::Identifier const' [-Wrange-loop-construct] 1264 | for(const auto l_: layerIds) | ^ [CleverCrow - Shared Code] Compiling include_hi_core_03.cpp [CleverCrow - Shared Code] Compiling include_hi_core_02.cpp ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_core/../hi_dsp_library/../hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^ [CleverCrow - Shared Code] Compiling include_hi_core.cpp ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_core/../hi_dsp_library/../hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^ [CleverCrow - Shared Code] Compiling PresetData.cpp [CleverCrow - Shared Code] Compiling Plugin.cpp ⚠️ /Users/spears/Documents/Projects/HISE/BuildHise/HISE/hi_core/../hi_dsp_library/../hi_tools/mcl_editor/code_editor/TextEditor.hpp:343:12: moving a local object in a return statement prevents copy elision [-Wpessimizing-move] 343 | return std::move(v); | ^