Page 4 of 6

Posted: Sun 11 Apr 2010, 20:01
by goshujinsama
Hola de nuevo amigos, walter, mi programa hace eso que quieres hacer, bueno no para el sonido que se corrio antes, pero eso seria caso de unas variables y ya, pero pues dices que segmentation fault, ya intentastes correrlo dandole click al binario?, asi si deberia de funcianar mi programa.

Aparte para lo que dices, gtk deberia de darte acceso a varios canales, y no estoy muy seguro de que lo haga, aunque si te diera una funcion para parar el sonido podria ser mucho mas facil de lo que crees, y pues para el teclado, creo que con la funcion scanf es mas que suficiente, saludos.

hola

Posted: Sun 11 Apr 2010, 20:27
by walter leonardo
lo primero que hice fue abrirlo aciendo click en el binario pero no paso nada y despues lo trate de ejecutar desde consola y me da ese error de segmentation fault.
bueno lo dices muy cencillo pero yo nose como hacerlo, estaria bueno que me pases esa funcion para frenar el sonido y como darles variables y usar ese scanf.
con un ejemplo ya me dare cuenta :D .Recien estoy en esto de gtk y me esta gustando mucho.

que tal...

Posted: Sun 11 Apr 2010, 20:57
by mister_electronico
Hola que tal goshujinsama ante todo no me ofendes para nada, lo que pasa es que no entiendo muy bien, lo que me quieres decir......

si tu te vas a home y pones delante del ejecutable organo.sh el puntero del raton y aprietas el boton derecho, y seleccionas open as text te sale lo siguiente:


#!/bin/sh
# Programa hecho por Angel Gutierrez.
# Para cualquiera que lo quiera utilizar.
# los sonidos pertenecen a Fernando Escutia Rodriguez
# de su programa teclado.


export script='
<vbox>
<button>
<label>Anamalaty</label>
<action>aplay /mnt/home/sounds/animalaty.wav</action>
</button>

<button>
<label>Babality</label>
<action>aplay /mnt/home/sounds/babality.wav</action>
</button>

<button>
<label>Ecxelen</label>
<action>aplay /mnt/home/sounds/ecxelen.wav</action>
</button>

<button>
<label>Fatality</label>
<action>aplay /mnt/home/sounds/fatality.wav</action>
</button>

<button>
<label>Its_that_your_best</label>
<action>aplay /mnt/home/sounds/its_that_your_best.wav</action>
</button>

<button>
<label>Finish_him</label>
<action>aplay /mnt/home/sounds/finish_him.wav</action>
</button>

<button>
<label>Toasty</label>
<action>aplay /mnt/home/sounds/toasty.wav</action>
</button>

<button>
<label>Well_done</label>
<action>aplay /mnt/home/sounds/Well_done.wav</action>
</button>
<button>
<label>Salir</label>
</button>

</vbox>'

gtkdialog3 -p script


Este programas es un script que le pasa los valores a gtkdialog3 y bueno en definitiva como veras todos los <action> de los botones busca los sonidos dentro del directorio /mnt/home/sounds. Pero esto lo puedes variar y poner vosotros la direccion que querais y poner los sonidos donde os de la gana.

Por supuesto que no me importa para nada que modifiqueis este programa, para eso esta para que hagais lo que querais y lo mejoreis y lo modifiqueis a vuestra conveniencia...... no se puede considerar un programa sino un ejemplo.

Un saludo y estoy aqui para cualquier consulta que me querais hace...

Saludos nos vemos.

hola

Posted: Sun 11 Apr 2010, 21:01
by walter leonardo
mister lo que el decia era hacer esto.

Code: Select all

#!/bin/sh 
# Programa hecho por Angel Gutierrez. 
# Para cualquiera que lo quiera utilizar. 
# los sonidos pertenecen a Fernando Escutia Rodriguez 
# de su programa teclado. 


export script=' 
<vbox> 
<button> 
<label>Anamalaty</label> 
<action>aplay sounds/animalaty.wav</action> 
</button> 

<button> 
<label>Babality</label> 
<action>aplay sounds/babality.wav</action> 
</button> 

<button> 
<label>Ecxelen</label> 
<action>aplay sounds/ecxelen.wav</action> 
</button> 

<button> 
<label>Fatality</label> 
<action>aplay sounds/fatality.wav</action> 
</button> 

<button> 
<label>Its_that_your_best</label> 
<action>aplay sounds/its_that_your_best.wav</action> 
</button> 

<button> 
<label>Finish_him</label> 
<action>aplay sounds/finish_him.wav</action> 
</button> 

<button> 
<label>Toasty</label> 
<action>aplay sounds/toasty.wav</action> 
</button> 

<button> 
<label>Well_done</label> 
<action>aplay sounds/Well_done.wav</action> 
</button> 
<button> 
<label>Salir</label> 
</button> 

</vbox>' 

gtkdialog3 -p script

hola

Posted: Sun 11 Apr 2010, 21:05
by goshujinsama
Hola de nuevo walter, que malo lo de mi programa, tal vez puede ser lo de los permisos, pero bueno, dejo de nuvo el archivo subido pero ahora tambien trae una compilacion static para ver si me hacen favor de checarlo y ver si ahora si corre, el binario a ejecutar es el Teclado-MK_sound_test01 y pues si pueden chequenlo de favor.

Y sobre el ejemplo, dejame y investigo un poco nas de gtk ya que no soy muy fluido en el, pero por lo que he visto tiene demasiadas similitudes con el c.

Bien justo lo qu decia..

Posted: Sun 11 Apr 2010, 21:21
by mister_electronico
Walter esta bien, justo lo que te decia.... en mi caso mi instalacion es frugal y no me interesa colgar del directorio principal un directorio /sounds por que esto haria mas grande el archivo puppy - xxx.2fs.

Pero bueno como te dije lo podeis colocar en cualquier directorio.....

goshujinsama voy a intentar compilarlo y ejecutarlo y te cuento.......... Oye por cierto tu no esta utilizando puppy 431... puede ser que por ahi venga el problema de Segmentacion defaut no lo se...

Bueno te cuento...

Un saludo.

Nada mas de los mismo.

Posted: Sun 11 Apr 2010, 21:51
by mister_electronico
No me sigue el mismo problema he ejecutado los dos programas de tu tar. desde termial y desde con el puntero del mouse y el mismo error, lo he vuelto a compilar el programa que mandas pero mas de lo mismo....

Cuando lo compilo me da dos warning de *char te mando la imagen que me sale... nos vemos...... un saludo.

hola

Posted: Sun 11 Apr 2010, 22:17
by walter leonardo
Ami me pasa lo mismo con el programa chmsee me da error segmentation faul y cuando lo instalo en live-cd si anda bien pero le pongo las traducciones al español que tengo y ya no anda y me da error segmentation faul.

Hola

Posted: Tue 13 Apr 2010, 02:47
by goshujinsama
Mister esos warnings que te da a mi tambien me los da, y de echo si te genera el binario ejecutable, lo que estaba pensanco es que tal ves nuestros directorios difieren un poco, o tambien puede ser que no estemos usando el mismo gestor de ventanas, aunque eso seria raro, pero podria ser, yo uso icewm, igual y se debe a esto, no lo se, y todo esto es una lastima por que en realidad es una muy buena libreria esta, yo en mi caso no me rendire, tratare de encontrar el problema y a seguir trabajando con sdl.

Posted: Tue 13 Apr 2010, 02:52
by goshujinsama
Bueno, en tu imagen mister vi que las librerias las tienes en local, por que no las copeas a /usr/lib, y las cabeceraz a /usr/include/SDL, pero primero nadamas con las librerias, por que creo que las cabeceras no deben de tener que ver en nada.

GTK TUTO

Posted: Tue 13 Apr 2010, 15:21
by goshujinsama
Bueno, pues he estado buscando un buen tuto de gtk, y por fin lo encontre, y lo mejor de todo en español; pero, a lo que ustedes llaman gtk no es gtk, sin ofender, les dejo un buen tuto de gtk, lo checan y me dicen que tal les parecio.

