Computación 2 - 8 Sergio Floody.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Tema #10. FICHEROS.
Curso de java básico (scjp)
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
Clases en C++.
FICHEROS.
Audio y vídeo digital.
Repaso para la construcción del intérprete 2012
Fundamentos de la Programación Estructurada
Programación, Algoritmos y Estructuras de Datos
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Estructuras de Datos Memoria y Variables. Conceptos Computador: CPU + Memoria + Dispositivos E/S La memoria se encarga de almacenar los datos y los programas.
Ingeniero Anyelo Quintero
String o Cadenas Prof. Gonzalo Pastor. Cadenas o String ► En C, una cadena o texto se define como un vector de caracteres de longitud determinada que.
Archivos Programación.
Asignatura: Lenguaje de Programación de Sistemas PPT No.05 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya.
Archivos. fopen(...) Para comenzar a utilizar un archivo primero se debe abrir, invocando a la función fopen(...) FILE * fopen(char* nombre_arch, char*
Algoritmo de Detección de Silencio Sebastián Meric. Tomás Urra B. Pregrado.
 Multimedia: combinación de texto, sonido, imagen, animación o vídeo dentro de un mismo documento, con objeto de transmitir la información de un modo.
Cadenas y apuntadores Programación.
JAVA J.A.C..
Archivos.
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Valor X Valor Y Punto (0,0) Coordenadas.
Streams. / En casi todo programa se necesita traer o enviar información a una fuente externa. / Dicha información puede estar en un archivo en el disco.
El lenguaje de programación C - Identificadores y variables – Isidro González Caballero ( Introducción.
Manejo de archivos de datos en C
PROGRAMACION DE ARCHIVOS (MEMORIA SECUNDARIA). Registros y archivos Si bien es cierto que se pueden manejar gran cantidad de datos del mismo y diferente.
Programación orientada a objetos. El método main es el comportamiento por el cual comienzan todos los programas en Java, de la misma forma en la que C,
1 Algunas ideas básicas en C++ Agustín J. González ELO-329.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
Registros Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
No. 26 8:00 a.m. Lenguaje Ensamblador. Segmento de Pila  Model small  stack  Data  Code  mov  mov ds, ax  push ds  …código del programa.
Estructuras Una estructura es una colección de datos de diferente tipo. Se construye en dos pasos: 1- Creación del esqueleto de la estructura 2.- Colocación.
Unidad 2 Técnicas de modulación.
Fundamentos de Programación
Computación I. CI-2125 Tema VIII
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
Algoritmo.
ARREGLOS. La sintaxis para declarar e inicializar un array será: Tipo_de_variable[ ] Nombre_del_array = new Tipo_de_variable[dimensión]; También podemos.
Visual Basic Prof.: Carol Briones García. Uso de Archivos  Definición  Es un conjunto de información que se almacena en algún medio de escritura que.
Archivos. Introducción Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos.
Manejo de archivos de texto.  Unidad fundamental de almacenamiento dentro del ámbito de la informática. Alberga un conjunto de datos que es posible leer,
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Multiplexación 1. Se denomina multiplexación a la transmisión de la información desde múltiples fuentes a múltiples destinos, utilizando el mismo medio.
Introducción al Lenguaje C (II) Cadenas de caracteres, archivos de cabecera, lectura y escritura Fundamentos de Programación Departamento de Lenguajes.
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
Algunas ideas básicas de C++
Ing. Leonardo Párraga Teleprocesos. Ing. Leonardo Párraga Transmisión de datos TransmisióndeDatos Velocidades en un Sistema de Transmisión Modos de Transmisión.
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE SISTEMAS DE COMUNICACIONES MYR. MANOLO PAREDES GANCINO KATHERINENRC: 2188 MORA CARLOS RUIZ GUSTAVO VILA ANDRÉS.
Señales Analógicas. Señal Una señal es una perturbación de un entorno o medio provocado por una fuente que mediante dicha perturbación es capaz de transmitir.
Programación en C - manejo de Archivos
07- Señales moduladas en Angulo
Algunas ideas básicas de C++
El sonido tratado digitalmente puede:
MAX- MSP 05 Sergio Floody.
TIPOS DE DATOS Cadenas y caracteres PARCIAL III.
Algunas ideas básicas de C++
Nociones básicas sobre C++
Computación 2017 Archivos.
Nociones básicas sobre C++
Unidad 3. Introducción a la programación
Características de “C”
Algunas ideas básicas de C++
Audio digital Audio digital.
Transcripción de la presentación:

Computación 2 - 8 Sergio Floody

AM-FM La Amplitud Modulada corresponde a la multiplicación de una señal por otra. En general en la música se refiere a ella como tremolo Frecuencia portadora Frecuencia moduladora

AM-FM La Frecuencia Modulada corresponde a la modificación de la fase de una señal por otra. En general en la música se refiere a ella como vibrato Frecuencia portadora Frecuencia moduladora

AM-FM

AM-FM //$$---- Form CPP ---- //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "UnitAMFM.h" #include "math.h" #include "fstream.h" #pragma package(smart_init) #pragma resource "*.dfm"

AM-FM //estruc de encabezado wav struct TEncabezadoTipo { char ID_bloque_riff[4]; //contiene los caracteres "RIFF" int tamano_bloque_riff; char formato_archivo_riff[4]; //contiene los caracteres WAVE, avi u otros char ID_bloque_fmt[4]; //"fmt " <--ojo con el espacio int tamano_bloque_fmt; //16 (largo de bloque de aquí en adelante) short formato; //1:PCM short canales; //1:mono 2:stereo int fs; // frecuencia de muestreo 44100, 48000, etc int bytes_por_segundo; //bytes por segundo short alineacion; //alineacion short bits_por_muestra; //8, 16, etc char ID_bloque_data[4]; //aqui es "data" int tamano_bloque_data; //tamano bloque data };

AM-FM TForm1 *Form1; TEncabezadoTipo enc; //encabezado fstream F; //archivo short son01[749700]; //sonido sin procesar int NTx; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { }

AM-FM void __fastcall TForm1::btnAbrirClick(TObject *Sender) { //variables locales //int es de 32 bits (4bytes) //short de 16 (2bytes) //unsigned char es de 8 bits (1byte) short d16b; //de 16 bits if (OpenDialog1->Execute()) //cierra culquier ejecucion anterior MediaPlayer1->Close(); //abre el archivo usando OpenDialog F.open(OpenDialog1->FileName.c_str(),ios::in|ios::binary); //lee las caracteristicas del archivo wav F.read((char *)&enc,sizeof(enc));

AM-FM //prepara para graficar Chart1->Series[0]->Clear(); //ajustalos ejes Chart1->LeftAxis->Maximum = 32768; Chart1->LeftAxis->Minimum = -32768; //inicializa el arreglo for(int i = 0; i <= 749700-1; i++) { son01[i] = 0; } //tamaño de los datos NTx = enc.tamano_bloque_data/(enc.bits_por_muestra/8);

AM-FM //lee el archivo de audio y lo grafica for(int i = 1; i <=749700; i++) { F.read((char*)&d16b,2); Chart1->Series[0]->Add(d16b); son01[i-1] = d16b; } //cierra el archivo F.close(); //activa mediaplayer MediaPlayer1->FileName = OpenDialog1->FileName; MediaPlayer1->Open(); }//cierra el if

AM-FM void __fastcall TForm1::btnGenerarAMClick(TObject *Sender) { short d16b; double fport; double fmod; double t; //tiempo double dt; //periodo de muestreo = 1/fs double amp; double prof; short Amax; //de 16 bits (2bytes) //primer subchunck //la funcion strcpy copia un string en otro strcpy(enc.ID_bloque_riff,"RIFF");

AM-FM //enc.tamano_bloque_riff = fs*(16cuantizacion/8)*1canal*17segundos + 36 de offset //36 de offset se refiere al tamaño de los subchuncks RIFF_chunck y fmt_chunck enc.tamano_bloque_riff = 44100*2*1*17+36; //la funcion strcpy copia un string en otro strcpy(enc.formato_archivo_riff,"WAVE"); //segundo subchunck strcpy(enc.ID_bloque_fmt,"fmt "); enc.tamano_bloque_fmt = 16; enc.formato = 1; enc.canales = 1; enc.fs = 44100; enc.bytes_por_segundo = 44100*2*1; //fs*(16cuantizacion/8)*1canales enc.alineacion = 2*1; //(16cuantizacion/8)*canales enc.bits_por_muestra = 16;

AM-FM //tercer subchunck strcpy(enc.ID_bloque_data,"data"); enc.tamano_bloque_data = 44100*2*1*17; // fs*(cuantizacion/8)*1canal*17segundos //lectura datos fport = StrToFloat(txtPortadora->Text); fmod = StrToFloat(txtModuladora->Text); amp = StrToFloat(txtAmplitudFinal->Text); prof = StrToFloat(txtProfMod->Text); Amax = 10000*amp; t = 0; dt = 1.0/44100; Amax = 10000;

AM-FM //crea y abre el archivo F.open("am.wav",ios::out|ios::binary); //escribe el encabezado usa sizeof para determinar el tamaño F.write((char *)&enc,sizeof(enc)); //prepara para graficar Chart1->Series[0]->Clear(); //ajustalos ejes Chart1->LeftAxis->Minimum = 32768; Chart1->LeftAxis->Minimum = -32768;

AM-FM for (int i = 1; i <= 44100*17; i++) { d16b = Amax*(1 - prof + prof*cos(2*M_PI*fmod*t) ) *sin(2*M_PI*fport*t); //crea una muestra a la vez F.write((char *)&d16b,2); //escribe una muestra a la vez t += dt; // t = t + dt Chart1->Series[0]->Add(d16b); } //cierra el archivo F.close();

AM-FM for (int i = 1; i <= 44100*17; i++) { d16b = Amax*sin(2*M_PI*fport*t + prof*sin(2*M_PI*fmod*t) ); F.write((char *)&d16b,2); //escribe una muestra a la vez t += dt; Chart1->Series[0]->Add(d16b); } //cierra el archivo F.close(); El resto es igual!!!!!

Tareas Usar una señal de audio como una voz para realizar amplitud modulada en una onda senoidal. Usar una señal de audio como una voz para realizar frecuencia modulada en una onda senoidal. Desarrollar un chorus, su funcionamiento es similar al flanger pero los retardos de tiempo son generados por una señal aleatorea que ha sido filtrada por un pasa bajo. Desarrollar un filtro pasa banda cuya frecuencia central varie senoidalmente