Progetto realizzato dalla prof ssa Oriana Pagliarone Scheda

  • Slides: 20
Download presentation
Progetto realizzato dalla prof. ssa Oriana Pagliarone

Progetto realizzato dalla prof. ssa Oriana Pagliarone

Scheda di lavoro n. 1 Calcolo della frequenza del semitono In una scala musicale

Scheda di lavoro n. 1 Calcolo della frequenza del semitono In una scala musicale temperata 2 ottave successive stanno tra loro come 1 sta a 2 Ossia se x è la frequenza del do di un'ottava , 2 x è la frequenza del do dell'ottava successiva Inoltre le frequenze delle note formano una progressione geometrica di ragione q = semitono Ricordando che in un'ottava ci sono 12 semitoni (tra tasti bianchi e neri) calcoliamo la frequenza di un semitono a 1 = x a 13 = 2 x a 13 = a 1 q 12 2 x = x q 12 q = (2)1/12

Scheda di lavoro n. 2 Calcolo della frequenza della nota più bassa in un

Scheda di lavoro n. 2 Calcolo della frequenza della nota più bassa in un pianoforte Sapendo che, in un pianoforte, 440 è la frequenza del la dell'ottava centrale (dopo 48 note da quella avente frequenza più bassa ), calcoliamo la frequenza della nota più bassa : 440= Nota_ più_ bassa (2)48/12 Nota_più_ bassa = 440/24 = 27. 5

Scheda di lavoro n. 3 Calcolo della frequenza di una nota Ora sapendo il

Scheda di lavoro n. 3 Calcolo della frequenza di una nota Ora sapendo il valore del semitono e della frequenza della nota più bassa possiamo calcolare la frequenza di una qualunque nota ( dopo x note da quella più bassa ): frequenza = Nota_più_bassa (2)x/12

Scheda di lavoro n. 4 Implementazione in Turbo Pascal Per implementare in Turbo Pascal

Scheda di lavoro n. 4 Implementazione in Turbo Pascal Per implementare in Turbo Pascal una procedura che calcoli le frequenze delle note è opportuno trasformare la formula precedente in: frequenza = Nota_più_bassa e x(log 2)/12

Ora è possibile scrivere la procedura per calcolare le frequenze delle note dell'ottava centrale

Ora è possibile scrivere la procedura per calcolare le frequenze delle note dell'ottava centrale Procedure lenote; function nota(x: integer): integer; begin rapp: =ln(2)/12; nota : = round(notapiùbassa* exp(rapp*x)); end; begin notado: =nota(52); re: =nota(54); mi: =nota(56); fa: =nota(57); sol: =nota(59); la: =nota(61); si: =nota(63); end;

Scheda di lavoro n. 5 Ora possiamo inserire questa procedura in un piccolo programma

Scheda di lavoro n. 5 Ora possiamo inserire questa procedura in un piccolo programma che ci permetterà di suonare le note e anche l’inno alla gioia di Beethoven, adoperando uno spartito semplificato, utilizzando l'istruzione sound per il suono di una nota , nosound per sottolineare la fine di una battuta e delay per la durata delle note. (la durata delle note dipende molto dal microprocessore del proprio computer) l Passiamo alla procedura che permetterà agli alunni di suonare con il calcolatore l'inno alla gioia: l

Prima le 8 note ( dal do dell’ottava successiva) e poi l’inno alla gioia

Prima le 8 note ( dal do dell’ottava successiva) e poi l’inno alla gioia

Inno alla gioia l Certo questo è decisamente più bello e completo ma è

Inno alla gioia l Certo questo è decisamente più bello e completo ma è stato registrato da un disco, l’altro è stato implementato nota per nota in Turbo Pascal

Scheda di lavoro n. 6 Ora utilizziamo questi programmi di musica per giocare al

