• Non ci sono risultati.

Fondamenti di Informatica: esercitazione di laboratorio Programmi in linguaggio C per manipolare file bitmap e audio (II parte) Pier Luca Montessoro

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica: esercitazione di laboratorio Programmi in linguaggio C per manipolare file bitmap e audio (II parte) Pier Luca Montessoro"

Copied!
1
0
0

Testo completo

(1)

Fondamenti di Informatica: esercitazione di laboratorio Programmi in linguaggio C per manipolare file bitmap e audio (II parte)

Pier Luca Montessoro

1.

Generazione segnale a dente di sega

Un segnale a dente di sega in frequenze audio produce un suono molto ricco di armoniche in quanto ogni ciclo è composto da una rampa lineare ascendente seguita da un gradino discendente (si veda l’immagine in figura).

Si scriva un programma che crei un file audio contenente un segnale a dente di sega per ciascun canale i cui parametri sono passati al programma sulla riga di comando nel seguente ordine:

• frequenza del canale sinistro (in Hz)

• ampiezza del canale sinistro (percentuale rispetto all’ampiezza massima)

• frequenza del canale destro (in Hz)

• ampiezza del canale destro (percentuale rispetto all’ampiezza massima)

• durata (in secondi)

2.

256 sfumanture di grigio

Si scriva un programma in linguaggio C che riceva sulla riga di comando il nome di un file bitmap di uscita e le sue dimensioni (numero di pixel in altezza e larghezza), e generi in tale file di uscita un’immagine contenente, da sinistra verso destra, tutte le 256 gradazioni di grigio rappresentabili

con una bitmap in modalità “true color”.

3.

Melodia con campanelli

Si vuole costruire una melodia basandosi sul suono registrato di 12 campanellini (uno per nota musicale). Si ha a disposizione un vettore di strutture dati già inizializzato definito come riportato a lato.

Ogni elemento del vettore contiene quindi il nome della nota e la registrazione del relativo campanellino. I nomi delle note memorizzate nel vettore di strutture sono composti da una singola parola. Per esempio: “do”, “sibemolle”, “solbemolle”, “re” (si considerano solo i “bemolle”, non i

“diesis”).

La melodia è descritta da una sequenza di stringhe che identificano le note come sopra descritto. Ad esempio:

do do mibemolle mibemolle sol sol la sibemolle fa fa fa re re re do do do do

La durata di ogni nota della melodia è costante e vale 300 ms. La durata delle registrazioni dei campanellini è variabile, ma sempre inferiore a 300 ms.

Si scriva un programma in linguaggio C che riceva sulla riga di comando il nome di un file wave di uscita e la melodia nel formato sopra descritto. Il programma deve scrivere nel file la melodia in formato audio.

Si assuma già disponibile la funzione void carica_suoni (struct suoni campanelli[]) che inizializza il vettore.

NOTA: all’indirizzo http://web.diegm.uniud.it/pierluca/public_html/downloads/teaching/melodia_con_campanelli/

sono disponibili i file wave e il file C contenente la funzione carica_suoni.

4.

Vedo doppio

Tra gli effetti speciali fotografici, uno dei più semplici consiste nel far comparire nella stessa foto la stessa persona due volte. Una possibile tecnica prevede di scattare due foto mantenendo la camera immobile e lo sfondo inalterato. Il soggetto si posiziona sul lato destro della foto durante il primo scatto, e sul lato sinistro nel secondo. Poi, le due foto vengono “tagliate” a metà e vengono unite le due parti in cui è presente il soggetto.

Si vuole realizzare tale effetto speciale mediante immagini bitmap. L’immagine sia identificata da un nome (una stringa senza spazi, nel seguito indicata con s). Il file di uscita avrà come nome il contenuto della stringa s ed estensione bmp, mentre le immagini contenenti i due scatti sopra descritti avranno la stessa estensione, ma come nome il contenuto di s seguito, rispettivamente, da

“_LEFT” e “_RIGHT”. Per esempio, le immagini dei due scatti sono contenute nei file vedodoppio_LEFT.bmp e vedodoppio_RIGHT.bmp e il nome del file da generare è vedodoppio.bmp.

Si scriva un programma in linguaggio C che riceva sulla riga di comando il nome dell’immagine (vedodoppio, nell’esempio di cui sopra) e la generi secondo quanto fin qui descritto.

Esempio:

vedodoppio_LEFT.bmp vedodoppio_RIGHT.bmp vedodoppio.bmp

(immagine risultante)

NOTA: all’indirizzo http://web.diegm.uniud.it/pierluca/public_html/downloads/teaching/vedo_doppio/ sono disponibili i file bitmap utili per provare il programma.

struct suoni {

char nome_nota[16];

WAVE suono_nota;

} campanellini[12];

Riferimenti

Documenti correlati

Si scriva un programma in linguaggio C che riceva sulla linea di comando il nome di un file bitmap di uscita e crei l’immagine sopra descritta.. (svolgere

• Si ritorni alla finestra del prompt di MS-DOS e si verifichi la presenza del file hello.c nel direttorio corrente (comando “dir”).. • Si visualizzi il contenuto di tale

Basandosi sul diagramma di flusso visto a lezione, si scriva un programma che calcoli lo sviluppo in serie della funzione sin(x), dove x e la precisione richiesta vengono letti

L’algoritmo di ordinamento selection sort può essere facilmente implementato in modo ricorsivo, in quanto prevede la “sistemazione” del primo elemento del vettore di dimensione n

Si scriva un programma in linguaggio C che legga dalla linea di comando la dimensione N, in pixel, di una bitmap quadrata (NxN) e crei un file contenente una circonferenza rossa

Tale vettore è adatto per contenere, in ciascun elemento della prima dimensione, la matrice che rappresenta la cifra corrispondente al valore dell’indice. In

Si scriva una funzione int mystrstr (char *s, char *t) che, facendo uso della funzione mystrncmp dell’esercizio precedente, si comporti in modo simile: restituisca l’indice

• Il programma deve leggere da tastiera il nome del file nel formato sopra descritto, leggere tale file copiandone il contenuto nel vettore di struct in memoria e, infine,