Benvenuto Visitatore!  / Create an account







This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.
Valutazione discussione:
  • 1 voto(i) - 5 media
  • 1
  • 2
  • 3
  • 4
  • 5
[Gba] Doctah's moderately sized Sappy guide [WIP]
#1
Eh beh, prima o poi dovevo fare una guida sulla musica Pacman

Warning: questa guida è stata scritta in qualcosa come mezz'oretta in una sera di stanchezza. Non rispondo di eventuali bestemmie al creatore dell'engine, ma cercherò di sistemare il tutto Pacman

Cercherò di spiegare più cose possibili in questa guida, quindi vi avverto: certe parti potrebbero essere abbastanza difficili, non esitate a chiedere in caso di dubbi.

DISCLAIMER: questo non è un tutorial su come comporre musica o usare i vari programmi per fare ciò dato che non sono capace neanche io

Orsù, senza esitazione, cominciamo Pacman

1) Introduzione

La maggior parte dei giochi GBA, compresi i nostri amati Ruby/Sapphire/Fire Red/eccetera, utilizza il cosidddetto engine "Sappy" per processare musiche E effetti sonori. Ma come funziona questo engine? È più semplice da comprendere se sapete cosa è un file MIDI, ma se non lo sapete...

Ecco. L'engine Sappy funziona in maniera simile: utilizza dei "samples" (gli strumenti) per suonare delle canzoni seguendo immaginari spartiti (tecnicamente... bytes incomprensibili agli esseri umani), in un modo simile a quello dei MIDI.

Con le dovute introduzioni fuori dalla porta, possiamo cominciare la parte "interessante", l'effettivo music hacking con Sappy B)


1.5) Cose utili

-Sappy: essendo nel titolo del thread, immagino che sarà un tool importante, no? no ovviamente sì, e la guida si preoccuperà principalmente di spiegarne i comandi e le funzioni.
-mid2gba: converte i file MIDI in file .s, utilizzabili dall'assembler di Sappy. Vi verrà spiegato tutto più avanti, don't worry.
-All-Instrument Patch: fornisce i sample necessari per suonare le canzoni, dato che Pokèmon ha davvero pochi strumenti. Non è proprio il meglio in quanto a strumenti ed è pure buggata (fix here), ma per ora accontentiamoci (fino a quando non proverò a fare qualcosa di meglio Pacman). Fixate il bug mi raccomando, sennò nel primo inserimento mi verrete a dire "eeeeh ma Doctah si sentono suoni strani e buggosi", e io non vi ascolterò perché di no.
-un qualche MIDI editor, per il tutorial userò Anvil Studio non mi piace molto, ma tanto non devo comporre davvero

2) The beginning: un inserimento base

Per prendere dimestichezza con l'engine, inseriamo un MIDI a caso. Prendiamo questo come esempio perché sono un Final Fantasy VI fag

Fase 1: preparazione
Qui dobbiamo adattare il MIDI alle esigenze del GBA. Cominciamo guardando il numero di tracce: di default i giochi Pokèmon reggono 5 tracce, ma è possibile espandere tale numero (leggere qui).
Dopo aver ridotto il numero delle tracce, un piccolo aggiustamento tecnico. Nei MIDI il canale 10 è riservato alle percussioni, mentre nel GBA non esiste questa distinzione in quanto le percussioni sono uno strumento come un altro (pur seguendo le regole stabilite dai MIDI per esse). Se non conoscete il funzionamento di esse, non preoccupatevi: cambiate lo strumento utilizzato in Gunshot (l'editor dirà comunque Drums, ma ignoratelo).
Ora inseriamo il loop, ovvero la parte di canzone che si ripeterà all'infinito. Su Anvil Studio, andate all'inizio del loop e cliccate su "new cue": inserite una parentesi quadra aperta "[". Alla fine del loop, invece, inserite una parentesi quadra chiusa "]". In questo modo il convertitore mid2gba saprà dove inserire il loop.
Ultimo tocco, il file deve essere MIDI-format 0 e non format 1. Su Anvil Studio, File -> export MIDI-format 0. Salvate, e avrete il vostro MIDI bello pronto Big Grin

Fase 2: inserimento

Ora che abbiamo un MIDI preparato, non ci resta che inserirlo.
Prendete il file MIDI, e trascinatelo su mid2gba. Il programma farà la sua magia, e magicamente apparirà un file .s con lo stesso nome del MIDI.
Aprite la vostra ROM con Sappy, cercate la canzone che volete sostituire e cliccate su Assemble Song. Innanzitutto, dove c'è scritto .S file name, dovete selezionare il file .s creato da mid2gba.
In Base destination offset, dovete inserire un offset riferito a spazio libero (usate Free Space Finder o un hex editor). In Voicegroup offset, per ora inseriremo 0xB30C5C per Ruby/Fire Red o 0x1130C5C per Emerald.
E ora, COOK IT. "Do you want to set the proper entry in the song table?" rispondete yes!
Come primo inserimento non è affatto male!

3) Comandi vari di Sappy

