🔊 audio - Audio Processing

Audio I/O, DSP, Synthesis, Effects, MIDI

163
Functions
1,669
Lines
55 KB
Size

🚀 Quick Start

içe_aktar audio

// Load audio file
değişken ses = audio.load("music.wav")
audio.play(ses)

// Generate sound (synthesizer)
değişken osc = audio.oscillator_create(SINE, 440.0)  // A4 note
audio.oscillator_play(osc, 1.0)  // 1 second

// Microphone input
değişken mic = audio.input_open()
değişken buffer = audio.input_read(mic, 1024)

// Real-time processing
değişken output = audio.output_open(44100, 2)  // 44.1kHz stereo

döngü yap
    değişken samples = audio.input_read(mic, 512)
    
    // Apply effect
    değişken processed = audio.reverb(samples, 0.5)
    
    audio.output_write(output, processed)
son

📚 Features

💡 Examples

Synthesizer (ADSR Envelope)

içe_aktar audio, math

fonksiyon synthesizer_note(frekans: kesir, süre: kesir) -> AudioBuffer yap
    değişken sample_rate = 44100
    değişken num_samples = (sample_rate * süre).tamsayı()
    
    // ADSR parameters
    değişken attack = 0.05    // 50ms attack
    değişken decay = 0.1      // 100ms decay
    değişken sustain = 0.7    // 70% sustain level
    değişken release = 0.2    // 200ms release
    
    değişken buffer = audio.buffer_create(num_samples, 1)
    
    her i içinde aralık(0, num_samples) için yap
        değişken t = i.kesir() / sample_rate
        
        // Oscillator
        değişken sample = math.sin(2.0 * math.PI * frekans * t)
        
        // ADSR envelope
        değişken amplitude = 0.0
        
        eğer t < attack ise yap
            amplitude = t / attack
        son değilse eğer t < (attack + decay) ise yap
            değişken decay_t = (t - attack) / decay
            amplitude = 1.0 - decay_t * (1.0 - sustain)
        son değilse eğer t < (süre - release) ise yap
            amplitude = sustain
        son değilse yap
            değişken release_t = (t - (süre - release)) / release
            amplitude = sustain * (1.0 - release_t)
        son
        
        audio.buffer_set(buffer, i, sample * amplitude * 0.3)
    son
    
    dön buffer
son

// C major chord
değişken C4 = synthesizer_note(261.63, 2.0)  // C
değişken E4 = synthesizer_note(329.63, 2.0)  // E
değişken G4 = synthesizer_note(392.00, 2.0)  // G

// Mix
değişken chord = audio.mix([C4, E4, G4])
audio.play(chord)

Real-time Audio Effects Processor

içe_aktar audio

// Effect chain
sınıf EffectChain yap
    değişken effects: Dizi
    
    fonksiyon yeni() yap
        self.effects = []
    son
    
    fonksiyon ekle(effect: Effect) yap
        self.effects.ekle(effect)
    son
    
    fonksiyon process(input: AudioBuffer) -> AudioBuffer yap
        değişken output = input
        
        her effect içinde self.effects için yap
            output = effect.process(output)
        son
        
        dön output
    son
son

// Reverb effect
sınıf Reverb yap
    değişken decay: kesir
    değişken delay_buffer: AudioBuffer
    
    fonksiyon yeni(decay_factor: kesir) yap
        self.decay = decay_factor
        self.delay_buffer = audio.buffer_create(44100, 1)  // 1 second buffer
    son
    
    fonksiyon process(input: AudioBuffer) -> AudioBuffer yap
        değişken output = audio.buffer_create(input.uzunluk(), 1)
        
        her i içinde aralık(0, input.uzunluk()) için yap
            değişken sample = audio.buffer_get(input, i)
            değişken delayed = audio.buffer_get(self.delay_buffer, i % self.delay_buffer.uzunluk())
            
            değişken mixed = sample + delayed * self.decay
            audio.buffer_set(output, i, mixed)
            audio.buffer_set(self.delay_buffer, i % self.delay_buffer.uzunluk(), mixed)
        son
        
        dön output
    son
son

// Effect chain setup
değişken chain = EffectChain.yeni()
chain.ekle(Reverb.yeni(0.5))
chain.ekle(audio.compressor_create(-20.0, 4.0))  // Threshold, ratio

// Real-time processing
değişken input = audio.input_open()
değişken output = audio.output_open(44100, 1)

döngü yap
    değişken buffer = audio.input_read(input, 512)
    değişken processed = chain.process(buffer)
    audio.output_write(output, processed)
son

← All Modules