# Introducción

Gracias por tu interés, éste documento está pensado para acompañarte paso a paso en la comprensión y el uso de nuestro entorno de desarrollo multiplataforma.

Por su naturaleza, **I/O** proporciona un conjunto completo de herramientas para insertar fuentes de audio, aplicar efectos, generar visualizaciones y más, todas éstas operaciones se ejecutan dentro de un contexto, concebido para permitir un enrutamiento dinámico y modular.

Las operaciones se realizan mediante **nodos**, que se enlazan para conformar un **grafo de procesamiento**. Estos nodos se organizan en cadenas simples o redes complejas, conectando sus entradas y salidas para establecer flujos personalizados.

El procesamiento comienza con una fuente que entrega muestras en intervalos de tiempo extremadamente pequeños —*a menudo decenas de miles por segundo*—. La salida de cada nodo puede enviarse a otros que procesan la señal, permitiendo rutas sofisticadas.

#### Comenzando con I/O

Accede rápidamente a los contenidos esenciales para dar tus primeros pasos.

{% hint style="info" %}
Introducción a la arquitectura y el flujo de procesamiento.
{% endhint %}

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>Fundamentos</strong></td><td><a href="https://4056083014-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl91JkbFLHxUtJSPZWNOl%2Fuploads%2Fg1BSmLJmaPLGX1Hw1vK5%2Fhorizontal.png?alt=media&#x26;token=be64e464-044f-4dfb-a175-265dbc98207c">horizontal.png</a></td><td><a href="fundamentos/conceptos-fundamentales">conceptos-fundamentales</a></td></tr><tr><td align="center"><strong>Implementación</strong></td><td><a href="https://4056083014-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl91JkbFLHxUtJSPZWNOl%2Fuploads%2Fg1BSmLJmaPLGX1Hw1vK5%2Fhorizontal.png?alt=media&#x26;token=be64e464-044f-4dfb-a175-265dbc98207c">horizontal.png</a></td><td><a href="i-o/introduccion">introduccion</a></td></tr></tbody></table>

#### Comparativa

La plataforma está disponible en dos ediciones:&#x20;

La versión **comunitaria** está orientada a la *exploración, aprendizaje y prototipado*, ofreciendo un conjunto reducido de capacidades que permiten experimentar con audio binaural.

Por su parte, la versión **profesional** incorpora todo el potencial: enrutamiento avanzado, nodos ilimitados y especializados, herramientas de análisis, soporte y mas.

{% hint style="success" %}
Cada edición comparte el mismo núcleo, pero se diferencian en *alcance, capacidades y nivel de soporte*. La siguiente tabla ofrece una vista clara de lo que incluye cada una.
{% endhint %}

<table data-full-width="false"><thead><tr><th width="341">Plan</th><th>Comunidad</th><th>Profesional</th></tr></thead><tbody><tr><td>Reproducción de fuentes</td><td>✔️</td><td>✔️</td></tr><tr><td>Enrutamiento basado en nodos</td><td>✔️</td><td>✔️</td></tr><tr><td>Límite de conexiones</td><td>✔️ <strong>Máximo</strong>: 20</td><td>✔️ <strong>Ilimitadas</strong></td></tr><tr><td>Motor modular de grafo</td><td>✔️</td><td>✔️</td></tr><tr><td>Procesamiento de baja latencia</td><td>✔️</td><td>✔️</td></tr><tr><td>Renderizado en tiempo real</td><td>✔️</td><td>✔️</td></tr><tr><td>Audio binaural</td><td>✔️</td><td>✔️</td></tr><tr><td>Soporte Multiplataforma</td><td>✔️</td><td>✔️</td></tr><tr><td>Nodos de FX (EQ, Reverb, Delay)</td><td>—</td><td>✔️</td></tr><tr><td>Visualización de señales</td><td>—</td><td>✔️</td></tr><tr><td>Cadenas complejas y subgrafos</td><td>—</td><td>✔️</td></tr><tr><td><strong>Soporte técnico</strong></td><td>— <em>Comunidad</em></td><td>✔️</td></tr></tbody></table>

#### **Introducción a la guía**

Esta guía describe el propósito, las capacidades y los componentes fundamentales.

Asimismo, examina su arquitectura y el flujo interno de procesamiento de señal, explicando cómo cada subsistema —desde las **fuentes** y **nodos** hasta el contexto de ejecución— colabora de manera sincronizada para garantizar un comportamiento *determinista*, preciso y estable en entornos de procesamiento de audio en tiempo real.