NOTA: Viene en formato html, el archivo principal es gtk_tut.es.html

hola

Posted: Sat 17 Apr 2010, 18:49
by walter leonardo
hola muchachos.
Seria bueno que vallamos poniendo tutoriales en español asi aprendemos todos de todo un poco :D .

Seria bueno

Posted: Sun 18 Apr 2010, 13:46
by mister_electronico
Si seria bueno poner tutoriales como dices, creo tambien que seria bueno que se abries post independientes para cada uno de los lenguajes.. por ejemplo:

Un post para GTKdialog, otro post para lenguaje C, otro post para Scripts, otro post para SDL, otro post para GTK, etc....

Aunque los post fueran lentos, pero seria un sitio donde ir ordenando la informacion.

Saludos.

Hola

Posted: Mon 19 Apr 2010, 18:59
by goshujinsama
Bueno, pues estoy de acuerdo con esto de hacer distintos post, pero no me han dicho si ya les funciono sdl y ahorita es con lo que podria ayudar, saludos.

hola

Posted: Sat 24 Apr 2010, 01:45
by walter leonardo
hola.
Bueno vuelvo a la carga :D .
Encontré estos código en C,
1_es para reproducir sonidos con el teclado.
2_es para asignar un sonido a una tecla (este es mas sencillo).

1_

Code: Select all

#include<lib.h>
#include<stdio.h>

void nuevo();
void abrir();
void gravar();
void caja(int modo, char msg[45], int y);

struct music
	{
		int grava0[530];
		int grava1[530];
		int grava2[530];
	};

int cargado = 0;
int gravado = 0;
int abierto = 0;
char nombremus[9];
struct music datos;

