From bb328d882c2d4fd60bb690b4098f356619d1c704 Mon Sep 17 00:00:00 2001 From: Shane Dunne Date: Wed, 6 Mar 2019 10:08:40 -0500 Subject: [PATCH 1/3] Add .gitignore --- .gitignore | 320 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 320 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fbffd30 --- /dev/null +++ b/.gitignore @@ -0,0 +1,320 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +.DS_Store +Builds/ + +## JUCE library code +JuceLibraryCode/ + +## Build generated +build/ +DerivedData/ + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ + +## Other +*.moved-aside +*.xccheckout +*.xcscmblueprint + + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Typescript v1 declaration files +typings/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs +*.exe From a1fd9609490449d3eb3d20b6203eab1594166b99 Mon Sep 17 00:00:00 2001 From: Shane Dunne Date: Wed, 6 Mar 2019 10:16:23 -0500 Subject: [PATCH 2/3] Increase max voice count to 32 There are still only 8 pannings, because there are only 8 variation knobs in the GUI, so these are reused in cyclic fashion. --- OB-Xd.jucer | 126 ++++++++++++------------------------ Source/Engine/Motherboard.h | 15 +++-- Source/Engine/SynthEngine.h | 4 +- Source/Images/voices.png | Bin 3496 -> 5936 bytes Source/PluginEditor.cpp | 22 ++----- 5 files changed, 55 insertions(+), 112 deletions(-) diff --git a/OB-Xd.jucer b/OB-Xd.jucer index d8937ea..760c149 100644 --- a/OB-Xd.jucer +++ b/OB-Xd.jucer @@ -7,10 +7,11 @@ pluginManufacturer="Datsounds" pluginManufacturerCode="Dats" pluginCode="Obxd" pluginChannelConfigs="{0, 2}" pluginIsSynth="1" pluginWantsMidiIn="1" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="0" - pluginEditorRequiresKeys="0" pluginAUExportPrefix="" pluginRTASCategory="ePlugInCategory_SWGenerators" - aaxIdentifier="" pluginAAXCategory="" jucerVersion="4.3.0" companyName="2Dat" + pluginEditorRequiresKeys="0" pluginAUExportPrefix="" pluginRTASCategory="2048" + aaxIdentifier="" pluginAAXCategory="" jucerVersion="5.4.3" companyName="2Dat" companyWebsite="http://obxd.wordpress.com" companyEmail="" buildAUv3="0" - pluginIsMidiEffectPlugin="0" pluginAUMainType=""> + pluginIsMidiEffectPlugin="0" pluginFormats="buildVST,buildAU" + pluginCharacteristicsValue="pluginIsSynth,pluginWantsMidiIn"> @@ -66,11 +67,10 @@ vst3Folder="modules/vstsdk3"> + stripLocalSymbols="0" osxCompatibility="10.6 SDK" linkTimeOptimisation="0"/> + linkTimeOptimisation="0"/> @@ -88,92 +88,46 @@ - + - - + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/Source/Engine/Motherboard.h b/Source/Engine/Motherboard.h index d673c66..21d9201 100755 --- a/Source/Engine/Motherboard.h +++ b/Source/Engine/Motherboard.h @@ -48,8 +48,9 @@ public: bool vibratoEnabled; float Volume; - const static int MAX_VOICES=8; - float pannings[MAX_VOICES]; + const static int MAX_VOICES = 32; + const static int MAX_PANNINGS = 8; + float pannings[MAX_PANNINGS]; ObxdVoice voices[MAX_VOICES]; bool uni; bool Oversample; @@ -79,7 +80,7 @@ public: // pannings = new float[MAX_VOICES]; totalvc = MAX_VOICES; vq = VoiceQueue(MAX_VOICES,voices); - for(int i = 0 ; i < MAX_VOICES;++i) + for(int i = 0 ; i < MAX_PANNINGS;++i) { pannings[i]= 0.5; } @@ -363,11 +364,11 @@ public: if(Oversample) { float x2 = processSynthVoice(voices[i],lfovalue2,viblfo2); - vlo+=x2*(1-pannings[i]); - vro+=x2*(pannings[i]); + vlo+=x2*(1-pannings[i % MAX_PANNINGS]); + vro+=x2*(pannings[i % MAX_PANNINGS]); } - vl+=x1*(1-pannings[i]); - vr+=x1*(pannings[i]); + vl+=x1*(1-pannings[i % MAX_PANNINGS]); + vr+=x1*(pannings[i % MAX_PANNINGS]); } if(Oversample) { diff --git a/Source/Engine/SynthEngine.h b/Source/Engine/SynthEngine.h index 22862f1..c916590 100755 --- a/Source/Engine/SynthEngine.h +++ b/Source/Engine/SynthEngine.h @@ -166,7 +166,7 @@ public: } void setVoiceCount(float param) { - synth.setVoiceCount(roundToInt((param*7) +1)); + synth.setVoiceCount(roundToInt((param*(synth.MAX_VOICES-1)) +1)); } void procPitchWheelAmount(float param) { @@ -184,7 +184,7 @@ public: } void processPan(float param,int idx) { - synth.pannings[idx-1] = param; + synth.pannings[(idx-1) % synth.MAX_PANNINGS] = param; } void processTune(float param) { diff --git a/Source/Images/voices.png b/Source/Images/voices.png index c8af407f54e7869381af7ce889243faa4e42c543..fdaa2a3a709a4feb69820d982b9104d3a990afd3 100644 GIT binary patch literal 5936 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 literal 3496 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 L3&V2#JJJ6E2Kblx diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp index d50ec73..8693073 100755 --- a/Source/PluginEditor.cpp +++ b/Source/PluginEditor.cpp @@ -287,14 +287,8 @@ void ObxdAudioProcessorEditor::rebuildComponents() envelopeDetuneKnob = addTinyKnob(1353,300,ownerFilter,ENVDER,"Env",0.2); voiceSwitch = addNormalButtonList(124,338,17,ownerFilter,VOICE_COUNT,"VoiceCount",ImageCache::getFromMemory(BinaryData::voices_png,BinaryData::voices_pngSize)); - voiceSwitch ->addChoise("1"); - voiceSwitch ->addChoise("2"); - voiceSwitch ->addChoise("3"); - voiceSwitch ->addChoise("4"); - voiceSwitch ->addChoise("5"); - voiceSwitch ->addChoise("6"); - voiceSwitch ->addChoise("7"); - voiceSwitch ->addChoise("8"); + for (int i=1; i <= 32; i++) + voiceSwitch ->addChoise(String(i)); voiceSwitch ->setValue(ownerFilter->getParameter(VOICE_COUNT),dontSendNotification); legatoSwitch = addNormalButtonList(25,338,65,ownerFilter,LEGATOMODE,"Legato",ImageCache::getFromMemory(BinaryData::legato_png,BinaryData::legato_pngSize)); @@ -400,14 +394,8 @@ void ObxdAudioProcessorEditor::rebuildComponents() bendLfoRateKnob = addNormalKnobClassic(364,345,ownerFilter,BENDLFORATE,"ModRate",0.4); voiceSwitch = addNormalButtonListClassic(172,321,38,ownerFilter,VOICE_COUNT,"VoiceCount",ImageCache::getFromFile(skinFolder.getChildFile("voices.png"))); - voiceSwitch ->addChoise("1"); - voiceSwitch ->addChoise("2"); - voiceSwitch ->addChoise("3"); - voiceSwitch ->addChoise("4"); - voiceSwitch ->addChoise("5"); - voiceSwitch ->addChoise("6"); - voiceSwitch ->addChoise("7"); - voiceSwitch ->addChoise("8"); + for (int i=1; i <= 32; i++) + voiceSwitch->addChoise(String(i)); voiceSwitch ->setValue(ownerFilter->getParameter(VOICE_COUNT),dontSendNotification); legatoSwitch = addNormalButtonListClassic(65,321,95,ownerFilter,LEGATOMODE,"Legato",ImageCache::getFromFile(skinFolder.getChildFile("legato.png"))); @@ -511,7 +499,7 @@ void ObxdAudioProcessorEditor::sliderValueChanged (Slider* c) handleSParam(lfoAmt1Knob,LFO1AMT) handleSParam(lfoAmt2Knob,LFO2AMT) - handleSParam(pan1Knob,PAN1) + handleSParam(pan1Knob,PAN1) handleSParam(pan2Knob,PAN2) handleSParam(pan3Knob,PAN3) handleSParam(pan4Knob,PAN4) From 19d4350ac87937c3f03990eeda17125af0993d5a Mon Sep 17 00:00:00 2001 From: Shane Dunne Date: Sat, 31 Aug 2019 11:23:31 -0400 Subject: [PATCH 3/3] JUCE 5.4.4 compatibility (preliminary) I have only changed things which prevented compilation entirely. There are still many deprecations to deal with. --- OB-Xd.jucer | 20 ++++++++++---------- Source/PluginProcessor.cpp | 10 +++------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/OB-Xd.jucer b/OB-Xd.jucer index 760c149..42672a4 100644 --- a/OB-Xd.jucer +++ b/OB-Xd.jucer @@ -2,16 +2,17 @@ + pluginIsMidiEffectPlugin="0" pluginFormats="buildAU,buildStandalone,buildVST,buildVST3" + pluginCharacteristicsValue="pluginIsSynth,pluginWantsMidiIn" + buildStandalone="1" enableIAA="0"> @@ -63,14 +64,12 @@ - + - + + stripLocalSymbols="1" osxCompatibility="10.6 SDK" linkTimeOptimisation="0"/> @@ -129,5 +128,6 @@ + diff --git a/Source/PluginProcessor.cpp b/Source/PluginProcessor.cpp index e613396..745f512 100755 --- a/Source/PluginProcessor.cpp +++ b/Source/PluginProcessor.cpp @@ -491,7 +491,7 @@ const String ObxdAudioProcessor::getParameterName (int index) case FREL: return S("FilterRelease"); } - return String::empty; + return {}; } const String ObxdAudioProcessor::getParameterText (int index) @@ -755,7 +755,7 @@ void ObxdAudioProcessor::getStateInformation (MemoryBlock& destData) void ObxdAudioProcessor::setStateInformation (const void* data, int sizeInBytes) { - if (XmlElement* const xmlState = getXmlFromBinary(data,sizeInBytes)) + if (std::unique_ptr xmlState = getXmlFromBinary(data,sizeInBytes)) { XmlElement* xprogs = xmlState->getFirstChildElement(); if (xprogs->hasTagName(S("programs"))) @@ -782,14 +782,12 @@ void ObxdAudioProcessor::setStateInformation (const void* data, int sizeInBytes) } setCurrentProgram(xmlState->getIntAttribute(S("currentProgram"), 0)); - - delete xmlState; } } void ObxdAudioProcessor::setCurrentProgramStateInformation(const void* data,int sizeInBytes) { - if (XmlElement* const e = getXmlFromBinary(data, sizeInBytes)) + if (std::unique_ptr e = getXmlFromBinary(data, sizeInBytes)) { programs.currentProgramPtr->setDefaultValues(); @@ -801,8 +799,6 @@ void ObxdAudioProcessor::setCurrentProgramStateInformation(const void* data,int programs.currentProgramPtr->name = e->getStringAttribute(S("programName"), S("Default")); setCurrentProgram(programs.currentProgram); - - delete e; } }