Language…
19 users online:  AmperSam, asterkafton, Dangil,  Donut, dotCoockie, drkrdnk, EvilAdmiralKivi, Fiblizo, Golden Yoshi, Guido_Keller, itsmefigs, JezJitzu, LightAligns,  patcdr, playagmes169, Scags,  Telinc1, timothy726, tOaO - Guests: 265 - Bots: 407
Users: 64,795 (2,377 active)
Latest user: mathew

Posts by Pinci

Pinci's Profile → Posts

  • Pages:
  • 1
  • 2
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
watefok
wtf dat me omg

also what's with the audio quality
hi it's-a me pincio, I don't have "ports" this year, but a couple of compositions I made

Good Morning | DOWNLOAD | LISTEN | NON-SNES
Through the Mountains | DOWNLOAD | LISTEN | NON-SNES



wait there's more, I did some songs for BS SMW, two of those have been showcased in a video on Heraga's thread so have clean HQ versions of them:


these are chill but the best one has to be the crash bandicoot one, nice job!!
it makes me a bit sad to see this hack go cancelled, it was truly a really original hack with ton of work and soul put into it. I hope you can atleast re-use some of the ideas/assets from this hack in another project, it being hack-related or not
thanks alot everyone for the kind comments, and I really mean it!!
you guys don't know how incredibly happy you have made me, makes me glad I chose to start making my own compositions years ago, I didn't expect 20 posts on the thread
I always liked this game's ost, it's such a nice surprise to see it ported in its entirety, nice job!!!
already listened to all of these hahahaha but good ports nonetheless


edit* brain fart
gonna be real honest I only listened to the yump 2 ones but they are lit really good job on those
File Name: Homestuck - Black
Submitted: by Slaytanic
Authors: Slaytanic
Insert Size: 0x09DC bytes
Type: Song
Sample Usage: Many
Source: Remix
Duration: 2:27
Featured: No
Description: Not 100% 1 to 1 port as the snes just doesnt have enough sound channels to handle this crazy song.
SPC

This port could be alright but sadly it has some mixing issues, the saxophones sound really loud and lack vibrato and decay and they don't sound pleasant at all.


Index
  1. Introduction
  2. The Instrument Table™
  3. SFX Making
  4. Examples





Introduction

Hello, if you are here, then that means you want to make your own sound effects. If that’s the case and you didn’t get lost in the forums (again), then let’s get started!!!

The tools we will be using are:
  1. AddmusicK, which I suppose you already have.





The Instrument Table™

In reality, SMW uses two instrument tables: one for music (which is subdivided into a melodic instruments table and a percussion instruments table) and one for sound effects, both of these can be found in InstrumentData.asm inside AMK's asm folder. The instrument table used for SFX is different, so your experience with music ports won’t help you here!

The instrument table for SFX works like this:
Code
; Byte 0: Left volume
; Byte 1: Right volume
; Byte 2: Starting pitch 1
; Byte 3: Starting pitch 2
; Byte 4: Sample (SRCN) number
; Byte 5: ADSR 1 / GAIN
; Byte 6: ADSR 2
; Byte 7: GAIN
; Byte 8: Tuning
$70, $70, $00, $10, $06, $DF, $E0, $B8, $02 

As you can see, it’s similar to the #instruments syntax, but with 4 extra bytes (ignoring Sample Number, which is present in every instrument table). These are “default” values in case you don’t specify volume or (somehow) pitch, which are inserted directly into the DSP registers. On the SNES SPC700 Player, you can view the DSP registers by pressing the right arrow key on your keyboard twice. Unlike #instruments, however, there’s only one byte for tuning. You can change these bytes if you want to, or even add new instruments, but vanilla sound effects will be affected, so do so with caution.
To elaborate on the Sample (SRCN) Number, this number represents the order in which every sample is inserted through sample groups:
Code
#default
{
	"default/00 SMW @0.brr"!
	"default/01 SMW @1.brr"!
	"default/02 SMW @2.brr"!
	"default/03 SMW @3.brr"!
	"default/04 SMW @4.brr"!
	"default/05 SMW @8.brr"!
	"default/06 SMW @22.brr"!
	"default/07 SMW @5.brr"!
	"default/08 SMW @6.brr"!
	"default/09 SMW @7.brr"!
	"default/0A SMW @9.brr"!
	"default/0B SMW @10.brr"!
	"default/0C SMW @13.brr"!
	"default/0D SMW @14.brr"
	"default/0E SMW @29.brr"!
	"default/0F SMW @21.brr"
	"default/10 SMW @12.brr"!
	"default/11 SMW @17.brr"
	"default/12 SMW @15.brr"!
	"default/13 SMW Thunder.brr"!
}

