Foxy Of Jungle
Game Designer
Game Designer
Autor
Mensagens: 80
Registrado em: Qua Abr 26, 2017 12:21 am
Localização: Brasil
Karma: 69
Contato:

Como salvar um buffer de audio?

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:

 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

Tags:
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 85
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 213

Re: Como salvar um buffer de audio?

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
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Foxy Of Jungle
Game Designer
Game Designer
Autor
Mensagens: 80
Registrado em: Qua Abr 26, 2017 12:21 am
Localização: Brasil
Karma: 69
Contato:

Re: Como salvar um buffer de audio?

Qua Mai 30, 2018 7:27 am

Sua resposta me parece vaga, desculpe, mas eu conheço as funções do Game Maker, Valeu por tentar me ajudar :D
 
Avatar do usuário
Alex FC
Administrador
Administrador
Mensagens: 422
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 492

Contato:

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

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!
1
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!
 
Foxy Of Jungle
Game Designer
Game Designer
Autor
Mensagens: 80
Registrado em: Qua Abr 26, 2017 12:21 am
Localização: Brasil
Karma: 69
Contato:

Re: Como salvar um buffer de audio?

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:
//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)

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes