Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

Como salvar um buffer de audio? Tópico resolvido

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Foxy Of Jungle
Programador
Programador
Reações: 0
Mensagens: 153
Localização: Brasil
Contato:

Como salvar um buffer de audio?

Mensagem por Foxy Of Jungle » Dom Mai 27, 2018 2:07 pm

Eu segui este tutorial, e consegui gravar a entrada de audio do Microfone, mas agora eu preciso saber como salvar o buffer criado a partir do audio gravado do Microfone.
Analisando um arquivo .wav, a primeira linha dele contém isto: "RIFF  WAVEfmt" será que o restante do arquivo é o buffer? 

O Buffer salvo puro sai essas letras codificadas:

Código: Selecionar todos

 6 > W J A * + 0 2 4 : 3 4 6 4 2 * $ ' C 1  % 6 9 * # 3 ; (  Ûÿ°ÿ¶ÿÓÿïÿ
   ïÿéÿóÿâÿØÿßÿîÿìÿØÿËÿ«ÿÿ¢ÿÿÿÿ‹ÿŸÿÿ ÿÿxÿˆÿyÿwÿ}ÿ|ÿ~ÿ|ÿ†ÿ…ÿqÿkÿ~ÿfÿwÿ|ÿrÿvÿTÿBÿ*ÿÿ2ÿ+ÿ/ÿ ÿÿ)ÿ'ÿÿ)ÿÿÿÿûþêþÛþÜþÿþöþÜþÖþÛþÖþÌþ°þªþ²þ­þ¹þ·þ¤þžþ­þ´þÄþ¼þ¦þ­þ¸þÅþºþÄþØþÌþÝþÉþ¹þ¿þ»þÄþ¿þºþÉþÂþÁþÓþÚþÚþÛþØþÐþÇþºþºþÀþÍþÕþØþäþöþñþìþòþúþõþýþúþÿÿþþþþÿÿ&ÿ?ÿ@ÿQÿ@ÿ.ÿ6ÿ9ÿFÿHÿIÿTÿgÿtÿ{ÿƒÿwÿÿ¨ÿ«ÿµÿ¼ÿ¿ÿÄÿÐÿÂÿÙÿêÿ×ÿÔÿ×ÿåÿéÿæÿûÿüÿþÿ   " 2 : 9 8 ? L e y Ï æ ß Ú í ñ × Ô Ò Ç » ² ¹ ¹ É Ñ Ó Ø Â º ³ ¿ Ö Ù Û ð ç Í Ì ¸ Ç Ù Ò ð ï â à å Ù Ä ¿ ² ¦ ¦ « © ¤ ˜  ¢ † ‰ ’ ¨ ·   Š œ ¥ ª ¯ ² ¬ ” ¡ ™ › ¥ £ • Ž ” ¡ — ’   ‰ ˜ ˜ • † } c ýÿñÿ 1     ùÿèÿÞÿÒÿÎÿÑÿËÿ¸ÿ¿ÿ¹ÿ¤ÿ¤ÿ®ÿ¦ÿ—ÿÿÿ”ÿ•ÿÿ€ÿ~ÿ{ÿjÿrÿsÿmÿyÿhÿZÿ^ÿ[ÿ[ÿeÿmÿTÿIÿMÿ:ÿÿÿÿÿ,ÿ/ÿÿÿ'ÿ3ÿ*ÿÿÿÿÿÿÿþÿþñþæþæþåþ×þÐþÇþ¿þ½þ¹þ¹þÇþÎþËþÎþÍþÖþÚþãþÚþäþäþáþýþÿÿúþðþôþûþéþâþàþÞþÝþáþéþòþàþäþÿÿ
