PHP Classes

File: examples/case-studies/electronics/audio_rlc_fir_processing/audio_rlc_fir_processing.md

Recommend this page to a friend!
  Packages of Christos Drogidis   Ascoos OS   examples/case-studies/electronics/audio_rlc_fir_processing/audio_rlc_fir_processing.md   Download  
File: examples/case-studies/electronics/audio_rlc_fir_processing/audio_rlc_fir_processing.md
Role: Documentation
Content type: text/markdown
Description: Documentation
Class: Ascoos OS
A PHP Web 5.0 Kernel for decentralized web and IoT
Author: By
Last change: Update of examples/case-studies/electronics/audio_rlc_fir_processing/audio_rlc_fir_processing.md
Date: 8 months ago
Size: 4,015 bytes
 

Contents

Class file image Download

Signal Design and Processing with RLC Band-Pass Filter and Digital FIR Filter

This case study demonstrates how Ascoos OS can be used to design an analog RLC band-pass filter, apply a digital FIR filter to an audio signal, generate a SPICE netlist for simulation, and process the audio with trimming, normalization, and fade effects. Additionally, a frequency response graph is generated.

Purpose

The example utilizes the following Ascoos OS classes: - TElectronicsHandler: Calculates RLC filter parameters and impedance. - TCircuitHandler: Generates SPICE netlist for simulation. - TDigitalCircuitHandler: Designs FIR filter and analyzes frequency response. - TAudioHandler: Processes audio (trimming, normalization, fade-in/out). - TValidationHandler: Validates filter parameters. - TEventHandler: Logs processing events. - TErrorMessageHandler: Handles errors and exceptions. - TArrayGraphHandler: Generates frequency response graphs.

Structure

The study is implemented in a single PHP file: - audio_rlc_fir_processing.php: Includes RLC filter design, digital audio processing, analysis, and report generation.

Requirements

  1. Installation of Ascoos OS (main repository).
  2. Access to a WAV audio file (e.g., `input_audio.wav`) in `$AOS_TMP_DATA_PATH`.
  3. Write permissions for `$AOS_LOGS_PATH` and `$AOS_TMP_DATA_PATH/reports/audio_rlc_fir/`.
  4. Installed font (e.g., Murecho) for graph rendering.

Getting Started

  1. Place a WAV file in `$AOS_TMP_DATA_PATH`.
  2. Run the script via web server:
    https://localhost/aos/examples/case-studies/electronics/audio_rlc_fir_processing/audio_rlc_fir_processing.php
    

Usage Example

$electronicsHandler = new TElectronicsHandler();
$centerFrequency = 1000; // Hz
$resistance = 1000; // 1 k?
$inductance = 0.1; // 100 mH
$capacitance = 1 / (4 pi() pi() $inductance $centerFrequency * $centerFrequency);
$bandpassGain = $electronicsHandler->bandpassFilterGain($centerFrequency, $resistance, $inductance, $capacitance);

$digitalHandler = new TDigitalCircuitHandler();
$firCoefficients = [0.25, 0.5, 0.25];
$signal = $audioHandler->readWavFile("input_audio.wav");
$filteredSignal = $digitalHandler->applyFIRFilter($firCoefficients, $signal);

$audioHandler = new TAudioHandler();
$trimmedSignal = $audioHandler->trimSignal($filteredSignal, 1.0, 9.0, 44100);
$signalWithFade = $audioHandler->fadeIn($trimmedSignal, 44100 * 0.5);
$signalWithFade = $audioHandler->fadeOut($signalWithFade, 44100 * 0.5);
$normalizedSignal = $audioHandler->normalizeSignal($signalWithFade, 0.9);
$audioHandler->writeWavFile($normalizedSignal, 44100, "processed_audio.wav");

Expected Output

The script generates: - A SPICE netlist file (rlc_filter.sp) - A frequency response graph of the FIR filter (fir_frequency_response.png) - A processed WAV file (processed_audio.wav) - A JSON report file (audio_rlc_fir_report.json):

{
    "rlc_filter": {
        "center_frequency": 1000,
        "resistance": 1000,
        "inductance": 0.1,
        "capacitance": 2.533e-5,
        "gain_at_center": 0.707
    },
    "fir_filter": {
        "coefficients": [0.25, 0.5, 0.25]
    },
    "signal_stats": {
        "samples": 352800,
        "duration": 8
    }
}

Resources

Contribution

Want to contribute to this case study? Fork the repository, modify or add new features to audio_rlc_fir_processing.php, and submit a pull request. See CONTRIBUTING.md for guidelines.

License

This case study is covered under the Ascoos General License (AGL). See LICENSE for details.