TASKS:
-Export Tracks ed Import Tracks: con Export Tracks si andanno ad esportare le tracce [cit. Capitan Ovvio], ovvero le varie note e le informazioni sul numero di strumenti. Con Import Tracks potremo reinserire queste tracce in'un altra ROM. Poco utile secondo me perché non puoi applicare cambiamenti e non esporta automaticamente gli strumenti, quindi bisogna sistemare parecchie cose.
-Export Samples e Import Sample: ricordate l'introduzione? I samples sono gli strumenti utilizzati dal GBA per suonare la musica. Con Export Samples potremo esportare gli strumenti utilizzati da una canzone per poterli trasportare in un'altra ROM con Import Sample. Molto utile, soprattutto se si vogliono fare import perfetti di canzoni da altri giochi, ma occorre abbastanza dimestichezza con l'engine (spiegherò in futuro).
-Record to MIDI: salva la canzone attuale in un file MIDI. Abbastanza utile in quanto puoi modificare un MIDI e magari cambiarne gli strumenti, però non mantiene il loop (cosa abbastanza scomoda). Comunque meglio di Export Tracks :V
-Edit Voice Table: si può utilizzare per modificare il voicegroup della canzone (spiegazione dei voicegroup sotto, occorre un paragrafo a parte o anche una guida intera)

OPTIONS:
-Use MIDI driver e Use WAVE driver: usando il WAVE driver le canzoni suoneranno come in GBA, mentre usando il MIDI driver useranno gli strumenti "default" dei MIDI veri e propri. Non ha molta utilità.
-Seek by playlist: se quest'opzione è attivata, premendo le freccette << >> le canzoni scorreranno seguendo la playlist predefinita da Sappy, sennò seguiranno l'ordine nel quale sono inserite dal gioco.
-Gameboy Mode: come si attiva sta cosa halp
-Import LST file: onestamente, non ho idea di cosa faccia. Non credo sia essenziale.
-Select MIDI device: imposta il Soundfont utilizzato dal MIDI driver. Peccato che il MIDI driver qui sia inutile.
-remap MIDI instrument: non credo serva a qualcosa.
-Settings: le opzioni. Fateci un po' quel che volete.

4) VOICEGROUPS. Dan-dan-daaaaan.

Beh, eccoci al boss finale della guida.
Se vi ricordate l'introduzione, le canzoni sono spartiti suonati da un'orchestra con certi strumenti. I voicegroup servono a stabilire quali strumenti vengono utilizzati.
Osservando qualche MIDI, avrete notato che gli strumenti sono numerati da 0 a 127 (o da 1 a 128 secondo Anvil Studio perché è ritardato). Un voicegroup lega un numero a un certo strumento. Come?
Il gioco legge le tracce. Vede che bisogna suonare lo strumento 56 (ad esempio). Va alla voce 56 del voicegroup, che lo punta allo strumento.
Suona facile, ma ci sono vari tipi di strumenti (e non intendo, che ne so, violini e trombette MLG)