main()
	{
		char resp;
		int a, f, d, num;
		int i, x, y, x2, y2, x3, y3, cont, cont2, gravando = 0, tec_esp = 0;
		f = 10; d = 5000;
inicio:
		textbackground(7);
		clrscr();
		textcolor(1);
		cuadro(1,29,23,1,2);
		cuadro(1,24,23,29,2);
		cuadro(1,29,23,52,2);
		gotoxy(1,8);
		for (i = 1; i <= 29; i++)
			cprintf("Ä");
		gotoxy(1,8); cprintf("Ã");
		gotoxy(29,8); cprintf("´");

		textcolor(0);
		gotoxy(10,8); cprintf("TECLAS");
		gotoxy(3,10); cprintf("(A-Z, a-z) Sonidos");
		gotoxy(3,11); cprintf("+ Aumentar frecuencia");
		gotoxy(3,12); cprintf("- Disminir frecuencia");
		gotoxy(3,13); cprintf("> Aumentar duraci¢n");
		gotoxy(3,14); cprintf("< Disminuir duraci¢n");
		gotoxy(3,15); cprintf("* Inicio/Detener gravaci¢n");
		gotoxy(3,16); cprintf("/ Escuchar gravaci¢n");
		gotoxy(3,17); cprintf("= Borrar pantalla");
		gotoxy(3,19); cprintf("F2 Gravar");
		gotoxy(3,20); cprintf("F3 Abrir");
		gotoxy(3,21); cprintf("F4 Nuevo");
		gotoxy(3,22); cprintf("ESC Salir");
		if (abierto)
			{
				i = 0;
				textcolor(0);
				for (y = 3; datos.grava0[i] != '\f'; y++)
					for (x = 53; x <= 80 && datos.grava0[i] != '\f'; x++)
						{
							gotoxy(x,y);
							cprintf("%c", datos.grava0[i]);
							i++;
						}
			}
		cont = 0;
		x = 30; y = 3;
		if (!abierto)
			{
				num = cont2 = 0;
				x2 = 53; y2 = 3;
				for (i = 0; i < 530; i++)
					datos.grava0[i] = datos.grava1[i] = datos.grava2[i] = 0;
			}
		do
			{
				textcolor(0);
				gotoxy(10,2); cprintf("INFORMACION");
				gotoxy(62,2); cprintf("GRAVACION");
				if (cargado)
					{
						gotoxy(30,2);
						cprintf("%s", nombremus);
					}
				gotoxy(3,3);
				cprintf("Frecuencia: %d", f);
				gotoxy(3,4);
				cprintf("Duracion(seg): %d", d / 1000);
				textcolor(4);
				gotoxy(4,6);
				if (gravando)
					textcolor(-12);
				else
					textcolor(7);
				cprintf("GRAVANDO");
				textcolor(0);
				gotoxy(x,y);
				resp = getche();
				if (resp == '\x0')
					{
						resp = getch();
						tec_esp = 1;
					}
				else
					if (gravando)
						{
							textcolor(0);
							gotoxy(x2,y2); cprintf("%c", resp);
							datos.grava0[cont2] = resp;
							datos.grava1[cont2] = f;
							datos.grava2[cont2] = d;
							datos.grava0[cont2+1] = '\f';
							cont2++;
							x2++;
							if (x2 == 80)
								{
									x2 = 53;
									y2++;
								}
						}
				if (!tec_esp)
					{
						switch (resp)
							{
								case '+': f += 10; break;
								case '-': if (f > 10) f -= 10; break;
								case '>': d += 1000; break;
								case '<': d -= 1000; break;
								case '*':
									if (gravando) gravando = 0;
									else gravando = 1;
									break;
								case '/':
									x3 = 53; y3 = 3;
									for (i = 0; i <= num+1; i++)
										{
											textbackground(3);
											gotoxy(x3,y3); cprintf("%c", datos.grava0[i]);
											if (datos.grava0[i] >= 65 && datos.grava0[i] <= 122 || datos.grava0[i] == 32)
												{
													a = datos.grava0[i] - 65;
													a *= datos.grava1[i];
													sound(a);
													delay(datos.grava2[i]);
													nosound();
												}
                                 textbackground(7);
											gotoxy(x3,y3); cprintf("%c", datos.grava0[i]);
                                 x3++;
											if (x3 == 80)
												{
													x3 = 53;
													y3++;
												}
										}
									break;
								case '=':
									goto inicio;
								default:
									a = resp - 65;
									a *= f;
									sound(a);
									delay(d);
									nosound();
									break;
							}
						x++;
						cont++;
						num++;
					}
				else
					{
						switch (resp)
							{
								case '<': gravar(); goto inicio;
								case '=':
									abrir();
                           num = cont2 = 0;
									for (y2 = 3; y2 <= 20; y2 ++)
										{
											for (x2 = 53; x2 <= 81; x2++)
												{
													cont2++;
													num++;
													if (datos.grava0[cont2] == '\f')
														break;
												}
											if (datos.grava0[cont2] == '\f')
												break;
										}
									goto inicio;
								case '>': nuevo(); goto inicio;
							}
						tec_esp = 0;
					}

				if (x == 51)
					{
						x = 30;
						y ++;
					}
				if (y == 24)
					goto inicio;
			}
		while (resp != 27);

	}
void nuevo()
	{
		char resp;
		if (gravado)
			{
				abierto = 0;
				cargado = 0;
				gravado = 0;
			}
		else
			{
				printf("\a");
				caja(1,"Musica no Gravada",12);
				caja(0,"¨Gravar ahora?",13);
				resp = toupper(getche());
				if (resp == 'S')
					{
						gravar();
                  abierto = 0;
						cargado = 0;
						gravado = 0;
					}
				else
					return;
			}
	}
void abrir()
	{
		FILE *arch;
		int i;
		char resp,nombre[9];
nombre:
		caja(1,"ABRIR",9);
		caja(0,"Nombre del archivo:",10);
		gotoxy(31,11);
		textbackground(3);
		strcpy(nombre,captura(8));
		textbackground(7);
		for (i = 0; i < strlen(nombre); i++)
			if (nombre[i] == '.')
				goto abrir_arch;
		strcat(nombre,".mus");
abrir_arch:
		if ((arch = fopen(nombre, "rb")) == NULL)
			{
				printf("\a");
				caja(0,"No se encontr¢",12);
				getche();
				goto nombre;
			}
		nuevo();

		for (i = 0; i < 530; i++)
			datos.grava0[i] = datos.grava1[i] = datos.grava2[i] = 0;
		fread(&datos, sizeof(struct music), 1, arch);

		fclose(arch);
		for (i = 0; i <= strlen(nombre); i++)
			nombremus[i] = nombre[i];
		cargado = gravado = abierto = 1;
	}
