tico 0.1
Mechanical Watch Terminal Timegrapher
mysound.h
Go to the documentation of this file.
1#pragma once
2
3#include "config.h"
4#include "myarr.h"
5#include <alsa/asoundlib.h> // IWYU pragma: export
6#include <stdio.h>
7
9{
10 long avg;
17};
18
22typedef struct CaptureCtx
23{
24 /* ALSA */
25 snd_pcm_t* cap;
26 unsigned int rate;
27 snd_pcm_uframes_t periodSize;
28 snd_pcm_uframes_t bufferSize;
29 size_t ArrayLength; // frames per processing block
30 snd_mixer_t* mixerHandle;
31 snd_mixer_elem_t* mixerElem;
34
35void open_capture_elem(CaptureCtx* ctx, const CapConfig* cfg);
36
48const char* get_default_device(void);
49
60// NOLINTNEXTLINE(misc-include-cleaner)
61snd_pcm_t* initAudio(snd_pcm_format_t format, char* device, unsigned int* rate);
62
73int initAudioSource(CapConfig* cfg, unsigned int* actualRate);
74
92int readBufferOrFile(int* derivative,
93 size_t ArrayLength,
94 FILE* fpInput,
95 CaptureCtx* ctx,
96 int16_t* buffer16);
97
116int getData(FILE* fpInput,
117 struct myarr* derivative,
118 CaptureCtx* ctx,
119 int16_t* out);
120
131void captureTeardown(CaptureCtx* ctx);
132
147int captureSetup(CaptureCtx* ctx, CapConfig* cfg, unsigned int rate);
148
165int readSamples(snd_pcm_t* cap, size_t ArrayLength, int16_t* out);
166
178int get_mic_amplification(const CaptureCtx* ctx, long* value);
179
191int set_mic_amplification(const CaptureCtx* ctx, long value);
void open_capture_elem(CaptureCtx *ctx, const CapConfig *cfg)
Open the ALSA mixer and find the 'Capture' element for microphone control.
Definition: mysound.c:39
const char * get_default_device(void)
Retrieves the default ALSA audio capture device, preferring sysdefault devices with 'usb' in their de...
Definition: mysound.c:707
int captureSetup(CaptureCtx *ctx, CapConfig *cfg, unsigned int rate)
Sets up the ALSA audio capture device based on the provided context and configuration.
Definition: mysound.c:474
snd_pcm_t * initAudio(snd_pcm_format_t format, char *device, unsigned int *rate)
Initializes the ALSA audio capture device with the specified format, device name, and sample rate.
Definition: mysound.c:276
int getData(FILE *fpInput, struct myarr *derivative, CaptureCtx *ctx, int16_t *out)
Retrieves audio data from the capture context or input file and processes it into a derivative array.
Definition: mysound.c:448
int get_mic_amplification(const CaptureCtx *ctx, long *value)
Get the current microphone amplification (capture volume) from ALSA mixer.
Definition: mysound.c:721
struct CaptureCtx CaptureCtx
Context for audio capture, containing ALSA parameters and configuration.
int readSamples(snd_pcm_t *cap, size_t ArrayLength, int16_t *out)
Reads audio samples from the ALSA capture device into a buffer.
Definition: mysound.c:516
int set_mic_amplification(const CaptureCtx *ctx, long value)
Set the microphone amplification (capture volume) using ALSA mixer.
Definition: mysound.c:734
int initAudioSource(CapConfig *cfg, unsigned int *actualRate)
Initializes the audio source for capture based on the provided configuration. This function sets up t...
Definition: mysound.c:357
int readBufferOrFile(int *derivative, size_t ArrayLength, FILE *fpInput, CaptureCtx *ctx, int16_t *buffer16)
Reads audio data from the capture device or a file into a buffer.
Definition: mysound.c:381
void captureTeardown(CaptureCtx *ctx)
Cleans up and releases resources associated with the audio capture context.
Definition: mysound.c:507
Definition: mysound.h:9
int gain_increase_locked
Definition: mysound.h:13
long avg
Definition: mysound.h:10
long min_gain
Definition: mysound.h:15
long max_gain
Definition: mysound.h:16
int clipStreak
Definition: mysound.h:12
int clipCount
Definition: mysound.h:11
int has_increased
Definition: mysound.h:14
brief struct to hold the configuration parameters for the capture process
Definition: config.h:8
Context for audio capture, containing ALSA parameters and configuration.
Definition: mysound.h:23
struct AmpResult ampResult
Definition: mysound.h:32
snd_mixer_t * mixerHandle
Definition: mysound.h:30
snd_pcm_uframes_t periodSize
Definition: mysound.h:27
size_t ArrayLength
Definition: mysound.h:29
snd_pcm_t * cap
Definition: mysound.h:25
unsigned int rate
Definition: mysound.h:26
snd_mixer_elem_t * mixerElem
Definition: mysound.h:31
snd_pcm_uframes_t bufferSize
Definition: mysound.h:28
A struct to hold an array of integers or an array of doubles, along with the length of the arrays.
Definition: myarr.h:14