diff --git a/.rive_head b/.rive_head
index efc3ff2..584b93d 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-99d28e1ac65672076b08f3a044218ec60268c4ae
+89053041aea1e6c8559afc4273c4e466e9ff547a
diff --git a/cg_renderer/premake5.lua b/cg_renderer/premake5.lua
index d54c7e5..a4a6062 100644
--- a/cg_renderer/premake5.lua
+++ b/cg_renderer/premake5.lua
@@ -43,11 +43,4 @@
             })
         end
     end
-
-    filter({ 'options:with_rive_text' })
-    do
-        defines({ 'WITH_RIVE_TEXT' })
-    end
 end
-
-newoption({ trigger = 'with_rive_text', description = 'Enables text experiments' })
diff --git a/include/rive/assets/audio_asset.hpp b/include/rive/assets/audio_asset.hpp
index c4f042f..bc8d89a 100644
--- a/include/rive/assets/audio_asset.hpp
+++ b/include/rive/assets/audio_asset.hpp
@@ -14,7 +14,6 @@
     bool decode(SimpleArray<uint8_t>&, Factory*) override;
     std::string fileExtension() const override;
 
-#ifdef WITH_RIVE_AUDIO
 #ifdef TESTING
     bool hasAudioSource() { return m_audioSource != nullptr; }
 #endif
@@ -25,7 +24,6 @@
 
 private:
     rcp<AudioSource> m_audioSource;
-#endif
 };
 } // namespace rive
 
diff --git a/include/rive/assets/file_asset.hpp b/include/rive/assets/file_asset.hpp
index a8ed721..22915f4 100644
--- a/include/rive/assets/file_asset.hpp
+++ b/include/rive/assets/file_asset.hpp
@@ -50,6 +50,7 @@
         }
     }
 
+    std::string uniqueName() const;
     std::string uniqueFilename() const;
 };
 } // namespace rive
diff --git a/include/rive/audio/audio_format.hpp b/include/rive/audio/audio_format.hpp
index ab73fe5..330dffe 100644
--- a/include/rive/audio/audio_format.hpp
+++ b/include/rive/audio/audio_format.hpp
@@ -1,4 +1,3 @@
-#ifdef WITH_RIVE_AUDIO
 #ifndef _RIVE_AUDIO_FORMAT_HPP_
 #define _RIVE_AUDIO_FORMAT_HPP_
 namespace rive
@@ -13,5 +12,4 @@
     buffered
 };
 }
-#endif
 #endif
\ No newline at end of file
diff --git a/include/rive/audio/audio_source.hpp b/include/rive/audio/audio_source.hpp
index b38984b..d6153a3 100644
--- a/include/rive/audio/audio_source.hpp
+++ b/include/rive/audio/audio_source.hpp
@@ -1,4 +1,3 @@
-#ifdef WITH_RIVE_AUDIO
 #ifndef _RIVE_AUDIO_SOURCE_HPP_
 #define _RIVE_AUDIO_SOURCE_HPP_
 
@@ -26,24 +25,41 @@
     // the AudioSource deletes.
     AudioSource(rive::Span<float> samples, uint32_t numChannels, uint32_t sampleRate);
 
+#ifdef WITH_RIVE_AUDIO
     rcp<AudioReader> makeReader(uint32_t numChannels, uint32_t sampleRate);
+#endif
 
     uint32_t channels();
     uint32_t sampleRate();
     AudioFormat format() const;
-    const rive::Span<uint8_t> bytes() const { return m_fileBytes; }
+    const rive::Span<uint8_t> bytes() const
+    {
+#ifdef WITH_RIVE_AUDIO
+        return m_fileBytes;
+#else
+        return rive::Span<uint8_t>(nullptr, 0);
+#endif
+    }
 
     const rive::Span<float> bufferedSamples() const;
-    bool isBuffered() const { return m_isBuffered; }
+    bool isBuffered() const
+    {
+#ifdef WITH_RIVE_AUDIO
+        return m_isBuffered;
+#else
+        return false;
+#endif
+    }
 
 private:
+#ifdef WITH_RIVE_AUDIO
     bool m_isBuffered;
     uint32_t m_channels;
     uint32_t m_sampleRate;
     rive::Span<uint8_t> m_fileBytes;
     rive::SimpleArray<uint8_t> m_ownedBytes;
