Ofelia — это внешняя библиотека для среды визуального программирования Pure Data (Pd), которая интегрирует возможности фреймворка openFrameworks и язык сценариев Lua для создания аудиовизуальных приложений и мультимедиа-инсталляций в реальном времени. Проект предназначен для расширения возможностей Pd за счёт доступа к графическим и мультимедийным функциям, недоступным в стандартных объектах, и предоставляет мост между процедурным кодированием и визуальным патчингом. Ofelia разрабатывалась как инструмент для художников, музыкантов и исследователей, работающих с интерактивными системами, позволяя сочетать обработку сигналов в Pd с рендерингом и управлением сценой через openFrameworks и управлять логикой через Lua-скрипты.
В основе Ofelia лежит модель модульных объектов, которые реализуют создание графических контекстов, загрузку и отображение текстур, работу с шейдерами, рендеринг геометрии и взаимодействие с входными устройствами. Объекты Ofelia могут запускать и исполнять Lua-скрипты, что даёт гибкость при описании поведения сцен, обработки событий и управления параметрами в реальном времени. Благодаря использованию openFrameworks обеспечивается кроссплатформенность и доступ к библиотекам для работы с изображением, видео и аппаратными интерфейсами, тогда как интеграция с Pure Data сохраняет привычный подход к аудиосинтезу и обработке сигналов.
- Интеграция openFrameworks: доступ к рендерингу 2D/3D, работе с текстурами и шейдерами в контексте Pd.
 - Встраивание Lua: выполнение Lua-скриптов для управления логикой, событий и параметров в режиме реального времени.
 - Графические контексты: создание окон и offscreen-рендеринга, управление камерами и сценой.
 - Работа с мультимедиа: загрузка и воспроизведение изображений и видео, синхронизация с аудиосигналами Pd.
 - Взаимодействие с вводом: поддержка мыши, клавиатуры и подключаемых устройств для интерактивного управления.
 - Модульная архитектура: набор Pd-объектов для комбинирования графики и аудио в патчах.
 - Кроссплатформенность: совместимость с основными настольными ОС при условии сборки с соответствующими зависимостями.
 - Расширяемость: возможность создания пользовательских объектов и расширения функциональности через C++ и Lua.