In this case, @0’s Sample Number is 00, @1’s is 01, @2’s is 02 and so on. These samples were named with the Sample Numbers in mind, as they are prefaced with their respective sample number given the default ordering of the sample group. If you were to insert a new sample at the end of the list, it would be sample 14, then 15, 16 and so on, but only until 7F. Sample numbers 80-9F are noise.
In short, sample numbers can only go from 00 to 7F, while 80 to 9F is noise.

Here’s the SFX Instrument Table as if we were using #instruments, for convenience. You can click on the commented line to play an example SPC.
Code
							;HEX/@
@22 $DF $E0 $B8 $02 $00					;00/@0
@0 $FE $0A $B8 $03 $00					;01/@1
@3 $FE $11 $B8 $03 $00					;02/@2
@4 $FE $6A $B8 $03 $00					;03/@3
@0 $FE $11 $B8 $03 $00					;04/@4
@6 $FE $6A $B8 $03 $00					;05/@5
@2 $FE $6A $B8 $06 $00					;06/@6
@22 $FE $6A $B8 $05 $00					;07/@7
@0 $CA $D7 $B8 $03 $00					;08/@8
@12 $0E $6A $7F $04 $00					;09/@9
@10 $FE $6A $B8 $02 $00					;0A/@10
@10 $FF $E0 $B8 $05 $00					;0B/@11
@29 $FE $00 $7F $06 $00					;0C/@12
@0 $B6 $30 $30 $06 $00					;0D/@13
@15 $0E $6A $70 $03 $00					;0E/@14
@1 $FA $6A $70 $03 $00					;0F/@15
@2 $FE $16 $70 $03 $00					;10/@16
"default/13 SMW Thunder.brr" $0E $16 $7F $03 $00	;11/@17
@2 $FE $33 $7F $03 $00					;12/@18





SFX Making

To start off, SFX commands are VERY limited, as you only have a handful to work with. The most important thing you need to know about how sound effects behave is that there is no tempo, no light staccato, no ties, and rests are only implemented in AddmusicK 1.0.9 and later. With this, I’m referring to the fact that sound effects play at a fixed speed (t56), there’s 2 ticks of silence between notes compared to music (which is more configurable between 1 and 2 ticks), and you can’t tie notes (^ or C6 in HEX). Ties will cause the last note to repeat. Rests (r or C7 in HEX) do the same thing in older AddmusicK versions as well.

AMK allows normal syntax like @0, vXXX, yXX, etc., but it gets buggy sometimes, so I really, really, REALLY recommend you type commands directly in HEX instead. Here’s how it works:

$XX = Notes
c
c+
d
d+
e
f
f+
g
g+
a
a+
b
o1
80
81
82
83
84
85
86
87
88
89
8A
8B
o2
8C
8D
8E
8F
90
91
92
93
94
95
96
97
o3
98
99
9A
9B
9C
9D
9E
9F
A0
A1
A2
A3
o4
A4
A5
A6
A7
A8
A9
AA
AB
AC
AD
AE
AF
o5
B0
B1
B2
B3
B4
B5
B6
B7
B8
B9
BA
BB
o6
BC
BD
BE
BF
C0
C1
C2
C3
C4
C5

$DA $XX $YY = Instrument
$XX is the instrument number in HEX. Check the #instruments table I put above and look for whatever instrument you want to use. Goes from 00 to 7F.
If you specify a value from 80 to 9F, then this will be noise. When you use noise, you can set an extra argument “$YY” to specify an instrument to get ADSR values from.

$DD $WW $XX $YY $ZZ = Pitch Bend (Extended)
$WW is the starting note, $XX is the delay, $YY is the duration, and $ZZ is the final note. This one is pretty similar to the one used when porting music but it has an extra “starting note” byte. It can only be used as a starting or one-shot pitch bend.

$EB $XX $YY $ZZ = Pitch Bend
$XX is the delay, $YY is the duration, and $ZZ is the final note. Must be put after $DD or other $EB commands for subsequent bends without resetting a note.