Mini-N.B.
Alcuni valori sono costanti tra i vari tipi di strumenti.
Atk-Dec-Sus-Rel. Questi servono a modificare come lo strumento suona. Ve lo copio da Wikipedia perché non è che sappia cosa farci a dire il vero.
Fixed Freq.
Reverse Playback
Forced Pan

Ammetto che non so proprio a cosa servano 'ste opzioni, ma se importate strumenti da altri giochi GBA limitatevi a copiare le originali Pacman

Direct
Lo strumento di base. L'address1 indica la posizione dello strumento della ROM, che verrà suonato quando necessario. Base Note verrà spiegato con i Drums, per ora non pensateci.

Square1/2
I primi 2 canali che compongono il repertorio dell'originale Game Boy/Game Boy Color. Non conosco le varie funzioni purtroppo, ma aggiornerò in futuro forse.

Wave
Il terzo canale GB/GBC. Cosiddetto "programmable waveform", in quanto potete modificare l'effetto della nota, cliccando su Edit-Wave.

Noise
Il quarto canale GB/GBC. Fa... rumore, non saprei come definirlo.

Drums
Se conoscete i MIDI, saprete che il canale Drums ha strumenti diversi in base alla nota utilizzata. Il concetto è simile.
La voce Drums punta ad un'altra tavola degli strumenti, formata da voci Direct. Si parte dalla nota più bassa, che corrisponderà allo strumento 0, arrivando fino al 127 che corrisponderà alla nota più alta.
Esempio, lo 0 è un tamburo e l'1 è un piatto. Se la prima nota è... quella più in basso nel pentagramma, suonerà un tamburo. Se poi suoniamo la nota subito sopra, suonerà il piatto.
Piccola nota, ricordate quando avevo parlato del "Base Note" nelle voci "Direct"? Servono proprio in questo caso, determinano la nota che verrà suonata in una traccia di Drums.

Multi
I Multi funzionano in maniera simile ai Drums.
Qua però ci sono due address. Il primo punta ad una tavola di strumenti Direct. Il secondo punta ad una tavola di 128 bytes. Nella seconda tavola, si aprirà una finestra con un pianoforte. C'è un... coso a discesa con scritto 0 - "offset a caso" e cliccandoci sopra usciranno 1 - "offset a caso" eccetera. Ecco, cliccando sui tasti del pianoforte potremo determinare che strumento utilizzare in base alla nota. (gli strumenti corrispondono a quelli della tavola di strumenti del primo address). Es. dal primo DO fino al primo SOL possiamo far corrispondere lo strumento 0 e dal primo LA in poi l'1, o cose così. Nei soundfont "veri" questa funzione si usa per non usare un solo sample distorto malissimo su tutta la scala di strumenti, ovviamente occupa più spazio così.

Modificando i voicegroup potete decidere che strumenti usare nelle vostre canzoni :3
Working w/Paoc and Zeppho in...
[Immagine: tumblr_npqfq38PKG1tp2yqno6_400.png]

My Iutub channel Pacman


Guides:



@capogalassia <3
 Mi Piace Ricevuti: 
Stygian, PacoScarso, Шахтар, Soul Deep, Feanor, MasterNinja98, Flygon, Aioria like this post
Cita messaggio }
#2
Grazie mille *ç* mi serviva una guida del genere
[Immagine: Firma.jpg]
 Mi Piace Ricevuti: 
Cita messaggio }
#3
Ottimo lavoro per ora, è ben spiegata!
Bravo Doc! :'3
 Mi Piace Ricevuti: 
Cita messaggio }
#4
Grande, bella guida. La aspettavo da parecchio perché, essendo anche un musicista fallito,posso comporre le musiche per una mia hack Big Grin
 Mi Piace Ricevuti: 
Cita messaggio }




Utenti che stanno guardando questa discussione: 1 Ospite(i)