Crear archivos .wav desde Gemix.

Discusión en general sobre Gemix.

Re: Crear archivos .wav desde Gemix.

Postby SimulatorOne » Thu Sep 13, 2012 10:28 pm

oie, al final sigo con mis fisicas de pinball??

yo lo digo para dejarlo pausado hasta que salga el modulo de chipmunk ese....
o el Box2D

si va para mucho tiempo en portarlo... 2 semanas o mas... la verdad durante ese tiempo ya tendria el juego jugable, mejor que el antiguo que hacia cosas raras con la bola, esta nueva de ahora se comporta mejor y es mas realista.
pero no es 100% perfecto, tiene algunos bugs en determinados momentos en lugares precisos...

Que hago, sigo haciendo y experimentado, yo ya estoy superando el vache gordo de lo que es mas dificil de programar la simulacion de la fisica de rebotes,inercia y comportamiento de la bola.
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Re: Crear archivos .wav desde Gemix.

Postby necro_vampire » Thu Sep 13, 2012 11:02 pm

erkosone wrote:Bueno.. llevo toda la mañana peleandome con un programa que estoy escribiendo en c++ para poder crear un modulo que genere archivos .wav desde C y luego portarlo a Gemix, por ahora ya crea los archivos .WAV :D
Y ya no están corruptos jaja.. vamos que funciona.. haber si soy capaz de modularizar en varias funciones la creación de tonos simples, tonos modulados y esas cosas..

Solo escribo este post para comentar que ando mirando este tema, si todo funciona como debe seguramente haya un modulo para trastear con la creación de wav´s desde gemix, también estoy mirando como enviar eventos 'midi' al sintetizador de windows.. algo he conseguido.. pero es muy cutre.. pero vaya que tambien suena.. lo que pasa es que es que tengo poca experiencia con el sistema de threading en C++.. solo se hacerlo en Java.. y bueno.. estoy jugando con esto.. haber si consigo que me compile en mac el programa y comienzo a montar el modulo. :P
Linux lo descarto.. soy así de capullo XD..


deberias tratar de hacerlo directamente desde gemix y usar tweens para obtener los valores de amplitud de las onda...
Image
Rein (K´)ah Al-Ghul
Infected with the Krieger strain of the Human-MetaHuman Vampiric Virus.
User avatar
necro_vampire
 
Posts: 1372
Joined: Fri Oct 10, 2008 12:38 am
Location: Death Soul city???

Re: Crear archivos .wav desde Gemix.

Postby erkosone » Fri Sep 14, 2012 4:31 am

Si, no es mala idea, pero las tween serían ya para aplicar efectos al modulador, para construir un tono necesito montar una portadora con sin() o cos() y guardarlo en un array, y luego con tween modificar la portadora para conseguir la modulación, ya tengo la parte de la portadora, el modulador creo que va a ser directamente en código gemix por que me gustaría usar el modulo tween desde C++ pero no tengo ni idea de como hacerlo, quizá busque por la red una lib que haga algo parecido, en flash hay algunas funciones muy parecidas pero todavía no he mirado sin en C/C++ tengo algo así, y montarlo yo lo veo poco factible para que me quede de la misma calidad y posibilidades que el modulo que ya tiene gemix..

El código de la portadora es este:

Source Code (C++) [ Download ] [ Hide ]
  • #include "sndfile.hh"
  • #include <iostream>
  • #include <cmath>
  • #include <string>
  • int main()
  • {
  •     std::string pepe = "foo.wav";
  •         const int format=SF_FORMAT_WAV | SF_FORMAT_PCM_16;
  • //      const int format=SF_FORMAT_WAV | SF_FORMAT_FLOAT;
  •         const int channels=1;
  •         const int sampleRate=48000;
  •         const int frecuencia = 2500;
  •         const char* outfilename = pepe.c_str();
  •     //const float M_PI = 3.1416;
  •  
  •         SndfileHandle outfile(outfilename, SFM_WRITE, format, channels, sampleRate);
  •         if (not outfile) return -1;
  •  
  •         // prepare a 'n' seconds buffer and write it
  •         const int n = 1;
  •     const int size = sampleRate*n;
  •         float sample[size];
  •         float current=0.;
  •         for (int i=0; i<size; i++) {
  •         sample[i]=sin(float(i)/size*M_PI*frecuencia);
  •         //std::cout << sample[i] << std::endl;
  •         }
  •         outfile.write(&sample[0], size);
  •         return 0;


Es bastante sencillo con la lib que uso: 'libsndfile', está disponible para windows y linux, pero no estoy seguro de si me funcionará en mac.. tengo que mirarlo todavía..
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Previous

Return to General

Who is online

Users browsing this forum: No registered users and 4 guests