Neste tutorial, você aprenderá a criar música procedural usando MetaSounds. Você criará música de fundo gerada proceduralmente para seu jogo de aventura.
O MetaSounds é um sistema de áudio de alto desempenho que pode gerar fontes do som usando um sistema baseado em nós, semelhante ao sistema de programação visual de Blueprint.
Antes de começar
Assimile os tópicos abordados na documentação Unreal Engine para novos usuários:
Noções básicas de Blueprints, como adição e conexão de nós.
Crie música procedural com MetaSounds
Primeiro, você criará um ativo de MetaSound. Siga as etapas abaixo:
Vá para o Navegador de Conteúdo e navegue até a pasta Conteúdo > Jogo de aventura > Artista > Áudio.
Na pasta Audio, crie uma nova pasta chamada Music.
Clique com o botão direito na pasta Music e selecione Áudio > Fonte de MetaSound.
Dê o ativo de
MS_BGM, que significa música de fundo do MetaSound.Abra o ativo.
O ativo abre no Editor de MetaSound. Na nova janela, você verá três nós no gráfico: Input, Output On Finished e Input Out Mono.
O gatilho de entrada é executado quando esta fonte de áudio é reproduzida. Um MetaSound sempre começa com uma entrada.
O gatilho de Output On Finished é executado para interromper a execução da fonte. Se estiver interrompendo o áudio de outro local, como um Blueprint, não precisará usar esse nó para interromper a reprodução da fonte de áudio. Nesse caso, você usará um Blueprint para iniciar e parar o áudio, então não precisará usar esse nó.
O nó Output Out Mono representa a saída de áudio final do gráfico MetaSound, direcionando todos os sinais de áudio upstream para uma saída de canal único (mono). Todos os nós conectados a ele são efetivamente mixados e enviados ao motor como saída do som.
Como definir o andamento e o ritmo da música
Primeiro, você criará os nós para ajustar o andamento e o ritmo da música. Siga as etapas abaixo:
Arraste o pin do nó Input e adicione um nó Trigger Repeat.
No nó Trigger Repeat, arraste o pin Period e adicione um nó BPM To Seconds. Defina as divisões de notas inteiras para 16.
No nó BPM To Seconds, arraste o pin BPM e selecione Promover para entrada de gráfico.
No painel Membros, no canto superior esquerdo da tela, renomeie a entrada de BPM para Note In.
No painel Detalhes, altere o valor padrão do nó Note In para 60. Você também pode alterar esse valor na parte inferior do nó.
No nó Trigger Repeat, arraste o pin RepeatOut e adicione um novo nó Trigger Counter.
Selecione o nó Trigger Counter e defina a contagem de restauração para 8.
Esta seção define o andamento e o ritmo. Além disso, você pode destacar os quatro nós que adicionou — Trigger Counter, Trigger Repeat, BPM To Seconds e Input — e pressione C para adicionar uma caixa de comentários que contenha todos os nós. Dê o nome Tempo e Ritmo para esta caixa de comentário.
Como gerar uma melodia
Em seguida, você criará a funcionalidade que gera a melodia usando o andamento e o ritmo definidos. Siga as etapas abaixo:
No nó Trigger Counter:
Arraste o pin On Trigger e adicione um nó Random Get (Float:Array).
Arraste o pin Trigger Counter do nó Trigger Counter e conecte-o ao pin Reset do nó Random Get.
No nó Random Get, arraste o pin In Array e adicione um nó Scale to Note Array.
No nó Scale to Note Array, arraste o pin Scale Degrees, selecione Promover para entrada de gráfico e nomeie como Escala.
No nó Random Get, arraste o pin Seed e adicione um nó Random (Int).
No nó Random (Int), arraste o pin Next e conecte-o ao pin On Reset do nó Trigger Counter.
Esta seção gera a melodia. Novamente, você pode destacar todos os novos nós e adicionar uma caixa de comentários chamada Geração de melodia.
Como sintetizar a melodia
Em seguida, você moldará o som da melodia criando a síntese. Isso significa transformar as notas melódicas geradas em som audível. Siga as etapas abaixo:
No nó Random Get, arraste o pin Valeu e adicione um nó Add (Float).
No nó Add, altere o valor do pin da segunda entrada de 0 para 48.
No nó Add, arraste o pin de execução e adicione um nó MIDI To Frequency (Float).
No nó MIDI To Frequency (Float), arraste o pin Out Frequency e adicione um nó Sine.
No nó Sine, arraste o pin de saída Audio e adicione um nó Add (Audio).
Adicione mais um nó Sine que se conecta a este nó Add. Então, no nó Add, arraste o outro pin de entrada e adicione um nó Sine.
No novo nó Sine, arraste o pin Frequency e adicione um nó MIDI To Frequency (Float).
No nó MIDI To Frequency, arraste o pin MIDI In e adicione um nó Add (Float).
No nó Add:
Conecte o primeiro pin de entrada ao nó Add que está conectado ao primeiro nó Sine.
Arraste o segundo pin de entrada e selecione Promover para entrada do gráfico. Dê o nome Desafinar.
Selecione a entrada Desafinar e, no painel Detalhes, altere o Intervalo para 0 e 12.
No painel Detalhes, altere o valor padrão para 12.
Agora você sintetizou a melodia que será gerada. Você pode adicionar uma caixa de comentários para essa nova seção e nomeá-la como Síntese.
Como modelar o som com um envelope
Em seguida, você adicionará um envelope para moldar como o som evolui ao longo do tempo, controlando seu início, sustentação e desaparecimento para um resultado mais natural.
Para adicionar um envelope, siga estas etapas:
Role até a seção de geração de melodia criada anteriormente (se você adicionou uma caixa de comentários, ela deve se chamar Geração de melodia). No nó Random Get (Float:Array), arraste o pin On Next e adicione um nó AD Envelope (Audio). Mova esse novo nó depois dos dois nós Sine adicionados na seção de síntese.
Neste nó, arrastar o pin Out Envelope e adicione um nó Multiply (Audio).
Nesse nó Multiply, arraste o pin da segunda entrada e conecte-o ao pin de saída do nó Add (Audio) ao qual você conectou os dois nós Sine.
No nó AD Envelope (Audio), altere o Tempo de decaimento para 0,2.
No nó Multiply (Audio), arraste o pin de saída e conecte-o ao nó Output Out Mono que já estava na fonte do MetaSound.
Agora, pressione o botão Jogar na barra de ferramentas próximo ao topo da janela da fonte do MetaSound. Ele tocará música gerada proceduralmente de forma contínua.
Para saber mais sobre a criação de música procedural na Unreal Engine, confira a página Creating Procedural Music with MetaSounds.
Como reproduzir música no jogo com Blueprints
Antes de avançar, você criará um Blueprint que tocará a música de fundo no nível.
Como esse Blueprint será adicionado ao nível, mas não tem uma representação visual, você adicionará um componente de Billboard a ele. Este componente adiciona um sprite 2D que o torna visível no editor, para que você possa encontrá-lo durante a edição do nível, mas ele não será visível no jogo.
Para criar o Blueprint de música de fundo, siga estas etapas:
Vá para o Navegador de Conteúdo e navegue até a pasta Conteúdo > Jogo de aventura > Artista > Áudio > Música.
Clique com o botão direito e crie uma nova classe de Blueprint derivada da classe-pai Actor. Dê o nome de BP_BGM, que significa música de segundo plano de Blueprint.
No painel Componentes, clique em Adicionar e adicione um componente de Billboard. No painel Detalhes, você pode ver que o sprite está definido como S_Actor por padrão. Você pode mudar o sprite ou deixá-lo como está.
Vá até a aba EventGraph para começar a criar a funcionalidade.
Arraste a partir do nó Event BeginPlay e adicione um nó Branch.
No nó , arraste o pin Condition e selecione Promover para variável. Dê o nome Ativo para esta variável. Essa variável será usada para determinar se a fonte de áudio está ativa ou não.
Na lista Variáveis do painel Meus Blueprints, clique no ícone de olho ao lado da variável Ativa para abrir o olho, tornando-o público e editável no Editor de Níveis.
Compile o Blueprint e use o painel Detalhes para garantir que o valor padrão da variável Ativa será verdadeiro (habilitado).
No nó Branch, arraste o pin True e adicione um nó Play Sound 2D.
No nó Play Sound 2D, use o menu suspenso para definir o pin Sound como MS_BGM.
No nó Play Sound 2D, clique na seta para baixo para expandir as opções do nó. Arraste o pin Volume Multiplier e selecione Promover para variável.
Clique no ícone de olho da variável para torná-la pública e editável. Compile o Blueprint e altere o valor padrão para 0,5.
Salve e compile seu Blueprint.
O "2D" no nó Play Sound 2D indica que o som será reproduzido independentemente da posição do jogador no nível. Em outras palavras, o som não é espacializado em um espaço 3D, então a distância e a direção não afetam como o jogador o ouve.
Como testar sua música no jogo
Agora você pode voltar ao Editor de Níveis e adicionar o Blueprint BP_BGM ao nível.
Selecione o ator BP_BGM no nível e, no painel Detalhes, verifique se as duas variáveis adicionadas estão configuradas corretamente: Ativadeve estar habilitada e o multiplicador de volume deve estar definido como 0,5.
Experimente diferentes valores para o multiplicador de volume e veja o que funciona melhor para o seu caso de uso. Como essa é a música de fundo, você pode definir o volume em valores mais baixos para mantê-la sutil.
Agora, jogue o jogo. Você deve ouvir a música que você criou tocando ao fundo!
A seguir
No próximo módulo, você aprenderá a adicionar efeitos sonoros dinâmicos de passos ao personagem jogador, que reproduzem sons diferentes dependendo do tipo de chão em que o personagem está se movendo no momento.