-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_model_loading_no_juce.cpp
More file actions
110 lines (89 loc) · 4.14 KB
/
test_model_loading_no_juce.cpp
File metadata and controls
110 lines (89 loc) · 4.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//==============================================================================
// test_model_loading_no_juce.cpp
// Test ONNX model loading without JUCE to isolate JUCE interaction issues
//==============================================================================
#include <iostream>
#include <string>
#ifdef ONNX_RUNTIME_AVAILABLE
#include <onnxruntime_c_api.h>
#endif
int main() {
#ifdef ONNX_RUNTIME_AVAILABLE
std::cout << "=== ONNX Model Loading Test (No JUCE) ===" << std::endl;
const OrtApi* ortApi = OrtGetApiBase()->GetApi(ORT_API_VERSION);
// Step 1: Create environment
std::cout << "1. Creating environment..." << std::endl;
OrtEnv* ortEnv = nullptr;
OrtStatus* status = ortApi->CreateEnv(ORT_LOGGING_LEVEL_WARNING, "ModelTest", &ortEnv);
if (status != nullptr) {
std::cout << " ❌ Failed: " << ortApi->GetErrorMessage(status) << std::endl;
ortApi->ReleaseStatus(status);
return 1;
}
std::cout << " ✓ Environment created" << std::endl;
// Step 2: Create session options
std::cout << "2. Creating session options..." << std::endl;
OrtSessionOptions* sessionOptions = nullptr;
status = ortApi->CreateSessionOptions(&sessionOptions);
if (status != nullptr) {
std::cout << " ❌ Failed: " << ortApi->GetErrorMessage(status) << std::endl;
ortApi->ReleaseStatus(status);
ortApi->ReleaseEnv(ortEnv);
return 1;
}
// Set conservative options
status = ortApi->SetIntraOpNumThreads(sessionOptions, 1);
if (status) { ortApi->ReleaseStatus(status); }
status = ortApi->SetInterOpNumThreads(sessionOptions, 1);
if (status) { ortApi->ReleaseStatus(status); }
status = ortApi->SetSessionGraphOptimizationLevel(sessionOptions, ORT_DISABLE_ALL);
if (status) { ortApi->ReleaseStatus(status); }
std::cout << " ✓ Session options created" << std::endl;
// Step 3: Try loading the simple model
std::cout << "3. Loading simple model..." << std::endl;
std::string modelPath = "test_simple_compatible.onnx";
OrtSession* session = nullptr;
status = ortApi->CreateSession(ortEnv, modelPath.c_str(), sessionOptions, &session);
if (status != nullptr) {
std::cout << " ❌ Failed to load simple model: " << ortApi->GetErrorMessage(status) << std::endl;
ortApi->ReleaseStatus(status);
ortApi->ReleaseSessionOptions(sessionOptions);
ortApi->ReleaseEnv(ortEnv);
return 1;
}
std::cout << " ✅ Simple model loaded successfully!" << std::endl;
// Get model info
size_t numInputs = 0;
size_t numOutputs = 0;
ortApi->SessionGetInputCount(session, &numInputs);
ortApi->SessionGetOutputCount(session, &numOutputs);
std::cout << " Inputs: " << numInputs << ", Outputs: " << numOutputs << std::endl;
// Clean up simple model
ortApi->ReleaseSession(session);
// Step 4: Try loading the MIDI token model
std::cout << "4. Loading MIDI token model..." << std::endl;
std::string midiModelPath = "models/midi-model/onnx/model_token.onnx";
OrtSession* midiSession = nullptr;
status = ortApi->CreateSession(ortEnv, midiModelPath.c_str(), sessionOptions, &midiSession);
if (status != nullptr) {
std::cout << " ⚠️ MIDI model failed: " << ortApi->GetErrorMessage(status) << std::endl;
ortApi->ReleaseStatus(status);
} else {
std::cout << " ✅ MIDI token model loaded successfully!" << std::endl;
size_t midiInputs = 0;
size_t midiOutputs = 0;
ortApi->SessionGetInputCount(midiSession, &midiInputs);
ortApi->SessionGetOutputCount(midiSession, &midiOutputs);
std::cout << " MIDI Inputs: " << midiInputs << ", Outputs: " << midiOutputs << std::endl;
ortApi->ReleaseSession(midiSession);
}
// Clean up
ortApi->ReleaseSessionOptions(sessionOptions);
ortApi->ReleaseEnv(ortEnv);
std::cout << "\n✅ Test completed without JUCE interference!" << std::endl;
return 0;
#else
std::cout << "ONNX Runtime not available" << std::endl;
return 1;
#endif
}