18
18
19
19
*/
20
20
21
+ #include " BinaryData.h"
22
+ #ifdef EMBED_PRESET
23
+ #include " EmbeddedPreset.h"
24
+ #endif
25
+
26
+
21
27
#include " PresetParser.h"
22
28
23
29
#include " ControlElementHost.h"
@@ -41,42 +47,39 @@ OSCControlAudioProcessor() :
41
47
filenamePlugin = filePlugin.getFileNameWithoutExtension ();
42
48
auto filenameLog = filenamePlugin + " .log" ;
43
49
50
+ namePlugin = filenamePlugin;
51
+
44
52
fileLogger = std::make_unique<FileLogger>
45
53
(filePlugin.getParentDirectory ().getChildFile (filenameLog),
46
54
" osccontrol-light debug log" , 0 );
47
55
48
56
Logger::setCurrentLogger (fileLogger.get ());
49
-
57
+
50
58
Logger::writeToLog (filePlugin.getFullPathName ());
51
59
Logger::writeToLog (filenamePlugin);
52
60
53
61
auto pathPreset =
54
62
SystemStats::getEnvironmentVariable (" OSCCONTROL_PRESET_PATH" , " " );
55
63
dirPreset = File (pathPreset);
56
64
57
- if (filenamePlugin != " osccontrol-light" ) {
58
- auto presetToLoad =
59
- filenamePlugin.fromFirstOccurrenceOf
60
- (" osc" , false , false ).trimCharactersAtStart (" -" );
61
-
62
- if (presetToLoad.isNotEmpty ()) {
63
- Logger::writeToLog (" presetToLoad: " + presetToLoad);
64
- namePlugin = filenamePlugin;
65
-
66
- if (pathPreset == " " ) {
67
- AlertWindow::showMessageBox
68
- (AlertWindow::AlertIconType::WarningIcon,
69
- String (" Error loading osccontrol-light with preset: " ) + presetToLoad,
70
- " When running osccontrol-light in headless mode "
71
- " for DAW integration, make sure that "
72
- " OSCCONTROL_PRESET_PATH is set properly in "
73
- " the environment!" ); // TODO freak out!!
74
- }
65
+ auto presetToLoad = namePlugin.fromFirstOccurrenceOf
66
+ (" osc-" , false , false ).trimCharactersAtStart (" -" );
67
+ Logger::writeToLog (" presetToLoad: " + presetToLoad);
68
+
69
+ if (presetToLoad != " osccontrol-light" && presetToLoad.isNotEmpty ()) {
70
+ if (!dirPreset.exists ()) {
71
+ auto message =
72
+ String (" Error loading osccontrol-light with preset: " ) + presetToLoad +
73
+ " When running osccontrol-light in headless mode "
74
+ " for DAW integration, make sure that "
75
+ " OSCCONTROL_PRESET_PATH is set properly in "
76
+ " the environment!" ;
75
77
76
- auto presetFile = locatePresetFile (presetToLoad);
77
- hasUserInterface = false ;
78
- initializeHeadless (presetFile);
78
+ throw std::runtime_error (message.toStdString ());
79
79
}
80
+
81
+ hasUserInterface = false ;
82
+ initializeHeadless (presetToLoad);
80
83
}
81
84
}
82
85
@@ -90,7 +93,7 @@ OSCControlAudioProcessor::
90
93
File
91
94
OSCControlAudioProcessor::
92
95
locatePresetFile
93
- (String namePreset)
96
+ (String const & namePreset)
94
97
{
95
98
auto filenamePreset = namePreset + " .yaml" ;
96
99
auto files = dirPreset.findChildFiles
@@ -109,11 +112,22 @@ locatePresetFile
109
112
void
110
113
OSCControlAudioProcessor::
111
114
initializeHeadless
112
- (File filePreset )
115
+ (String const & namePreset )
113
116
{
114
117
Logger::writeToLog (" initializeHeadless" );
115
118
116
- PresetParser preset (filePreset);
119
+ #ifdef EMBED_PRESET
120
+ int sourceSize = 0 ;
121
+ const void * sourceData =
122
+ osccontrol_embedded_preset::getNamedResource (
123
+ osccontrol_embedded_preset::namedResourceList[0 ], sourceSize);
124
+ MemoryInputStream inputStream (sourceData, sourceSize, false );
125
+ #else
126
+ auto presetFile = locatePresetFile (namePreset);
127
+ FileInputStream inputStream (presetFile);
128
+ #endif
129
+
130
+ PresetParser preset (inputStream);
117
131
118
132
oscSender = std::make_unique<OSCSender> ();
119
133
oscSender->connect (preset.getHost (), preset.getPort ());
0 commit comments