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
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Retorno da GMBR!!!
por vinians Qui 14 Mar 2024, 19:07

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


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