GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


Ler tags de mp3 via gml script (sem dll)

5 participantes

Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Ler tags de mp3 via gml script (sem dll)

Mensagem por GameMakerTutoriais Qua 04 Jan 2012, 02:19

Pessoal, aqui tem um exemplo com os scripts já incluídos de como ler tags de mp3 usando as funções binárias do Game Maker. Não é grande coisa, mas já dispensa o uso de dll, o que é legal. Foi só uma solução simples para leitura, mas se alguém precisar de ajuda para editar as tags do arquivo, é só postar a dúvida aqui!

[DOWNLOAD]

Versão melhorada. É possível ler tags de:
Nome do álbum
Nome do artista
Nome da faixa
Comentário
Número da faixa no CD
Ano do álbum
Gênero Musical

Por causa da grande variação TAGs, pode ser que alguns arquivos mp3 não possam ser lidos corretamente! Se isso acontecer, poste aqui no tópico pra gente tentar chegar a uma solução. Esse engine lê Tags do formato ID3v1 simples. Falou!





Última edição por Ninja8086 em Sex 06 Jan 2012, 22:07, editado 4 vez(es)
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Ler tags de mp3 via gml script (sem dll) Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por Jiraya Qua 04 Jan 2012, 05:47

Incrivel! É necessário conhecer a estrutura do header id3v11, para fazer tal coisa. Onde conseguiu a referencia da estrutura? Ou foi na tentativa e erro? Vc consegue acessar as partituras e canais do mp3?
Jiraya
Jiraya

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 20/03/2010
Reputação : 108
Número de Mensagens : 1134
Prêmios : Ler tags de mp3 via gml script (sem dll) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.facebook.com/seito.washiro.7

Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por Convidad Qua 04 Jan 2012, 11:39

Formidável.
algo assim e realmente genial.
Foi vc quem fez ? meus parabéns.
Tavam precisando disso.Eu também.
Vlw
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por GameMakerTutoriais Qua 04 Jan 2012, 12:51

É necessário conhecer a estrutura do header id3v11, para fazer tal coisa. Onde conseguiu a referencia da estrutura?

@Jiraya

Olá Jiraya! Obrigado pelo comentário! Bom, na Wikipedia tem o esquema do ID3 completinho, mas eu só usei o necessário para pegar as tags do título, artista e álbum. http://en.wikipedia.org/wiki/ID3

Mas se for necessário pegar outras tags é bem tranquilo. Só dizer qual a tag e mudar o endereço (offset) onde a tag está. No caso das partituras e canais, isso eu não sei fazer, até porque não sei nada sobre partituras... Mas acho que deve ser bem mais complicado!

@TRFN

Obrigado! Na verdade não é complicado de fazer. As tags do mp3 são apenas textos comuns, como se fosse um arquivo de texto normal. Como você provavelmente já sabe, cada caractere corresponde ao sistema ASCII, e cada código corresponde ao valor binário de cada letra.

Daí, a única coisa que eu fiz foi abrir em modo binário, ler os bytes das tags e usar a função chr() pra converter os valores pra texto. Cada tag tem um número reservado de bytes, que pode ser 30 ou 60. Nesse script eu fiz a leitura das tags de 30 bytes.

Valeu!
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Ler tags de mp3 via gml script (sem dll) Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por Markituh Qua 04 Jan 2012, 13:15

Hehe, nunca subestime um ninja! Boa Brendan, nem tava ligado que as tags eram em texto plano, pensei que eram criptografadas. Mas sabe o que seria bom mesmo? Mudar o volume do som sem ter que parar e tocar de novo - aí sim os jogos seriam high power.
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Ler tags de mp3 via gml script (sem dll) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por GameMakerTutoriais Qua 04 Jan 2012, 13:28

Valeu Markituh! Bom, essa questão do volume da música, tem a dll SuperSound.dll, que é ótima! Ela faz essas mudanças de volume ainda por cima com Pan (aquele efeito em que o som vai mudando de um canal pra outro). Acho que você já deve conhecer ela.

Essa questão de uso de binário é muito interessante, porque na realidade, quando você usa a função você tá lidando com informação. Daí você pode manipular do jeito que quiser, desde que entenda a estrutura do arquivo. As possibilidades são muitas!

Falou!

avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Ler tags de mp3 via gml script (sem dll) Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por Klior Qua 04 Jan 2012, 16:29

Realmente muito bom e útil, prevejo os players de musica do pessoal aqui do fórum melhorando bastante =D.
Klior
Klior

Data de inscrição : 07/03/2010
Reputação : 13
Número de Mensagens : 426
Prêmios : Ler tags de mp3 via gml script (sem dll) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • C#
  • Javascript


Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por GameMakerTutoriais Qua 04 Jan 2012, 23:03

Valeu! Esse exemplo só pega as tags de title, artist e album, mas caso precisem de mais, é fácil adaptar! É só dizer que a gente dá uma modificada legal nele.
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Ler tags de mp3 via gml script (sem dll) Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por saim Sex 06 Jan 2012, 17:38

Ninja8086, suponho que essa engine tenha sido criada por causa da minha pergunta.
Li e reli seu tutorial sobre manipulação de arquivos binários, mas parece que eu sou do 10° tipo de pessoa (daquela piada: há 10 tipos de pessoas - os que entendem binário e os que não entendem). Eu não entendo binário.
Não li o artigo todo da wikipedia que você me mandou porque no segundo parágrafo eu já estava perdido. Mas procurei entender pelo menos por alto e nem assim consegui acompanhar seu raciocínio.
Você usa alguns valores no script pra saber se ele vai baixar o título, álbum ou artista. Esses valores não estão listados no artigo. Como você chegou neles?
Ainda vou reler o tutorial pra ver se entendo. Podia ter um link pras aulas anteriores, né? Mas não esquenta, eu encontro elas também.

