{"id":13474157,"url":"https://github.com/CuarzoSoftware/AudioBox","last_synced_at":"2025-03-26T21:30:40.124Z","repository":{"id":70680808,"uuid":"309804113","full_name":"CuarzoSoftware/AudioBox","owner":"CuarzoSoftware","description":"A free and open source SDK for audio plugins.","archived":false,"fork":false,"pushed_at":"2021-01-06T16:16:24.000Z","size":2122,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-08-01T16:35:02.047Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CuarzoSoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-11-03T20:51:27.000Z","updated_at":"2022-09-17T07:04:53.000Z","dependencies_parsed_at":"2023-03-09T15:30:29.910Z","dependency_job_id":null,"html_url":"https://github.com/CuarzoSoftware/AudioBox","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CuarzoSoftware%2FAudioBox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CuarzoSoftware%2FAudioBox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CuarzoSoftware%2FAudioBox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CuarzoSoftware%2FAudioBox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CuarzoSoftware","download_url":"https://codeload.github.com/CuarzoSoftware/AudioBox/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222169239,"owners_count":16942668,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T16:01:09.935Z","updated_at":"2024-10-30T05:30:38.829Z","avatar_url":"https://github.com/CuarzoSoftware.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# AudioBox\nSDK gratuito y de código abierto para desarrollar plugins de audio.\n\n\u003cimg src=\"Design/Logo.png\" width=256\u003e\n\n## Plataformas\n* GNU/Linux\n* Mac OS X\n* Windows\n\n## Tipos de Plugins\n* Entrada\n* Salida\n* Efectos de Audio\n* Generadores\n* Panoramizadores\n* Mezcladores\n* Divisores\n* Instrumentos MIDI\n* Efectos MIDI\n\n## Tipos de UI\n* Apple Carbon\n* Apple Cocoa\n* X11\n* Wayland\n* Desktop Window Mannager\n\n## Clases\n* AudioBox\n\t* ABInput\n\t* ABOutput\n\t* ABDeviceOutput\n\t* ABEffect\n\t* ABGenerator\n\t* ABPanner\n\t* ABMixer\n\t* ABSplitter\n\t* ABInstrument\n\t* ABMidiEffect\n\n\n## Secuencia del Procesamiento\nPara poder procesar audio con unidades AudioBox es necesario contar con al menos una unidad de entrada de tipo **ABInput**, **ABGenerator** o **ABInstrument** y una unidad de salida de tipo **ABOutput** o **ABDeviceOutput**.\u003cbr\u003e\n\nLa secuencia comienza al llamar el método **start()** de una unidad de **salida**. Esta le envía (por referencia) un buffer de audio a la unidad conectada a su bus de entrada, a travez de una función callback, permitiendole aplicar su propio procesamiento. Cuando finaliza, la función callback es retornada notificando a la unidad de salida que ya puede reproducir, almacenar o realizar otra operación con el audio.\n\nDe la misa forma, la unidad conectada puede compartir el buffer con unidades conectadas a sus buses de entrada y esperar el retorno de los callbacks, para luego realizar su propio procesamiento y enviarlo de vuelta a la unidad de salida.\n\n![](Design/Processing-Sequence.png)\n\u003csub\u003e\u003ci\u003eEjemplo con tres unidades: La unidad de salida solicita datos a la unidad de efecto, la unidad de efecto solicita datos a la unidad de entrada, la unidad de entrada retorna los datos capturados del micrófono a la unidad de efecto, la unidad de efecto aplica su propio procesamiento y retorna los datos a la unidad de salida, por último la unidad de salida se encarga de enviar el sonido al dispositivo de audio externo.\u003c/i\u003e\u003c/sub\u003e\n\nLa condición de contar con una unidad de entrada y salida existe únicamente si se utiliza el método **connectBus()** para conectar los buses de entrada y salida entre unidades.\n\nEs posible asignar los callbacks entre unidades manualmente, o a métodos definidos por el usuario utilizando el método **setCallback()**.\u003cbr\u003eEsto permite utilizar unidades directamente, sin necesidad de contar con una unidad de entrada y otra de salida.\n\n\n\n## Frecuencia de Muestreo\nLa frecuencia de muestreo en el contexto de un proyecto, viene dada por la unidad de salida. Por ejemplo, si la unidad de salida funciona con una frecuencia de muestreo de 44.1 khz, el resto de las unidades deben trabajar con la misma frecuencia. Se debe llamar el metodo getAvaliableSampleRates() para obtener una lista con todas las frecuencias de muestreo soportadas por una unidad y el método setSampleRate() para asignar la frecuencia deseada.\n## AudioBox\n\n### Métodos\n\n##### SampleRateList *getAvaliableSampleRates()\nRetorna una lista con las frecuencias de muestreo soportadas por la unidad.\n\n##### bool *setSampleRate(unsigned int fs)\nAsigna una frecuencia de muestreo soportada por la unidad.\n\n## MIDI Effect\n\n## ABPanner\n\n#### Entradas\n1 entrada con la configuración dada por la salida de la unidad de entrada.\n#### Salidas\n1 salida con la configuración dada por la entrada de la unidad de salida.\n\n\n## ABDivider\nEste tipo de unidad permite dividir una señal de entrada y retornarla en varios outputs.\n\n#### Entradas\n1 entrada con la configuración dada por la salida de la unidad de entrada.\n\n#### Salidas\nN salidas con configuraciónes dadas por las entradas de las unidades de entrada.\n\n## ABMixer\n\n#### Entradas\nN entradas con configuraciónes dadas por las salidas de las unidades de entrada.\n#### Salidas\n1 salida con la configuración dada por la entrada de la unidad de salida.\n\n## ABGenerator\nEste tipo de unidad no tiene buses de entrada y solo es capaz de generar sonido.\n\n### Ejemplos\n* Tone \u0026 Noise Generator\n* File Reader Scheduler\n\n#### Entradas\nSin entradas\n#### Salidas\n1 salida con la configuración dada por la entrada de la unidad de salida.\n\n\n\n## ABEffect\n\n##### void setBypassed(bool mode)\nIgnora el procesamiento de la señal.\n\n##### bool isBypassed()\nIndica si el procesamiento de la es ignorado.\n\n\n## ABOutput\nReproduce el sonido por el dispositivo seleccionado.\n\n### Entradas\nEl número de entradas y sus configuraciones vienen dadas por las carácteristicas del dispositivo.\n### Salidas\nNo contiene salidas.\n\n##### BufferSizeList *getAvaliableBufferSizes()\nRetorna una lista de tamaños de buffer asignables.\n\n##### bool setBufferSize(int size)\nAsigna el tamaño del buffer.\n\n##### SampleFormatList *getAvaliableSampleFormats()\nRetorna una lista con todos los formatos de sonido soportados por la unidad, más los nativamente soportados por el dispositivo.\n\n##### bool setSampleFormat(SampleFormat format)\nAsignal el formato de muestreo.\n\n##### DeviceList *getOutputDevices()\nRetorna una lista con todos los dispositivos de salida disponibles.\n\n##### bool setOutputDevice(Device *device)\nAsigna el dispositivo de salida. Al asignarlo, podría modificarse tambíen el tamaño del buffer, el formato de sampleo\n\n##### BusList *getInputBuses()\nRetorna una lista con la configuración de todos los buses de salida.\nPara un dispositivo pueden ser canales mono independientes, pares stereo, u otros.\n\n##### void play()\nComienza la reproducción de sonido.\n\n##### void stop()\nDetiene la reproducción de sonido.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCuarzoSoftware%2FAudioBox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCuarzoSoftware%2FAudioBox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCuarzoSoftware%2FAudioBox/lists"}