$FE
This command needs no arguments. It will repeat the SFX indefinitely.

$FF
This command needs no arguments. It will repeat the last note indefinitely.

$XX = Note Length
This can be any byte ranging from 00 to 7F, and can be put before a note or a pitch bend of any kind ($DD or $EB). If followed by another byte that is also in the 00 to 7F range, then that will be volume (see below). If a sound effect starts with a pitch bend ($DD), then the note length should be specified before it to last for as long as the pitch bend does ($XX + $YY arguments).

$XX $YY = Volume
This is volume; it can consist of one or two arguments. A channel has two DSP values for volume: left and right. If you specify only one value “$XX”, it will be copied into both left and right, which will result in the sound being centered. If you specify two values “$XX $YY”, the first one ($XX) will be left volume and the second one ($YY) will be right volume; this is used for panning. Surround is not allowed, as the command can only go from 00 to 7F (surround is 80 - FF, but those are notes and commands).
Even without ties, you can change the volume mid-note if you put it between pitch bends (after $DD and before/after $EB), the note length command should last for as long as the pitch bend does ($XX + $YY arguments).
VOLUME CAN ONLY BE PUT AFTER A NOTE LENGTH COMMAND.

$00
This will stop the SFX.

$NoteLength $00 $AnyNote = Rest
Not an actual command, but a technique to simulate rests in older AddmusicK versions. What we are doing here is setting the volume to 00 for as long as the note lasts, then setting it back to normal when another note should play.




Examples

I will do some breakdowns of vanilla SMW sound effects here:
Legend: Instrument, Note Length, Volume, Pitch Bend ($EB), Extended Pitch Bend ($DD), Note, Misc

08 Springboard.txt
Code
$DA $05 				;we start by setting our instrument
$08 $54 				;we specify starting note length and volume
$DD $9F $00 $08 $A3 			;starting pitch bend
$12 					;note length, used by the next pitch bend
$EB $00 $12 $AB 			;pitch bend, this one keeps going up
$06 $3F 				;we use this to change volume mid-note
$EB $00 $06 $A8 			;this pitch bend and subsequent ones are used to do “vibrato”
$11 $31 				;we change volume mid-note again
$EB $00 $11 $AB 
$08 $23 				;and again
$EB $00 $08 $A8 
$0F $15 				;and again
$EB $00 $0C $AB

0D Get cape.txt
Code
$DA $03 				;we start by setting our instrument
$0C $15 $07  				;we specify starting note length and volume (panned to the left)
$DD $95 $00 $0C $A4 			;starting pitch bend, goes up
$06 					;note length, used by the next pitch bend
$EB $00 $06 $97 			;pitch bend, goes down
$0C $07 $1C 				;note length and volume (panned to the right)
$DD $99 $00 $0C $A8 			;note resets, pitch bend, goes even more up
$06 					;note length, used by the next pitch bend
$EB $00 $06 $9A 			;goes down
$0C $23 $0E 				;note length and volume (panned to the left)
$DD $9D $00 $0C $AD 			;note resets, pitch bend, goes even more up, and so on...
$06 					;the cycle continues and the pitch will go higher and higher...
$EB $00 $06 $9D 			;until the sfx ends
$0C $0E $31 
$DD $A1 $00 $0C $B0 
$06 
$EB $00 $06 $A0 
$0C $38 $15 
$DD $A5 $00 $0C $B4 
$06 
$EB $00 $06 $A3 
$0C $15 $3F 
$DD $A9 $00 $0C $B9 
$09 
$EB $00 $06 $AD

05 1-up.txt
Code
$DA $02 				;we set the instrument
$08 $59					;note length and volume
$B4 $B7 $C0 $BC $BE $0C $C3		;notes

07 Dry bones collapse.txt
Code
$DA $02 				;we set the instrument
$09 $1C $1C 				;note length and volume (whoever programmed this set it twice??)
$B0 					;note
$08 $19 $1F 				;note length and volume (panned to the right)
$AE 					;note
$07 $1F $19 				;note length and volume (panned to the left)
$AC 					;and so on, with each note going lower and stronger panning...
$06 $15 $23 
$AA 
$05 $23 $15 
$A8 
$04 $0E $2A 
$A6