void gravar()
	{
		int i;
		FILE *arch;
		char nombre[9], resp;
		abierto = 1;
		textcolor(4);
nombre:
		caja(1, "GRAVAR", 9);
		textcolor(1);
		caja(0, "Nombre del archivo:", 10);
		gotoxy(31,11);
		textbackground(3);
		strcpy(nombre,captura(8));
		textbackground(7);
		for (i = 0; i < strlen(nombre); i++)
			if (nombre[i] == '.')
				goto abrir_arch;
		strcat(nombre,".mus");
abrir_arch:
		if ((arch = fopen(nombre, "rb")) != NULL)
			{
				printf("\a");
				caja(0,"Archivo ya existe",12);
				caja(0,"¨Quieres",13);
				caja(0,"sobrescribirlo?",14);
				caja(0,"[S/N]:",15);
				textbackground(3);
				resp = toupper(getche());
				textbackground(7);
				if (resp == 'N')
					goto nombre;
				fclose(arch);
			}
		if ((arch = fopen(nombre, "wb")) == NULL)
			{
				printf("\a");
				caja(0,"Error al tratar",12);
				caja(0,"de abrir archivo.",13);
				getche();
				return;
			}
		fwrite(&datos, sizeof(struct music), 1, arch);
		gravado = 1;
		cargado = 1;
		for (i = 0; i <= strlen(nombre); i++)
			nombremus[i] = nombre[i];
		fclose(arch);
	}
void caja(int modo, char msg[45], int y)
	{
		int x;
		if (modo == 1)
			{
				textcolor(0);
				textbackground(4);
				cuadro(2,22,10,30,8);
				textcolor(3);
				fondo(30,8,21,9);
			}
		x = (20-strlen(msg))/2+31;
		gotoxy(x,y);
		textcolor(1);
		textbackground(3);
		cprintf("%s", msg);
		textbackground(7);
	}
//Por Aurelio Márquez
2_

Code: Select all

#include <stdio.h>
#include <conio.h>
#include <dos.h>
#define N 500
void main(){

char x;
do{
x=getch();
sound(x*10);
delay(50);
nosound();
}while(x!=27);

}

Les subo el programa para que lo analicen, usen, y si pueden lo compilen :D .

hola

Posted: Sun 25 Apr 2010, 00:48
by walter leonardo
hola de nuevo :D .
Encontré una de las soluciones que quería y fue de pura casualidad jeje estaba probando y se me ocurrió poner este símbolo & y con esto al apretar el botón varias veces el sonido se reproduce varias veces rápidamente sin esperar a que termine de sonar para sonar de vuelta.
Ahora me falta descubrir como tocar un botón con el teclado y la tecla que yo quiera :D .

Descarguenlo y pruebenlo que quedo espectacular :lol: .

Que bueno walter....

Posted: Sun 25 Apr 2010, 10:59
by mister_electronico
Muy bueno walter, estupenda solucion......

La verdad es que tenia que haber una solucion ya que hay programas que lo hacen, al abrir por ejemplo Aqualung, se reproducen tantos archivos sonoros como abras al mismo tiempo...

Que bueno, y ademas es que no esta documentado en la ayuda de aplay --help.

Muy muy pero que muy bueno...


Con respecto al post anterior que pusiste comentarte que en principio no se puede ejecutar por que comandos como gotoxy, cprint, texcolor etc... pertenecen a la biblioteca conio.h

Esta biblioteca conio.h no pertenece al estandar Ansi de C, pertenece a la biblioteca de Borland para Dos.

La solucion es libconio.h que en el codigo que tu pones aparece un lib.h, pero que debe ser libconio.h