+#endif
 };
 } // namespace rive
 
-#endif
 #endif
\ No newline at end of file
diff --git a/include/rive/factory.hpp b/include/rive/factory.hpp
index 1484c0f..417d4ef 100644
--- a/include/rive/factory.hpp
+++ b/include/rive/factory.hpp
@@ -7,6 +7,7 @@
 
 #include "rive/renderer.hpp"
 #include "rive/text_engine.hpp"
+#include "rive/audio/audio_source.hpp"
 #include "rive/refcnt.hpp"
 #include "rive/span.hpp"
 #include "rive/math/aabb.hpp"
@@ -58,6 +59,8 @@
 
     virtual rcp<Font> decodeFont(Span<const uint8_t>);
 
+    virtual rcp<AudioSource> decodeAudio(Span<const uint8_t>);
+
     // Non-virtual helpers
 
     rcp<RenderPath> makeRenderPath(const AABB&);
diff --git a/src/assets/file_asset.cpp b/src/assets/file_asset.cpp
index e6205ee..03a8766 100644
--- a/src/assets/file_asset.cpp
+++ b/src/assets/file_asset.cpp
@@ -20,19 +20,21 @@
     return Super::import(importStack);
 }
 
-std::string FileAsset::uniqueFilename() const
+std::string FileAsset::uniqueName() const
 {
     // remove final extension
-    std::string uniqueFilename = name();
-    std::size_t finalDot = uniqueFilename.rfind('.');
+    std::string uniqueName = name();
+    std::size_t finalDot = uniqueName.rfind('.');
 
     if (finalDot != std::string::npos)
     {
-        uniqueFilename = uniqueFilename.substr(0, finalDot);
+        uniqueName = uniqueName.substr(0, finalDot);
     }
-    return uniqueFilename + "-" + std::to_string(assetId()) + "." + fileExtension();
+    return uniqueName + "-" + std::to_string(assetId());
 }
 
+std::string FileAsset::uniqueFilename() const { return uniqueName() + "." + fileExtension(); }
+
 void FileAsset::copyCdnUuid(const FileAssetBase& object)
 {
     // Should never be called.
diff --git a/src/audio/audio_source.cpp b/src/audio/audio_source.cpp
index 8cc5b78..8701d9c 100644
--- a/src/audio/audio_source.cpp
+++ b/src/audio/audio_source.cpp
@@ -1,12 +1,14 @@
-#ifdef WITH_RIVE_AUDIO
 #include "rive/audio/audio_source.hpp"
+#ifdef WITH_RIVE_AUDIO
 #include "rive/audio/audio_engine.hpp"
 #include "rive/audio/audio_sound.hpp"
 #include "rive/audio/audio_reader.hpp"
 #include "rive/audio/audio_reader.hpp"
+#endif
 
 using namespace rive;
 
+#ifdef WITH_RIVE_AUDIO
 AudioSource::AudioSource(rive::Span<float> samples, uint32_t numChannels, uint32_t sampleRate) :
     m_isBuffered(true),
     m_channels(numChannels),
@@ -146,5 +148,15 @@
 
     return reader;
 }
-
+#else
+AudioSource::AudioSource(rive::Span<uint8_t> fileBytes) {}
+AudioSource::AudioSource(rive::SimpleArray<uint8_t> fileBytes) {}
+AudioSource::AudioSource(rive::Span<float> samples, uint32_t numChannels, uint32_t sampleRate) {}
+uint32_t AudioSource::channels() { return 0; }
+uint32_t AudioSource::sampleRate() { return 0; }
+AudioFormat AudioSource::format() const { return AudioFormat::unknown; }
+const rive::Span<float> AudioSource::bufferedSamples() const
+{
+    return rive::Span<float>(nullptr, 0);
+}
 #endif
\ No newline at end of file
diff --git a/src/factory.cpp b/src/factory.cpp
index 00b89c1..07e352a 100644
--- a/src/factory.cpp
+++ b/src/factory.cpp
@@ -26,3 +26,12 @@
     return nullptr;
 #endif
 }
+
+rcp<AudioSource> Factory::decodeAudio(Span<const uint8_t> span)
+{
+#ifdef WITH_RIVE_AUDIO
+    return rcp<AudioSource>(new AudioSource(SimpleArray<uint8_t>(span.data(), span.size())));
+#else
+    return nullptr;
+#endif
+}
