Troubleshooting
Solutions to common issues with the BeatConnect SDK and build system.
Build Failures
CMake Configuration Failed
Error:
CMake Error at CMakeLists.txt:3 (project):
No CMAKE_CXX_COMPILER could be found.
Cause: Compiler not found on build machine.
Solution: This is a BeatConnect infrastructure issue. Contact support if this persists.
Error:
CMake Error: add_subdirectory given source "external/JUCE" which is not a directory.
Cause: JUCE submodule not initialized.
Solution:
# Initialize submodules locally
git submodule update --init --recursive
# Commit .gitmodules if missing
git add .gitmodules external/JUCE
git commit -m "Add JUCE submodule"
git pushError:
CMake Error: Unknown CMake command "juce_add_plugin".
Cause: JUCE not included before using its commands.
Solution: Ensure correct order in CMakeLists.txt:
# First: add JUCE
add_subdirectory(external/JUCE)
# Then: use JUCE commands
juce_add_plugin(MyPlugin ...)Compilation Failed
Error:
error: use of undeclared identifier 'MyClass'
Cause: Missing source file or include.
Solution: Check target_sources() includes all your .cpp files:
target_sources(MyPlugin PRIVATE
Source/PluginProcessor.cpp
Source/PluginEditor.cpp
Source/MyClass.cpp # Add missing files
)Error:
error: 'BinaryData.h' file not found
Cause: Binary resources not properly configured.
Solution:
juce_add_binary_data(PluginResources
SOURCES
Resources/image.png
)
target_link_libraries(MyPlugin PRIVATE PluginResources)Error:
Undefined symbols for architecture arm64:
"_someFunction", referenced from: ...
Cause: Missing library or arm64-incompatible dependency.
Solution:
- Check all dependencies support arm64
- Ensure all libraries are linked:
target_link_libraries(MyPlugin PRIVATE
missing_library
)Linking Failed
Error:
ld: library not found for -lsomething
Cause: External library not found.
Solution:
- Add library to external/ directory
- Configure in CMake:
add_subdirectory(external/something)
target_link_libraries(MyPlugin PRIVATE something)Error:
duplicate symbol '_main' in: ...
Cause: Multiple main() functions (often from Standalone format).
Solution: Ensure only one entry point, or disable Standalone:
FORMATS VST3 AU # Remove Standalone if not neededCode Signing Issues
Notarization Failed
Error:
[Notarization] Failed: The signature of the binary is invalid.
Cause: Binary was modified after signing, or unsigned code included.
Solution:
- Ensure all linked libraries are signed
- Don’t modify the bundle after building
- Check for unsigned frameworks:
codesign -vvv --deep YourPlugin.vst3Error:
[Notarization] Failed: The executable contains code that doesn't match the signature.
Cause: Hardened Runtime issue.
Solution: This is handled by BeatConnect. Contact support if this persists.
Windows Signing Failed
Error:
[Signing] SignTool Error: No certificates were found
Cause: Certificate issue on build system.
Solution: This is a BeatConnect infrastructure issue. Contact support.
GitHub Integration
Repository Not Found
Error:
Repository "username/repo" not found or not accessible.
Causes:
- GitHub App doesn’t have access
- Repository is archived
- Repository was deleted
Solution:
- Go to GitHub → Settings → Applications
- Configure BeatConnect app
- Add the repository to allowed list
Installation Not Found
Error:
GitHub installation not found for this account.
Cause: GitHub App was uninstalled.
Solution:
- Go to Creator Portal → Settings → Developer
- Disconnect GitHub
- Reconnect with “Connect GitHub”
Permission Denied
Error:
Resource not accessible by integration.
Cause: GitHub App permissions insufficient.
Solution:
- Re-authorize the GitHub App
- Grant necessary permissions
- For organization repos, ask admin to approve
License Activation
Activation Failed
Error:
{
"error": "max_activations_reached"
}Cause: License has reached maximum allowed machines.
Solution:
- Deactivate from an old machine
- Increase max_activations (for new keys)
- Contact creator for additional activations
Error:
{
"error": "code_revoked"
}Cause: License was revoked by creator.
Solution: Contact the plugin creator for a new license.
Error:
{
"error": "code_not_found"
}Cause: Activation code is invalid.
Solution:
- Check for typos in the code
- Verify code format (UUID)
- Confirm purchase was completed
Validation Fails After Working
Possible Causes:
- Network issue — Check internet connection
- License revoked — Check with creator
- Machine ID changed — Hardware upgrade
Solution:
// Handle validation gracefully
if (!activationManager.validate())
{
// Check if it's a network issue
if (!hasNetworkConnection())
{
// Allow temporary offline use
return useOfflineGracePeriod();
}
// Show reactivation dialog
showReactivationDialog();
}Build Quota
Quota Exceeded
Error:
{
"error": "quota_exceeded",
"message": "Monthly build limit reached"
}Solution:
- Wait for quota reset (first of month)
- Purchase additional builds ($5 each)
- Upgrade to Team tier for more builds
Build Counted Despite Failure
Policy:
- Your code errors → counts against quota
- Our infrastructure errors → doesn’t count
If you believe a build was incorrectly counted:
- Check build logs for error type
- Contact support with build ID
Plugin Loading Issues
Plugin Doesn’t Appear in DAW
Possible Causes:
- Wrong plugin folder
- Quarantine attribute (macOS)
- DAW cache needs refresh
Solutions:
macOS VST3:
# Check plugin location
ls ~/Library/Audio/Plug-Ins/VST3/
# Remove quarantine
xattr -d com.apple.quarantine ~/Library/Audio/Plug-Ins/VST3/YourPlugin.vst3
# Refresh DAW plugin cache
# In your DAW: Preferences → Plugins → RescanWindows VST3:
# Check plugin location
dir "C:\Program Files\Common Files\VST3\"
# Verify signature
Get-AuthenticodeSignature ".\YourPlugin.vst3"Plugin Crashes on Load
Diagnosis:
# macOS: Check crash logs
ls ~/Library/Logs/DiagnosticReports/*YourPlugin*
# View crash log
cat ~/Library/Logs/DiagnosticReports/YourPlugin*.crashCommon Causes:
- Missing dependency
- Null pointer in constructor
- Invalid parameter initialization
Debug locally:
// Add logging to constructor
DBG("Plugin constructor started");
// Check for null before use
if (somePointer != nullptr)
{
somePointer->doSomething();
}Audio Crackles or Glitches
Possible Causes:
- Buffer size issues
- Denormal numbers
- Heavy processing
Solutions:
// Add denormal protection
void processBlock(AudioBuffer<float>& buffer, MidiBuffer&)
{
ScopedNoDenormals noDenormals;
// Your processing...
}// Check buffer size
void prepareToPlay(double sampleRate, int samplesPerBlock)
{
// Don't assume buffer size
maxBlockSize = samplesPerBlock;
// Prepare for any buffer size up to max
delayBuffer.setSize(2, (int)(sampleRate * maxDelaySeconds));
}Network Issues
Build Callbacks Not Received
Possible Causes:
- Firewall blocking
- VPN interference
- Webhook URL incorrect
Solution: Ensure your firewall allows:
- Outbound HTTPS (port 443)
- Connections to api.beatconnect.com
API Timeouts
Error:
Error: Request timeout after 30000ms
Solutions:
- Check your internet connection
- Try again in a few minutes
- Use exponential backoff:
int retries = 3;
int delayMs = 1000;
for (int i = 0; i < retries; i++)
{
auto response = makeRequest();
if (response.isSuccess())
return response;
Thread::sleep(delayMs);
delayMs *= 2; // Exponential backoff
}Getting Help
Before Contacting Support
- Check build logs — Most errors are explained there
- Test locally — Ensure it builds on your machine
- Check this page — Most common issues are covered
- Search Discord — Others may have had the same issue
Information to Provide
When contacting support, include:
- Build ID —
build_abc123... - Error message — Exact error text
- Build logs — Download and attach
- Repository — Link (if public) or description
- Steps to reproduce — What you did before the error
Contact Options
- Discord: BeatConnect Community
- Email: support@beatconnect.com
- GitHub Issues: For SDK bugs