Scheda di lavoro n. 6 Ora utilizziamo questi programmi di musica per giocare al gioco del 7 : dopo un’introduzione grafica e sonora (musica tratta dalla colonna sonora del film “La pantera rosa”), si passa al gioco : il computer scrive un numero casuale, se esso è multiplo di 7 o inizia o termina per 7 il giocatore deve scrivere “s” altrimenti deve scrivere “n”. In ogni caso vi sarà un commento scritto e sonoro ( in caso di risposta corretta l’inno alla gioia , in caso di risposta errata un commento sonoro ironico). Il computer calcola anche il numero di risposte esatte e dà la possibilità di terminare o continuare a giocare quante volte si vuole. Clicca qui per lanciare il programma gioco 7 s

program gioco 7 s; {$i graph. p} const notapiubassa=27. 5; semitono=1. 05946; var n,

program gioco 7 s; {$i graph. p} const notapiubassa=27. 5; semitono=1. 05946; var n, domande, esatte: integer; risposta: char; rispo: char; var notado, re, mi, fa, sol, la, si, do 2, re 2, si 2, re 3, fa 2, sib, la 2, sol 2, re 1, mi 1, fa 1, si 1: integer; rapp: real; procedure lenote; function nota(x: integer): integer ; begin rapp: =ln(2)/12; nota: =round(notapiubassa*exp(rapp*x)); end; begin notado: =nota(52); re: =nota(54); re 3: =nota(55); mi: =nota(56); fa: =nota(57); fa 2: =nota(58); sol: =nota(59); la: =nota(61); si: =nota(63); do 2: =nota(64); re 2: =nota(66); si 2: =nota(51); sib: =nota(50); la 2: =nota(49); sol 2: =nota(47); re 1: =nota(42); mi 1: =nota(44); fa 1: =nota(46); si 1: =nota(39); end;

procedure ritornello; begin sound(si); delay(8000); nosound; sound(notado); delay(8000); nosound; sound(re); delay(8000); nosound; sound(notado); delay(8000);

procedure ritornello; begin sound(si); delay(8000); nosound; sound(notado); delay(8000); nosound; sound(re); delay(8000); nosound; sound(notado); delay(8000); nosound; sound(si); delay(8000); nosound; sound(la); delay(8000); nosound; sound(sol); delay(8000); nosound; sound(la); delay(8000); nosound; sound(si); delay(12000); nosound; sound(la); delay(8000); nosound; sound(la); delay(12000); nosound; end;