Luego falta otra biblioteca que debe ser string.h por que si no te reconoce comandos como strcpy().

Pero no es el unico fallo que tiene, por ejemplo la funcion cuadro() que ha no aparece
aparece definida en ningun sitio ni tampoco declarada.

Ademas de otros errores de sintaxis...

Te tienes que hacer con la libreria libconio.h para poder compilar este tipo de programas:

http://sourceforge.net/projects/libconi ... z/download


para compilarla mediante

./configure
make
make install

Aparte de declarar dentro del programa como siempre con #include <libconio.h>

La forma de compilar el programa es enlazandolo tambien de la siguiente forma:


gcc archivo.c -llibconio - archivo

Para ejecutarlo

./archivo

Bueno te sigo comentando en otro post.

Otro modo de hacerlo...

Posted: Sun 25 Apr 2010, 11:41
by mister_electronico
Una alternativa a la libreria conio de Borland, es la libreria curses que se utiliza en Linux....

Ejemplo:

#include<stdio.h>
#include<curses.h>

int cuadro (int a,int b,int c,int d)
{
int x;
for (x = a; x != c; x++){
move (b,x);
addch('-');
}

for (x = b; x != d; x++){
move (x,c);
addch('|');
}
for (x = c; x != a; x--){
move (d,x);
addch('-');
}
for (x = d; x != b; x--){
move (x,a);
addch('|');
}

move (b,a); addch('+');
move (b,c); addch('+');
move (d,c); addch('+');
move (d,a); addch('+');
}
int main ()
{
initscr();
savetty();
erase ();
cuadro (5,5,70,20);
cuadro (6,7,69,19);
start_color ();
init_pair
(1,COLOR_CYAN,COLOR_BLACK);
attron (COLOR_PAIR (1) |
A_UNDERLINE);
move (6,15);
addstr("Hola esto es una prueba");
refresh ();
getch ();
echo ();
resetty();
endwin();
return 0;
}


Si lo guardas como ejercicio.c lo compiladras de la siguiente forma:

gcc ejercicio.c -lcurses -o ejercicio


Y para ejecutarlo

./ejercicio

Asi como veras la alternativa a gotoxy de conio es move y asi todo lo demas...

Veras un documentacion muy completacon gran cantidad ejemplos de la bibilioteca ncurses.h o curses que es la misma ya que esta en lazada, en la direccion:


http://tldp.org/HOWTO/NCURSES-Programmi ... world.htmll



Creo que si le echais un vistazo lo encontrareis interesante. La biblitoteca ncurses o curses es mucho mas completa que la de la de conio y merece la pena en pararse en ella...




Bueno un saludo nos vemos.

Apliquemos lo que ya sabemos....

Posted: Thu 29 Apr 2010, 18:14
by mister_electronico
Apliquemos lo que ya sabemos, vemos programas en C, scripts, en Gtkdialog, etc... pues por que no aplicarlo a cosas usuales que hacemos...

La siguiente aplicacion de GTKdialog es una tonteria mas teniendo en cuenta el bookmarks de mozila y otros buscadores webs, pero bueno siempre puede ser bueno tener una pantallita con nuestras webs que visitamos constantemente y con un simple click meternos en ellas.

Un icono en el escritorio que enlace con este simple programa al directorio que queramos nos abre el programa en gtkdialog......

La estructura es tan simple como el mecanismo de un chupete, asi que podreis modificar muy facilmente las direcciones y los nombres de las webs asi como añadir mas...

Un saludo..

Posted: Fri 25 Feb 2011, 23:32
by mama21mama
xrec para grabar videos con ffmpeg.

lo subí a mi bazaar

Code: Select all

#bzr branch http://mamalibre.2.je/bzr/xrec
la idea es ponerle un icono al panel, para que haga rec y luego pause/stop

quien se prende? escucho ideas.

bazaar esta en mi repo, via ppm instalan la deps.

edito:
avance con glade algo va quedando. solo falta que ejecute el code :shock: :shock: :shock: :shock: :shock:


Image