> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ai-coustics.com/llms.txt
> Use this file to discover all available pages before exploring further.

# C

<Card title="View on GitHub" icon="github" iconType="brands" href="https://github.com/ai-coustics/aic-sdk-c" horizontal>
  Full reference, examples, and release notes.
</Card>

## Installation

Download the SDK binaries from the [releases page](https://github.com/ai-coustics/aic-sdk-c/releases). We provide:

* **Static libraries** (`.a`, `.lib`) for linking directly into your application
* **Dynamic libraries** (`.so`, `.dll`, `.dylib`) for runtime loading
* **Multiple platforms**: Linux, Windows, macOS
* **Multiple architectures**: x86\_64, ARM64

## Quickstart

```c theme={null}
#include <stdlib.h>
#include "aic.h"

int main() {
    // Get your license key from the environment variable
    const char* license_key = getenv("AIC_SDK_LICENSE");

    // Download and load a model (or download manually at https://artifacts.ai-coustics.io/)
    struct AicModel* model = NULL;
    aic_model_create_from_file(&model, "path/to/model.aicmodel");

    // Create processor with license key
    struct AicProcessor* processor = NULL;
    aic_processor_create(&processor, model, license_key, NULL);

    // Get optimal configuration
    uint32_t sample_rate;
    size_t num_frames;
    aic_model_get_optimal_sample_rate(model, &sample_rate);
    aic_model_get_optimal_num_frames(model, sample_rate, &num_frames);

    // Initialize processor with optimal settings
    aic_processor_initialize(processor, sample_rate, 2, num_frames, false);

    // Process audio (planar layout: separate buffers per channel)
    float* audio_left = (float*) calloc(num_frames, sizeof(float));
    float* audio_right = (float*) calloc(num_frames, sizeof(float));
    float* audio_planar[2] = {audio_left, audio_right};
    aic_processor_process_planar(processor, audio_planar, 2, num_frames);

    // Cleanup
    free(audio_left);
    free(audio_right);
    aic_processor_destroy(processor);
    aic_model_destroy(model);
    return 0;
}
```