procedure ritornello 2; begin sound(re 3); delay(1600); nosound; sound(mi); delay(6400); nosound; delay(4800); nosound; sound(fa

procedure ritornello 2; begin sound(re 3); delay(1600); nosound; sound(mi); delay(6400); nosound; delay(4800); nosound; sound(fa 2); delay(1600); nosound; sound(sol); delay(6400); nosound; delay(4800); nosound; sound(re 3); delay(1600); nosound; sound(mi); delay(4800); nosound; sound(fa 2); delay(1600); nosound; sound(sol); delay(4800); nosound; sound(do 2); delay(1600); nosound; sound(si); delay(4800); nosound; sound(mi); delay(1600); nosound; sound(sol); delay(4800); nosound;

sound(si); delay(1600); nosound; sound(sib); delay(16000); nosound; sound(la); delay(3200); nosound; sound(sol); delay(3200); nosound; sound(mi); delay(3200);

sound(si); delay(1600); nosound; sound(sib); delay(16000); nosound; sound(la); delay(3200); nosound; sound(sol); delay(3200); nosound; sound(mi); delay(3200); nosound; sound(re); delay(3200); nosound; sound(mi); delay(12800); nosound; delay(6400); nosound; delay(4800); nosound; end;

procedure ritornello 3; begin sound(re); delay(4000); nosound; sound(mi); delay(4000); nosound; sound(fa); delay(6400); nosound; delay(2400);

procedure ritornello 3; begin sound(re); delay(4000); nosound; sound(mi); delay(4000); nosound; sound(fa); delay(6400); nosound; delay(2400); nosound; sound(mi); delay(6400); nosound; sound(re); delay(8000); nosound; sound(re); delay(4000); nosound; sound(mi); delay(2400); nosound; sound(fa); delay(3200); nosound; sound(sol); delay(4000); nosound; sound(fa); delay(4000); nosound; sound(mi); delay(4000); nosound; sound(re); delay(12800); nosound; end;

procedure cornice 2; var k: integer; begin graphcolormode; writeln; writeln(' IL NUOVO'); writeln(' GIOCO

procedure cornice 2; var k: integer; begin graphcolormode; writeln; writeln(' IL NUOVO'); writeln(' GIOCO DEL 7 '); writeln; writeln(' PREMERE INVIO PER GIOCARE'); writeln; writeln(' Programma realizzato '); writeln( ' dalla prof. ssa Oriana Pagliarone '); writeln; for k: = 0 to 20 do begin circle(8+k*16, 0, 8, 1); circle(0, 8+k*16, 8, 1); circle(8+k*16, 200, 8, 1); circle(320, 8+k*16, 8, 1); end;

procedure cornice; var k: integer; begin for k: = 0 to 20 do begin

procedure cornice; var k: integer; begin for k: = 0 to 20 do begin circle(8+k*16, 0, 8, 1); circle(0, 8+k*16, 8, 1); circle(8+k*16, 200, 8, 1); circle(320, 8+k*16, 8, 1); circle(280, 169, 14, 1); circle(280, 169, 10, 3); circle(280, 169, 8, 2); circle(280, 169, 6, 1); circle(280, 169, 4, 3); circle(280, 169, 2, 2); circle(280, 169, 0, 1); circle(240, 145, 12, 1); circle(240, 145, 8, 3); circle(240, 145, 6, 2); circle(240, 145, 4, 1); circle(240, 145, 2, 3); circle(240, 145, 0, 2); circle(185, 155, 13, 2); circle(185, 155, 9, 1); circle(185, 155, 7, 3); circle(185, 155, 5, 2); circle(185, 155, 3, 1); circle(185, 155, 2, 3); circle(185, 155, 0, 2); circle(60, 150, 15, 1); circle(60, 150, 11, 3); circle(60, 150, 9, 2); circle(60, 150, 7, 1); circle(60, 150, 5, 3); circle(60, 150, 3, 2); circle(60, 150, 1, 1); circle(120, 165, 11, 3); circle(120, 165, 7, 2); circle(120, 165, 5, 1); circle(120, 165, 3, 3); circle(120, 165, 1, 2); end;

begin clrscr; lenote; graphcolormode; cornice 2; ritornello 2; readln; domande: =0; esatte: =0; repeat

begin clrscr; lenote; graphcolormode; cornice 2; ritornello 2; readln; domande: =0; esatte: =0; repeat clrscr; graphcolormode; cornice; domande: =domande+1; n: =trunc(random *100); n: =trunc(random*100); writeln; writeln(' Il computer sceglie un numero a caso'); writeln; writeln(' ', n); writeln(' cornice; writeln; writeln(' Se il numero è multiplo di 7'); writeln(' o inizia o termina per 7 '); writeln(' scrivi s, ALTRIMENTI n'); writeln(' cornice; writeln; write(' '); cornice; readln( risposta); cornice; if((((n mod 7 =0)or(n mod 10 =7))or(n div 10 = 7))and(risposta ='s'))or (not((((n mod 7 =0)or(n mod 10 =7))or(n div 10=7)))and(risposta ='n')) then begin esatte: =esatte+1; writeln; writeln(' BRAVO !'); writeln(' ritornello; end else begin writeln; writeln(' IMPARA LA MATEMATICA !'); writeln(' ritornello 3; end;

writeln; write(' Vuoi continuare a giocare ? (s/n)'); cornice; readln(rispo); until(rispo='n'); cornice; writeln(' Il

writeln; write(' Vuoi continuare a giocare ? (s/n)'); cornice; readln(rispo); until(rispo='n'); cornice; writeln(' Il numero di risposte ESATTE E''', esatte); writeln(' su un totale di ', domande , ' domande'); cornice; readln; end.