> **I/O** está construido íntegramente en **Swift**, un lenguaje multiplataforma que combina rendimiento con sintaxis moderna. Ofreciendo un modelo de ejecución optimizado gracias a su compilador **LLVM**, capaz de generar código tan rápido como **C**, pero con las ventajas de seguridad de memoria y gestión automática de recursos.
>
> — *Visita el sitio oficial para más información*: [*https://www.swift.org*](https://www.swift.org/)

#### **Como encaja I/O arquitectonicamente**

Comprender el papel de **I/O** dentro del ecosistema, implica situarlo en el contexto de las capas tecnológicas que componen una arquitectura de procesamiento moderna.

**I/O** se ubica en el punto intermedio entre las APIs de bajo nivel —como *CoreAudio*, *WASAPI* o *ALSA*— y las capas de alto nivel dedicadas a la composición o renderizado de audio. Esto le permite actuar como un motor, capaz de orquestar el flujo de señal y ejecutar bloques DSP con precisión temporal, manteniendo independencia del sistema operativo.

A diferencia de las librerías DSP puras, **I/O** no se limita sólo a funciones de procesamiento: implementa un sistema completo de enrutamiento, sincronización y ejecución *determinista*, gestionando de forma autónoma los nodos, búferes y dependencias del grafo.

Su diseño **modular** permite extender o sustituir componentes, y su integración el hardware garantiza una comunicación directa con los dispositivos de entrada y salida. De esta manera, **I/O** actúa como el núcleo operativo: traduce las señales provenientes del hardware, organiza el procesamiento interno y entrega resultados con latencia mínima.

En la jerarquía del ecosistema, **I/O** proporciona la *infraestructura* sobre la cual pueden construirse sistemas de producción, análisis y renderizado profesional.

**I/O** combina diseño y rendimiento, garantizando precisión y baja latencia.

{% hint style="info" %}
Un **DAG** *(Directed Acyclic Graph)* es una estructura que organiza el flujo de procesamiento como una red de nodos conectados, donde la señal siempre avanza hacia adelante sin *retroalimentaciones*. Cada nodo representa una operación y las conexiones determinan cómo fluye la señal.
{% endhint %}

#### **Infraestructura**

Como se mencionó, en la base de la jerarquía se encuentran las APIs de bajo nivel y los **drivers** del sistema operativo. *CoreAudio, WASAPI, ASIO o ALSA* manejan el acceso directo a los dispositivos de entrada/salida, los buffers y la sincronización con el hardware.

Sobre ellas se ubica **I/O**, que abstrae esas diferencias y permiten una implementación multiplataforma, en conjunto operan las librerías **DSP**, diseñadas para proporcionar bloques funcionales, como filtros, osciladores, **FFTs** o generadores de envolvente.

**I/O** representa la primera capa en el flujo de procesamiento.

{% embed url="<https://youtu.be/XOCV5JVprhk>" %}

#### **Implementación**

**I/O** adopta una filosofía de diseño *modular, declarativa y extensible.*&#x20;

El audio puede describirse como un conjunto de nodos interconectados, cada uno responsable de una tarea de procesamiento DSP específica. Estas *conexiones* forman un grafo dinámico que define el flujo de señal, permitiendo reconfiguración en tiempo real sin interrupciones.

Cada componente del sistema es **autocontenible**, lo que facilita tanto la construcción de cadenas simples como la de sistemas complejos de mezcla, análisis o renderizado. La comunicación entre nodos sigue un modelo *pull-based* *determinista*, asegurando que cada bloque procese solo los datos necesarios, optimizando el rendimiento y la latencia.

Los **nodos** procesan y el **contexto** coordina el flujo del audio. Esta organización promueve una arquitectura donde las operaciones son reproducibles a nivel de muestra.

**I/O** prioriza la transparencia del procesamiento y la extensibilidad.

#### **Filosofía de diseño (Manifiesto)**

**I/O** fue concebido como un motor en tiempo real que debía cumplir con cuatro principios: *precisión, rendimiento, funcionalidad y estabilidad*. Estos representan los fundamentos que orientan cada decisión arquitectónica del framework.

<details>

<summary>Precisión</summary>

El **procesamiento** se realiza en punto flotante `Float64` para mantener la integridad numérica y evitar la acumulación de error. Los parámetros se interpolan de forma continua para eliminar artefactos y garantizar transiciones suaves. Los módulos **DSP** integran algoritmos de alta fidelidad con gestión de aliasing y oversampling.

</details>

<details>

<summary>Rendimiento</summary>

El tiempo real impone una exigencia de eficiencia y determinismo. **I/O** adopta un modelo de procesamiento por bloques que reduce la sobrecarga y optimiza el uso del procesador. En el hilo de audio, el motor opera bajo una política estricta de cero asignaciones dinámicas, asegurando latencia mínima y estabilidad constante bajo cargas variables.

</details>

<details>

<summary>Funcionalidad</summary>

Cada **nodo del grafo** funciona como una unidad autónoma que puede integrarse, reemplazarse o combinarse sin afectar la estructura del sistema. Esta composición facilita la creación de flujos complejos manteniendo claridad y previsibilidad. La API ofrece un sistema de parámetros flexible para control externo, automatización y modulación.

</details>

<details>

<summary>Estabilidad</summary>

Incorporar un modo de ejecución **offline** que permita validar el comportamiento del grafo y realizar pruebas automatizadas sin depender del tiempo real. Incluye herramientas visuales —como **FFTs**, espectrogramas y medidores— junto con un sistema de registro y diagnóstico continuo que garantiza trazabilidad y detección temprana de anomalías.

</details>

#### **Arquitectura de Grafo**

La arquitectura permite modelar el flujo como una red de operaciones, donde los **nodos** pueden conectarse o desconectarse dinámicamente sin interrumpir la ejecución.&#x20;

Esta flexibilidad se combina con una planificación de eventos *sample-accurate*, ideal para automatización o reproducción sincronizada. El enfoque *pull-based* asegura eficiencia, y el soporte para **subgrafos** permite construir bloques reutilizables.

**Conceptos fundamentales**

* Grafo dirigido: operaciones y conexiones que definen el flujo de audio.
* Nodos conectables dinámicamente permite agregar/quitar nodos sin interrumpir el audio.
* Sample-accurate scheduling: ejecución precisa de eventos en el timeline de audio.
* Procesamiento pull-based: datos fluyen desde outputs hacia inputs sin cómputo innecesario.
* Soporte para subgrafos/modularidad: encapsulación de secciones reutilizables.

Cada elemento conforma un flujo de procesamiento flexible y estable. El resultado es un sistema modular capaz de adaptarse a cualquier escenario de audio.

{% hint style="success" %}
Existen *arquitecturas alternativas*, como los *pipelines lineales*, los *modelos basados en buses*, o los *sistemas dirigidos por eventos*. Sin embargo, el *modelo basado en grafos* (***DAG***) se ha convertido en el estándar de la industria por su capacidad para combinar flexibilidad y rendimiento.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.comdigis.com/introduccion.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