ÿÿÿ)ÿ$ÿ!ÿ$ÿ2ÿ6ÿ+ÿ0ÿ/ÿ ÿ%ÿ-ÿ4ÿ9ÿAÿ5ÿ'ÿ-ÿ)ÿ5ÿ7ÿ?ÿQÿoÿqÿvÿ–ÿ”ÿˆÿÿ“ÿ¬ÿ¶ÿ¸ÿÆÿÌÿÑÿÖÿ×ÿÞÿïÿóÿûÿ ýÿ   (       ( 0 . 4 T [ I O a j  s } ‡  ‡ Œ õ í è è ì û × Ñ Ö Ã ¾ ­ ¥ À Ç Ê å â Õ ï ï è é æ ï  á Ô Ú Ê Ô Ó Ò Þ í é á ë ã ß Ð ¶ £  ¥ ¹ Æ µ É Ð ¾ ¹ ¿ Á à ¸ · « ª « ¨ Ÿ £ ¡ – — – • Œ † “ ¦ š ’ ‹ ‚   ‰  ˆ | h $ ôÿúÿ  )  
  öÿùÿ÷ÿøÿìÿîÿòÿñÿßÿÓÿËÿ¾ÿ·ÿ±ÿ¦ÿ—ÿ•ÿÿ’ÿ‹ÿŠÿ¢ÿ¤ÿ—ÿ¡ÿžÿ•ÿ§ÿ¨ÿ¬ÿ­ÿªÿÿ—ÿ›ÿ•ÿ‡ÿÿÿrÿgÿZÿWÿQÿPÿ?ÿGÿgÿUÿNÿ[ÿLÿJÿKÿAÿ;ÿ=ÿ,ÿÿ%ÿ"ÿÿÿÿÿÿÿþÿþÿ
ÿÿÿÿþúþûþÿÿÿùþòþðþ ÿÿñþÿÿÿ
ÿÿ"ÿÿ,ÿ(ÿ.ÿ3ÿ(ÿÿÿÿ(ÿ1ÿBÿ)ÿ
É bem grande mas eu só coloquei uma parte, algúem sabe como salvar o buffer do tutorial ?
Editável: LINK

Avatar do usuário
None
Colaborador
Colaborador
Reações: 2
Mensagens: 286

Re: Como salvar um buffer de audio?

Mensagem por None » Seg Mai 28, 2018 10:01 am

Eu nunca usei, mas sei que o game maker possui uma buffer_save função, mas esta função é para usar ele dentro do jogo
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx

Avatar do usuário
Foxy Of Jungle
Programador
Programador
Reações: 0
Mensagens: 153
Localização: Brasil
Contato:

Re: Como salvar um buffer de audio?

Mensagem por Foxy Of Jungle » Qua Mai 30, 2018 7:27 am

Ok, vou tentar. Obrigado!
Editado pela última vez por Foxy Of Jungle em Sáb Set 04, 2021 4:37 pm, em um total de 1 vez.

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 621
Localização: Dourados-MS

Contato:

Re: Como salvar um buffer de audio?  Tópico resolvido

Mensagem por All-x » Qua Mai 30, 2018 11:04 am

Seu raciocionio está correto. Falta apenas o cabeçalho para ter um arquivo WAV.

De acordo com o usuário GrixM neste post no reddit, 'basta' anexar o cabeçalho e salvar o arquivo com a função buffer_save.

O cabeçalho contém diversas informações sobre o arquivo. No mesmo post ele deixa este link mostrando a estrutura do cabeçalho e as informações que devem ser prestadas nos primeiros 44 bytes.

Não parece ser tão fácil, já que parece que algumas informações necessitam da analise do arquivo para serem obtidas.

No post ele fala que para detectar a frequência dominante, por exemplo, pode-se se usar um algoritmo chamado FFT (Fast Fourier Transform) ou usar a extensão FMODGMS.

Enfim nunca testei essas funcionalidades, mas o caminho deve ser esse.

FLWS!
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Avatar do usuário
Foxy Of Jungle
Programador
Programador
Reações: 0
Mensagens: 153
Localização: Brasil
Contato:

Re: Como salvar um buffer de audio?

Mensagem por Foxy Of Jungle » Qui Mai 31, 2018 11:36 am

Obrigado pela resposta Alex FC, vou analisar.


Edit:

Eu consegui escrever este código, o arquivo saiu bem parecido com "um de verdade" mas o player encontrou um problema ao executar.

Como usei:

Código: Selecionar todos

//Get File Name
FILENAME = get_save_filename("","")

//Save audio buffer data and then get it into a string
buffer_save(audio_buff,"tempaudiodata.buffer")
audio_data=read_buffer_string("tempaudiodata.buffer")


audio_buffer = buffer_create(256, buffer_grow, 1);
buffer_seek(audio_buffer, buffer_seek_start, 0);

//ChunkID
buffer_write(audio_buffer,buffer_string,"RIFF")
//ChunkSize
buffer_write(audio_buffer,buffer_s8,4+(8+16)+(8+16)) //36
//Format
buffer_write(audio_buffer,buffer_string,"WAVE")

//Subchunk1ID
buffer_write(audio_buffer,buffer_string,"fmt ")
//Subchunk1Size
buffer_write(audio_buffer,buffer_s8,16)
//AudioFormat
buffer_write(audio_buffer,buffer_s8,1)

//NumChannels
buffer_write(audio_buffer,buffer_s8,channels)
//SampleRate
buffer_write(audio_buffer,buffer_u32,44100)
//ByteRate
buffer_write(audio_buffer,buffer_u32,44100 * channels * 128/8) //SampleRate * NumChannels * BitsPerSample/8
//BlockAlign
buffer_write(audio_buffer,buffer_u32,channels*128/8) //NumChannels * BitsPerSample/8
//BitsPerSample
buffer_write(audio_buffer,buffer_s8,128)

//Subchunk2ID
buffer_write(audio_buffer,buffer_string,"data")
//Subchunk2Size
buffer_write(audio_buffer,buffer_u32,48000 * channels * 128/8) //NumSamples * NumChannels * BitsPerSample/8
//Data
buffer_write(audio_buffer,buffer_string,audio_data)



buffer_save(audio_buffer,FILENAME)
buffer_delete(audio_buffer)


Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitante