Ir para conteúdo
Fórum Script Brasil
  • 0

Como Tocar Uma Musica Wav?


Heldinho

Pergunta

10 respostass a esta questão

Posts Recomendados

  • 0
cara, tem um problema, isto so funcionou no bcc, e eu estou usando o djgpp para fazer meu programa, e mudar pra o bcc a este ponto é = comenter suicidio... se você souber como fazer a lib funcionar no djgpp smile.gif

Infelizmente não sei te ajudar nesse caso. Achei aquele exemplo porque já conhecia essa função da API do Windows (uso VB), então foi só procurar por ela em um site de busca (juntando C++ à procura). No caso, acredito que você tenha que procurar como se declara a Win32 API no DJGPP (pensando bem, não deveria ser do mesmo jeito que em qualquer outro compilador?).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Não se tem a API Win32 em um arquivo... A API do Windows fica em suas DLLs como a user32, kernel32, winmm (que é usada no caso), etc. Ou seja, isso não se instala; já vem com o Windows. Como é garantido que todo Windows instalado em qualquer máquina terá esses determinados arquivos, não é necessário (e é até perigoso) colocá-los junto do programa. Digo perigoso porque a winmm.dll do Win98 pode ser diferente da winmm.dll do WinXP, por exemplo. Diferente no sentido de que a implementação seja diferente, porém as funções exportadas (o que usamos dela) são as mesmas. Por essa razão seu programa funcionará em qualquer sistema Windows.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, obriado pela explicação, eu que expliquei errado o que eu queria..bom, vamos lá... estou criando um"os", mas e entre aspas mesmo smile.gif, e ele roda em dos... para mouse eu usei o driver de mouse para DOS que vem no disco de boot do dos 6.1, agora para o som eu nem imagino se existe um driver pra dos, ou mesmo uma biblioteca capaz de produzir sons em dos(sem ser pelo pc speaker).. Alguém me dá uma luz?

Link para o comentário
Compartilhar em outros sites

  • 0

cara, eu achei isto: http://www.programmersheaven.com/search/do...sp?FileID=15971 , um comentário até falou que e funciona perfeitamente somente em C, mas não sei usar blink.gif .. bom, baixei o file.zip e separei os arquivos que estao dentro daquele cpp.... porem não consegui usar a funcao WaveFile_Read(???? <-- não sei o que colocar aqui!); .. Gomes, me ajuda!!

Olha o erro que dá:

c:\meus documentos\teste.cpp: In function `int main(...)': <-- so trocar o void por int, mas e os outros?

c:\meus documentos\teste.cpp:81: passing `const char *' as argument 1 of `WaveFile_Init(WaveFile *)'

c:\meus documentos\teste.cpp:82: passing `const char *' as argument 2 of `WaveFile_Read(const char *, WaveFile *, void **)'

Agora olha o meu código:

#include <mem.h>
#include <stdlib.h>
#include <stdio.h>
#include "wavefile.hpp"

void WaveFile_Init(WaveFile *wf)
{
  memcpy(wf->header.riff , (const void *)"RIFF", 4);
  memcpy(wf->header.rifftype, (const void *)"WAVE", 4);
  memcpy(wf->ch_format.chunk_id, (const void *)"fmt ", 4);
  wf->ch_format.chunksize=16;
  wf->format.wf.wFormatTag=WAVE_FORMAT_PCM;
  memcpy(wf->ch_data.chunk_id, (const void *)"data", 4);
};

void WaveFile_Set(WaveFile *wf,
  short channels,
  long samplerate,
  short datasize)
{
  WaveFile_Init(wf);
  wf->format.wf.nChannels=channels;
  wf->format.wf.nSamplesPerSec=samplerate;
  wf->format.wf.nAvgBytesPerSec=samplerate;
  wf->format.wf.nBlockAlign=datasize*channels/8;
  wf->format.wBitsPerSample=datasize;
};

void WaveFile_Fin(WaveFile *wf,
  short channels,
  long samplerate,
  short datasize,
  long totalsamples)
{
  WaveFile_Set(wf, channels, samplerate, datasize);
  wf->ch_data.chunksize=totalsamples * wf->format.wf.nBlockAlign;
  wf->header.filesize=wf->ch_data.chunksize + 36;
};

short WaveFile_Write(const char *filename, WaveFile *wf, void *data)
{
  FILE *wfile;

  if( ( wfile=fopen(filename, "wb") )!=NULL ) {
    fwrite( wf, sizeof(WaveFile), 1, wfile);
    fwrite( data, wf->ch_data.chunksize , 1, wfile);
    fclose(wfile);
    return(1);
  } else {
//    printf("Error in opening the file!\n");
    return(0);
  }
}

float wave_length(WaveFile *wf)
/* Return wave length in secs. */
{
  float len=(wf->ch_data.chunksize /
    wf->format.wf.nChannels) /
    (float)(wf->format.wf.nSamplesPerSec);
  return(len);
};

short WaveFile_Read(const char *filename, WaveFile *wf, void **data)
{
  FILE *wfile;

  if( ( wfile=fopen(filename, "rb") )!=NULL ) {
    fread( wf, sizeof(WaveFile), 1, wfile);
    *data=(char*)malloc(wf->ch_data.chunksize);
    fread( *data, wf->ch_data.chunksize , 1, wfile);
    fclose(wfile);
    return(1);
  } else {
//    printf("Error in opening the file!\n");
    return(0);
  }
}

void main(void){
WaveFile_Init("teste.wav");
WaveFile_Read("teste.wav","teste.wav");
}

Ahh, vou colocar seu nome nos créditos sim kkkkkkkkkkkkkkkkkkk, mas ainda não sei aonde vou colocar os créditos tongue.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Vish brow é complicadin héin!!!!

Mas é o seguinte, no Read, ele não sai tocando não, ele vai carregar a musica (primeiro parâmetro) e jogar os dados para aí ser tocado....

Esse *wm é uma struct que informa os padrões da musica ....

Só poderia ir mais afundo se tivesse tempo....

Em todo caso é uma boa esse programa, mas não vi funcionalidade de tocar....

Mas o que tem aí já é uma base bem forte por onde começar...

Até+

cool.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...