Sei que é chover no molhado, mas parabéns pela engine. Você diz que é simples, desde que se saiba aplicar os conhecimentos. Nesse caso, parabéns por deter esses conhecimentos!
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Ler tags de mp3 via gml script (sem dll) Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por Convidad Sex 06 Jan 2012, 17:48

Cara,essa engine sua me fez surgir uma dúvida : é possível reproduzir faixas de som deste modo ?
Flws
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por GameMakerTutoriais Sex 06 Jan 2012, 18:09

Você usa alguns valores no script pra saber se ele vai baixar o título, álbum ou artista. Esses valores não estão listados no artigo. Como você chegou neles?

Esse artigo da Wiki, nem precisa ler ele todo, eu só usei ele pra saber qual é o tamanho em bytes das tags (no caso, 30 ou 60) e a posição que elas ficam dentro do mp3. Por exemplo, de acordo com artigo, tem um campo onde essas tags ficam armazenadas cujo tamanho pode ser 128 bytes ou 227 bytes. Olhando pra tabela, o mais importante pra nós, é o primeiro valor (que usa 3 bytes):

Ler tags de mp3 via gml script (sem dll) N3ampk

Essa primeira linha diz que há 3 bytes no arquivo com as letras "TAG", então é por ele que a gente se orienta. Esse campo fica no finalzinho do arquivo, é só subtrair o tamanho em bytes do arquivo por 128 que a gente acha esse campo!

Ler tags de mp3 via gml script (sem dll) 9jzjv9

Agora é só a gente pegar os dados desse campo, o que a gente quiser, claro, seguindo a orientação da tabela que a gente pegou na Wiki. Aí já entra nosso esqueminha de leitura binária. Eu tinha feito outros dois tutos que era uma explicação pra esse último. Talvez por isso que ele tenha ficado confuso a primeira vista!

https://gmbr.forumeiros.com/t19513-operadores-bitwise-matematica-logica-aula-1-de-2 (não tão importante)
https://gmbr.forumeiros.com/t19514-operadores-bitwise-matematica-logica-aula-2-de-2 (o mais importante!)

Por exemplo, de acordo com a tabela, pra gente pegar a ano da faixa a gente vai até esse campo (tamanho_do_arquivo - 128), e depois salta o que a gente não quer, o que seria 3 + 30 + 30 + 30 bytes. Nesse ponto, chegamos os 4 bytes referentes ao ano! Eu vou dar uma implementada nesse script pra gente poder pegar o resto das tags de ano, e faixa. Very Happy Falou!

Cara,essa engine sua me fez surgir uma dúvida : é possível reproduzir faixas de som deste modo ?

É muito difícil. Mas eu acredito que sim desde que a gente use uma dll pra gerar frequências de som, se a gente soubesse decodificar o mp3, a gente faria isso e mandaria o valor das frequencias lidas diretamente do arquivo pra dll... mas aí já são outros quinhetos. Isso que eu falei é apenas uma ideia, nunca fiz isso e não sei se funcionaria. Falou!


Última edição por brendan640 em Sáb 08 Jun 2013, 20:49, editado 1 vez(es)
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Ler tags de mp3 via gml script (sem dll) Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por Markituh Sex 06 Jan 2012, 18:23

Cara,essa engine sua me fez surgir uma dúvida : é possível reproduzir faixas de som deste modo ?
Assim como bitmaps, os dados dos arquivos são lidos e carregados na memória. Mas quanto a questão de reproduzir sons, e no GM, aí já complica. Mal conseguimos um bom desempenho desenhando uma bitmap de 640x480, imagine um som de 48000 bits por segundo.

O problema mesmo é que o processamento meio que "perde força" quando é feito por meios externos (a.k.a GML), mas com o uso de DLLs ele passa a trabalhar diretamente com o handler do Game Maker - aí é só festa. O Kabeção (eu acho) postou uma engine, chamada GMTint, que muda/pinta cores na tela sem nenhum atraso muito significativo! A mesma coisa acontece com DLLs sonoras, como a SuperSound. Mas como o Ninja disse, o problema mesmoo é decodificar o mp3 e gerar um som fiel aos produzidos por players comerciais, como o Windows Media Player.
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Ler tags de mp3 via gml script (sem dll) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por Convidad Sex 06 Jan 2012, 20:20

Uau,quanta complicação.
Se houvesse um modo de se aplicar isso somente usando o GM seria abstante legal,pois pouparia o uso de DLLs (elas são úteis,porem podem ocupar espaço e até em casos raros lentificar o software ou jogo).
Acredito que o desadio mesmo e o GM reproduzir um som a partir de bytes......
Mas não é impossível,deve ter solução.
De qualquer forma,obrigado por ajudarem-me nesta dúvida.
Flws
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por GameMakerTutoriais Sex 06 Jan 2012, 21:26

Pois é! Tem muita coisa que a gente consegue mais na base da gambiarra mesmo. Very Happy Tem jeito pra tudo, mas aí depende dos recursos que a gente tem nas mãos.

Enfim, fiz uma modificação no projeto pra ler o restante das tags! Valeu! (tá editado no primeiro post)
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Ler tags de mp3 via gml script (sem dll) Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ler tags de mp3 via gml script (sem dll) Empty Re: Ler tags de mp3 via gml script (sem dll)

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos