gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

commit 94d4b614162e0cf341bcf06e31d2925914586c2e
parent f5e641416cdfce2bf2718ac409ff5fd5510a2c9d
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Sat, 22 Feb 2025 00:29:44 +0100

some smaller startup time improvement tweaks

Diffstat:
Msource/virusLib/romfile.cpp | 4++++
Msource/virusLib/unpacker.cpp | 13+++++++------
Msource/virusLib/unpacker.h | 2+-
3 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/source/virusLib/romfile.cpp b/source/virusLib/romfile.cpp @@ -297,7 +297,9 @@ bool ROMFile::loadPresetFile(std::istream& _file, DeviceModel _model) _file.read(reinterpret_cast<char*>(&single), sizeof(single)); m_singles.emplace_back(single); +#ifdef _DEBUG LOG("Loaded single " << i << ", name = " << getSingleName(single)); +#endif } if(multiCount) @@ -311,7 +313,9 @@ bool ROMFile::loadPresetFile(std::istream& _file, DeviceModel _model) _file.read(reinterpret_cast<char*>(&multi), sizeof(multi)); m_multis.emplace_back(multi); +#ifdef _DEBUG LOG("Loaded multi " << i << ", name = " << getMultiName(multi)); +#endif } } diff --git a/source/virusLib/unpacker.cpp b/source/virusLib/unpacker.cpp @@ -89,11 +89,11 @@ namespace virusLib auto presetFile = unpackFile(parts, presetFileId); if (!presetFile.empty()) { - presets.emplace_back(presetFile); + presets.emplace_back(std::move(presetFile)); } } - return Firmware{dsp, presets}; + return Firmware{std::move(dsp), std::move(presets)}; } std::string ROMUnpacker::getVtiFilename(const DeviceModel _model) @@ -133,18 +133,19 @@ namespace virusLib { chunk.data.resize(chunk.size); _file.read(chunk.data.data(), chunk.size); - result.emplace_back(chunk); + result.emplace_back(std::move(chunk)); } } return result; } - std::vector<char> ROMUnpacker::unpackFile(std::vector<Chunk>& _chunks, const char _fileId) + std::vector<char> ROMUnpacker::unpackFile(const std::vector<Chunk>& _chunks, const char _fileId) { std::vector<char> content; + content.reserve(1 << 20); - for (auto& chunk: _chunks) + for (const auto& chunk : _chunks) { if (chunk.name[0] != _fileId) { @@ -159,7 +160,7 @@ namespace virusLib // each chunk has 2 remaining bytes (checksum?) for (size_t i = 0; i < chunk.size - 2; i += 35) { - const auto idx = swap16(*reinterpret_cast<uint16_t*>(&chunk.data[i + 1])); + const auto idx = swap16(*reinterpret_cast<const uint16_t*>(&chunk.data[i + 1])); assert (idx == ctr); for (size_t j = 0; j < 32; ++j) { diff --git a/source/virusLib/unpacker.h b/source/virusLib/unpacker.h @@ -39,7 +39,7 @@ namespace virusLib static std::vector<Chunk> getChunks(std::istream& _file); - static std::vector<char> unpackFile(std::vector<Chunk>& _chunks, char _fileId); + static std::vector<char> unpackFile(const std::vector<Chunk>& _chunks, char _fileId); }; }