From 779f3c80ad905f1bc5ff6728f33a81a5a72edeb0 Mon Sep 17 00:00:00 2001 From: "Robin E.R. Davies" Date: Sun, 31 May 2026 02:46:12 -0400 Subject: [PATCH] Factory Prest Assets --- 2 | 0 CMakeLists.txt | 4 +- .../media/CabIR/Factory IRs/README.md | 0 .../NeuralAmpModels/Factory Models/README.md | 0 .../media/tone3000_thumbnails/40737.jpeg | Bin .../media/tone3000_thumbnails/54580.jpeg | Bin .../media/tone3000_thumbnails/59301.jpeg | Bin .../media/tone3000_thumbnails/60033.jpeg | Bin .../media/tone3000_thumbnails/67526.jpeg | Bin .../{presets => }/V3 Factory Presets.piBank | Bin 3492709 -> 3492700 bytes ...ory_extras.sh => build_factory_presets.sh} | 10 +-- .../presets/Factory Presets.piBank | Bin 4512921 -> 4512912 bytes default_presets/presets/index.banks | 1 - src/Banks.hpp | 6 ++ src/WebServerConfig.cpp | 60 ++++++++++-------- vite/src/pipedal/PedalboardView.tsx | 24 ++++--- 16 files changed, 60 insertions(+), 45 deletions(-) delete mode 100644 2 rename default_presets/{presets => }/Factory_Presets_Extra/media/CabIR/Factory IRs/README.md (100%) rename default_presets/{presets => }/Factory_Presets_Extra/media/NeuralAmpModels/Factory Models/README.md (100%) rename default_presets/{presets => }/Factory_Presets_Extra/media/tone3000_thumbnails/40737.jpeg (100%) rename default_presets/{presets => }/Factory_Presets_Extra/media/tone3000_thumbnails/54580.jpeg (100%) rename default_presets/{presets => }/Factory_Presets_Extra/media/tone3000_thumbnails/59301.jpeg (100%) rename default_presets/{presets => }/Factory_Presets_Extra/media/tone3000_thumbnails/60033.jpeg (100%) rename default_presets/{presets => }/Factory_Presets_Extra/media/tone3000_thumbnails/67526.jpeg (100%) rename default_presets/{presets => }/V3 Factory Presets.piBank (99%) rename default_presets/{add_factory_extras.sh => build_factory_presets.sh} (75%) delete mode 100644 default_presets/presets/index.banks diff --git a/2 b/2 deleted file mode 100644 index e69de29..0000000 diff --git a/CMakeLists.txt b/CMakeLists.txt index a279c18..dcc200f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,8 +67,8 @@ install ( ) install ( - DIRECTORY ${PROJECT_SOURCE_DIR}/default_presets - DESTINATION /etc/pipedal/config + DIRECTORY ${PROJECT_SOURCE_DIR}/default_presets/presets + DESTINATION /etc/pipedal/config/default_presets/presets ) message(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") diff --git a/default_presets/presets/Factory_Presets_Extra/media/CabIR/Factory IRs/README.md b/default_presets/Factory_Presets_Extra/media/CabIR/Factory IRs/README.md similarity index 100% rename from default_presets/presets/Factory_Presets_Extra/media/CabIR/Factory IRs/README.md rename to default_presets/Factory_Presets_Extra/media/CabIR/Factory IRs/README.md diff --git a/default_presets/presets/Factory_Presets_Extra/media/NeuralAmpModels/Factory Models/README.md b/default_presets/Factory_Presets_Extra/media/NeuralAmpModels/Factory Models/README.md similarity index 100% rename from default_presets/presets/Factory_Presets_Extra/media/NeuralAmpModels/Factory Models/README.md rename to default_presets/Factory_Presets_Extra/media/NeuralAmpModels/Factory Models/README.md diff --git a/default_presets/presets/Factory_Presets_Extra/media/tone3000_thumbnails/40737.jpeg b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/40737.jpeg similarity index 100% rename from default_presets/presets/Factory_Presets_Extra/media/tone3000_thumbnails/40737.jpeg rename to default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/40737.jpeg diff --git a/default_presets/presets/Factory_Presets_Extra/media/tone3000_thumbnails/54580.jpeg b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/54580.jpeg similarity index 100% rename from default_presets/presets/Factory_Presets_Extra/media/tone3000_thumbnails/54580.jpeg rename to default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/54580.jpeg diff --git a/default_presets/presets/Factory_Presets_Extra/media/tone3000_thumbnails/59301.jpeg b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/59301.jpeg similarity index 100% rename from default_presets/presets/Factory_Presets_Extra/media/tone3000_thumbnails/59301.jpeg rename to default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/59301.jpeg diff --git a/default_presets/presets/Factory_Presets_Extra/media/tone3000_thumbnails/60033.jpeg b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/60033.jpeg similarity index 100% rename from default_presets/presets/Factory_Presets_Extra/media/tone3000_thumbnails/60033.jpeg rename to default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/60033.jpeg diff --git a/default_presets/presets/Factory_Presets_Extra/media/tone3000_thumbnails/67526.jpeg b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/67526.jpeg similarity index 100% rename from default_presets/presets/Factory_Presets_Extra/media/tone3000_thumbnails/67526.jpeg rename to default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/67526.jpeg diff --git a/default_presets/presets/V3 Factory Presets.piBank b/default_presets/V3 Factory Presets.piBank similarity index 99% rename from default_presets/presets/V3 Factory Presets.piBank rename to default_presets/V3 Factory Presets.piBank index eb8baad525e0c0752d0aa809819bd20f38254bfc..b99f722531f3364c75954e2a8067c87c5de3ac80 100644 GIT binary patch delta 4318 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 delta 4321 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 delta 4971 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 G%l-pn&^=QC diff --git a/default_presets/presets/index.banks b/default_presets/presets/index.banks deleted file mode 100644 index 43e2843..0000000 --- a/default_presets/presets/index.banks +++ /dev/null @@ -1 +0,0 @@ -{"selectedBank": 1,"nextInstanceId": 1,"entries": [{"instanceId": 1,"name": "Default Bank"}]} \ No newline at end of file diff --git a/src/Banks.hpp b/src/Banks.hpp index 4522426..d67cf35 100644 --- a/src/Banks.hpp +++ b/src/Banks.hpp @@ -317,6 +317,12 @@ namespace pipedal bank.name(name); bank.instanceId(++nextInstanceId_); + if (afterId == -2) + { + entries_.insert(entries_.begin(), bank); + return bank.instanceId(); + + } for (size_t i = 0; i < this->entries_.size(); ++i) { if (entries_[i].instanceId() == afterId) diff --git a/src/WebServerConfig.cpp b/src/WebServerConfig.cpp index 73ae2ad..c326445 100644 --- a/src/WebServerConfig.cpp +++ b/src/WebServerConfig.cpp @@ -179,38 +179,44 @@ static fs::path GetTone3000ThumbnailFile(const fs::path& thumbnailDirectory, con return {}; } -int64_t ImportBankFile(PiPedalModel &model, const std::filesystem::path& filePath,uint64_t uploadAfter = -1) -{ - BankFile bankFile; +namespace pipedal::implementation { + + int64_t ImportBankFile(PiPedalModel &model, const std::filesystem::path& filePath,uint64_t uploadAfter = -1) + { + BankFile bankFile; - if (filePath.empty()) - { - throw std::runtime_error("Unexpected."); - } - if (IsZipFile(filePath)) - { - auto presetReader = PresetBundleReader::LoadPresetsFile(model, filePath); - presetReader->ExtractMediaFiles(); - - std::stringstream ss(presetReader->GetPresetJson()); - json_reader reader(ss); - reader.read(&bankFile); - } - else - { - std::ifstream f {filePath}; - if (!f.is_open()) { - throw std::runtime_error(SS("Unable to open file " << filePath)); + if (filePath.empty()) + { + throw std::runtime_error("Unexpected."); } - // legacy json format, no zip, no media files. - json_reader reader(f); - reader.read(&bankFile); - } - uint64_t instanceId = model.UploadBank(bankFile, uploadAfter); + if (IsZipFile(filePath)) + { + auto presetReader = PresetBundleReader::LoadPresetsFile(model, filePath); + presetReader->ExtractMediaFiles(); - return instanceId; + std::stringstream ss(presetReader->GetPresetJson()); + json_reader reader(ss); + reader.read(&bankFile); + } + else + { + std::ifstream f {filePath}; + if (!f.is_open()) { + throw std::runtime_error(SS("Unable to open file " << filePath)); + } + // legacy json format, no zip, no media files. + json_reader reader(f); + reader.read(&bankFile); + } + uint64_t instanceId = model.UploadBank(bankFile, uploadAfter); + + return instanceId; + } } + +using namespace pipedal::implementation; + class DownloadIntercept : public RequestHandler { PiPedalModel* model; diff --git a/vite/src/pipedal/PedalboardView.tsx b/vite/src/pipedal/PedalboardView.tsx index 82f14e3..dda8a51 100644 --- a/vite/src/pipedal/PedalboardView.tsx +++ b/vite/src/pipedal/PedalboardView.tsx @@ -161,8 +161,11 @@ const pedalboardStyles = (theme: Theme) => createStyles({ marginBottom: (CELL_HEIGHT - FRAME_SIZE) / 2, width: FRAME_SIZE, height: FRAME_SIZE, - border: isDarkMode() ? "1pt #555 solid" : "1pt #666 solid", - borderRadius: 6 + borderColor: "#777", + borderWidth: 2, + borderStyle: "solid", + padding: 1, + borderRadius: 8 }), selectedIconFrame: css({ @@ -178,8 +181,12 @@ const pedalboardStyles = (theme: Theme) => createStyles({ marginBottom: (CELL_HEIGHT - FRAME_SIZE) / 2, width: FRAME_SIZE, height: FRAME_SIZE, - border: isDarkMode() ? "1pt #FFF solid" : "1pt #333 solid", - borderRadius: 6 + borderColor: theme.palette.primary.main, + borderWidth: "2.0px", + borderStyle: "solid", + overflow: "hidden", + borderRadius: 8, + boxShadow: "0 0 6px 0px " + theme.palette.primary.main + "C0" }), borderlessIconFrame: css({ @@ -194,8 +201,9 @@ const pedalboardStyles = (theme: Theme) => createStyles({ marginBottom: (CELL_HEIGHT - FRAME_SIZE) / 2, width: FRAME_SIZE, height: FRAME_SIZE, - border: "0pt #666 solid", - borderRadius: 6 + border: "0px #666 solid", + borderRadius: 8, + overflow: "hidden", }), pedalIcon: css({ @@ -1042,7 +1050,7 @@ const PedalboardView = onDoubleClick={(e: SyntheticEvent) => { this.onItemDoubleClick(e, instanceId); }} onContextMenu={(e: SyntheticEvent) => { this.onItemLongClick(e, instanceId); }} > - this.getScrollContainer()} @@ -1050,7 +1058,7 @@ const PedalboardView = style={{ opacity: enabled ? 0.99 : 0.3 }} > -
+