21 Valley of Bowser appears.txt
This one is interesting because it’s a rumbling effect and it seems to be stopped by the game because the SFX repeats indefinitely.
Code
$DA $11  				;we set the instrument (thunder)
$0C $00 $54 				;we set the note length and panning
$8C 					;we play a note in a very low pitch
$08 $1C $0E 				;note length and panning
$8C 					;note
$0C $46 $38				;note length and panning
$8C 					;note
$12 $38 $54 				;note length and panning
$8D 					;another note
$0C $0E $1C 				;and so on...
$8B 
$12 $2A $1C 
$89 
$18 $1C $0E 
$8B 
$08 $0E $1C 
$8C 
$0C $1C $0E 
$89 
$06 $2A $15 
$8B
$08 $0E $1C 
$8C 
$30 $1C $1C 
$8B 
$FE					;this restarts the sfx forever

19 Clap + pop.txt
Code
$DA $0C 				;set instrument
$04 $46  				;note length and volume
$B5 					;note
$DA $9C $10 				;set noise and use instrument 10’s adsr values for it
$18 $2A  				;note length and volume
$C3					;note

Originally posted by LMPuny
in fact, sfx's tempo is t56 according to amk source code's operations


updated, ty
wena po barney

wena viejo culiao

a cuanto la mano de falopa

a 5 luquitas pa uste mi rey

ya se me olvido que viene
NOO ERA 8
rico po pa las vaquitas
File Name: Super Mario 64 - Staff Roll
Submitted: by ss_isbjorn
Authors: ss_isbjorn
Insert Size: 0x0FFE bytes
Type: Song
Sample Usage: Many
Source: Port
Duration: 2:40
Featured: No
Description: This is a looped version of the staff roll from sm64, I wanted to make a looped version in case people wanted to use it for levels. I plan on making a non-looped version in the future, for credit purposes.

Well suited for grassland levels, maybe even snow or sky.
SPC

This is... not good. This port has many issues:

1. All channels have their left speaker in surround mode for some reason, which makes the song really annoying to listen to.
2. Accordion Lead 64.brr is detuned, plays at a slightly higher pitch than it should.
3. The txt file could be better optimized, example:

Colored lines are repeating patterns.
4. The accordion is missing its pitch bends.
5. Many piano and electric piano notes are too staccato (shorter than they should be). I recommend release gain using remote commands for this.

Also I know you're really limited by Audio RAM, but if you could find nicer samples that'd be great. If you can't then no problem, just a suggestion.
I saw maxodex's videos on youtube and thought it was cool so I started pestering him through youtube messages lol
wow, I aimed for top 10 but I never imagined I'd get 1st!
thanks alot to everyone who liked the song and gave me feedback, I really appreciate it
File Name: Time Hollow - Investigation Start
Submitted: by Shadowboyultra
Authors: Shadowboyultra
Insert Size: 0x022B bytes
Type: Song
Sample Usage: Light
Source: Port
Duration: 1:00
Featured: No
Description: Could fit some industrial levels or some mysterious cutscenes.
SPC

This is a fairly OK port but it has some issues:

Channel #2 should be at a lower octave because it plays the same notes as the first channel and they amplify each other.
Channel #1 should be a @0 or a @13, and it's missing all the portamento from the original.
Channel #5 is missing the panning changes from the original song.
File Name: Rokko Chan - Jet Man(Mega Man X3 Style)
Submitted: by 444444XJ
Authors: 444444XJ
Insert Size: 0x058B bytes
Type: Song
Sample Usage: Many
Source: Remix
Duration: 0:32
Featured: No
Description: There was a cut off at the end, so we added q7c ^=1.

and Merry Christmas.
SPC

This is a nice remix but there's a big optimization issue going on: You have many loops that are too small, if you're gonna loop 5 notes or less without labels then I suggest you use [[ ]] because it takes less space that way.

For example:

This:
Code
    [g+g+ > c < g+]2
    [a+a+ > d < a+]2


Should become this:
Code
    [[g+g+ > c < g+]]2
    [[a+a+ > d < a+]]2


This:
Code
    [d+]8 [d]8 [c]8 < [a+]8 >


Should become this:
Code
    [[d+]]8 [[d]]8 [[c]]8 < [[a+]]8 >


Also, you forgot to change "mmx3" to "JetMan(MMX3)"
  • Pages:
  • 1
  • 2
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38