294 lines
5.2 KiB
Markdown

< [Voltar](chapter-4.md) | [Sumário](table-of-contens.md) | [Adiante](chapter-6.md) >
# 🔊 Periférico AUDIO (Sistema de Som)
## 1. Visão Geral
O **Periférico AUDIO** é responsável pela **geração e mistura de som** no PROMETEU.
Assim como os demais subsistemas, o áudio:
- **não é automático**
- **não é gratuito**
- **não é mágico**
Cada som ouvido é resultado de **comandos explícitos**, executados sob **orçamento de tempo e recursos**.
> Som também consome tempo.
Som também consome memória.
>
---
## 2. Filosofia do Sistema de Áudio
PROMETEU trata áudio como:
- um **periférico ativo**
- com **canais limitados, previsíveis**
- e **comportamento determinístico**
O objetivo não é realismo absoluto, mas **clareza arquitetural**.
---
## 3. Componentes do Periférico AUDIO
O sistema de áudio é composto por:
- **Canais de áudio** — fontes independentes de som
- **Samples** — dados sonoros curtos
- **Music streams** — trilhas contínuas
- **Mixer** — combinação final dos canais
Cada componente tem custo explícito.
---
## 4. Canais de Áudio
### 4.1 Definição
Um **canal de áudio** representa uma fonte sonora independente.
Características:
- número máximo de canais é limitado
- cada canal toca **um som por vez**
- canais são misturados no output final
Exemplo conceitual:
```
Max Channels:8
```
---
### 4.2 Uso dos Canais
Quando um som é tocado:
```
audio.play(sampleId, channel)
```
Se o canal estiver ocupado:
- o som anterior pode ser interrompido
- ou a chamada pode ser ignorada
(dependendo da política definida)
PROMETEU **não gerencia prioridades automaticamente**.
---
## 5. Samples (Efeitos Sonoros)
### 5.1 Definição
Um **sample** é um trecho curto de áudio pré-carregado.
Usado para:
- efeitos (tiros, passos, colisões)
- feedback imediato
- sons repetitivos
Samples:
- ocupam memória
- são imutáveis durante execução
- devem ser carregados conscientemente
---
### 5.2 Custo dos Samples
Cada sample tem custo associado a:
- tamanho em memória
- taxa de reprodução
- duração
Reproduzir muitos samples simultaneamente:
- consome mais ciclos
- aumenta pressão no mixer
---
## 6. Music Streams (Trilha Sonora)
### 6.1 Definição
**Music streams** são sons contínuos, geralmente mais longos.
Características:
- tocados em loop ou sequência
- geralmente ocupam um canal dedicado
- podem ser streamados para reduzir uso de memória
---
### 6.2 Controle de Música
Operações típicas:
```
audio.musicPlay(trackId)
audio.musicStop()
audio.musicSetVolume(v)
```
Essas operações:
- têm custo explícito
- afetam o mixer global
PROMETEU não faz crossfade automático sem instrução explícita.
---
## 7. Mixer de Áudio
### 7.1 Função do Mixer
O **mixer** combina os canais ativos em um único sinal de saída.
O custo do mixer depende de:
- número de canais ativos
- complexidade do som
- efeitos aplicados (se houver)
Mais canais ativos → mais custo por frame.
---
### 7.2 Efeitos Simples
PROMETEU pode suportar efeitos básicos:
- volume por canal
- pan (esquerda/direita)
- mute
Efeitos:
- são explícitos
- têm custo mensurável
- não são aplicados automaticamente
---
## 8. Sincronização Temporal do Áudio
### 8.1 Relação com o Clock do Sistema
O áudio em PROMETEU é sincronizado com o **clock base de 60 Hz**.
Isso significa:
- atualizações de áudio ocorrem por frame
- eventos sonoros são disparados em ticks definidos
- latência é previsível e estável
---
### 8.2 Áudio como Evento
PROMETEU incentiva tratar áudio como **evento**, não como estado contínuo:
- tocar som ao ocorrer uma ação
- evitar chamadas repetidas por frame
- desacoplar áudio da lógica pesada
Isso reduz custo e melhora clareza.
---
## 9. Áudio e CAP
O sistema de áudio participa do **Execution CAP**:
- reprodução de sons consome ciclos
- mixagem entra no orçamento por frame
- picos de áudio são registrados
Exemplo de relatório:
```
Frame 24510:
audio.play():120cycles
audio.mixer():380cycles
```
Excessos:
- não bloqueiam o jogo
- aparecem na certificação
---
## 10. Boas Práticas de Áudio
PROMETEU incentiva:
- reutilizar samples
- limitar canais simultâneos
- tratar áudio como evento
- separar música de efeitos
E desencoraja:
- tocar sons repetidamente por frame
- usar muitos canais sem necessidade
- samples grandes para efeitos simples
---
## 11. Relação com Consoles Clássicos
O modelo de áudio PROMETEU é inspirado em:
- canais dedicados do NES
- mixagem simples do SNES
- hardware de áudio previsível
Mas abstraído para:
- clareza
- simplicidade
- ensino
O objetivo é entender **como o som é produzido**, não emular chips específicos.
---
## 12. Implicações Pedagógicas
O Periférico AUDIO permite ensinar:
- concorrência limitada
- eventos temporais
- impacto de recursos em tempo real
- separação entre lógica e apresentação sonora
Tudo isso com **feedback auditivo e mensurável**.
---
## 13. Resumo
- áudio é um periférico explícito
- canais são limitados
- samples ocupam memória
- mixagem consome ciclos
- áudio participa do CAP
- som é consequência de decisões técnicas
< [Voltar](chapter-4.md) | [Sumário](table-of-contens.md) | [Adiante](chapter-6.md) >