Page 5 of 10

Re: Post your instruments here!

Posted: Thu Dec 24, 2015 2:17 pm
by MiniMacro
Namco instrument that simulates a pulse wave. All 4 duty cycles are included, and correct octave.

Re: Post your instruments here!

Posted: Mon Dec 28, 2015 7:01 pm
by RazyDave
MMX Guitar..both 32 and 64

Re: Post your instruments here!

Posted: Tue Dec 29, 2015 1:42 am
by w7n
An N163 lead guitar instrument. As an example of how it is used, see the N163 module in this post.

Re: Post your instruments here!

Posted: Mon Jan 04, 2016 11:01 pm
by Quirby64
I attempted making some drums for N163. Emphasis on attempted, though, they don't sound the best. :P

Re: Post your instruments here!

Posted: Sat Jan 09, 2016 9:39 am
by HertzDevil
organ test
made with the wavetable calculator with:

Code: Select all

0.25*(sin(p) + sin(2*p)*.8 + sin(3*p)*.6 + sin(4*p)*k)
for k in 0, 1, step 0.2

EDIT: put together a lua script in exactly 40 minutes for this very purpose:

Code: Select all

local MULT = {1, 3, 2, 4, 6, 8, 10, 12, 16}

local assertParams = function (t)
  assert(type(t.file) == "string",
    "Bad filename")
  assert(type(t.vol) == "table" and #t.vol == #MULT,
    "Bad partial volume")
  assert(not t.master or (type(t.master) == "number" and t.master >= 0),
    "Bad master volume")
  assert(type(t.wavelen) == "number" and t.wavelen % 4 == 0 and t.wavelen >= 4 and t.wavelen <= 240,
    "Bad N163 wave size")
  assert(not t.perc or type(t.perc) == "table",
    "Bad percussion parameters")
  if t.perc then
    assert(type(t.perc.mult) == "number" and t.perc.mult >= 0,
      "Bad percussion frequency")
    assert(type(t.perc.vol) == "number" and t.perc.vol >= 0,
      "Bad percussion volume")
    assert(type(t.perc.len) == "number" and t.perc.len >= 0,
      "Bad percussion decay length")
  end
  return t
end

local generatewaves = function (arg)
  local base = {}
  local percussion = {}

  for i = 1, arg.wavelen do
    local val = 0
    for j = 1, #MULT do
      val = val + math.sin(2 * math.pi / arg.wavelen * (i - .5) * MULT[j]) * arg.vol[j]
    end
    base[i] = val / 8
   
    percussion[i] = not arg.perc and 0 or
                    math.sin(2 * math.pi / arg.wavelen * (i - .5) * arg.perc.mult) * arg.perc.vol
  end

  local out = {}
  local upper, lower = 0, 0
  local count = (arg.perc and arg.perc.len and math.ceil(arg.perc.len) or 0) + 1
  for i = 1, count do
    out[i] = {}
    for j = 1, arg.wavelen do
      local val = base[j] + percussion[j] * (1 - (i - 1) / count)
      out[i][j] = val
      upper = math.max(upper, val)
      lower = math.min(lower, val)
    end
  end

  if not arg.master then
    arg.master = upper <= lower and 1 or 7.5 / math.max(upper, -lower)
  end

  f = io.open(arg.file .. ".fti", "wb")
  f:write("FTI", "2.4", "\x05", string.pack("s4", arg.file))
  f:write(string.char(5, 0, 0, 0, 0, 0))
  f:write(string.pack("<I4I4I4", arg.wavelen, 0, count))
  for _, k in ipairs(out) do for _, v in ipairs(k) do
    local val = math.floor(arg.master * v + 7.5 + .5)
    val = math.min(15, math.max(0, val))
    f:write(string.char(val))
  end end
  f:close()
end

if arg[1] then
  local wavelen = 32
  if arg[2] then wavelen = tonumber(arg[2]) end

  generatewaves(assertParams{
    vol = {8, 8, 8, 4, 0, 0, 0, 1, 2},
    file = arg[1],
    --master = 1,
    wavelen = wavelen,
    perc = {
      mult = 6,
      vol = 1,
      len = 7,
    },
  })
  print(os.clock() .. " seconds elapsed.")
else
  io.write("Usage: \n  " .. arg[0] .. [[ name [wavesize]

Arguments: (edit these manually in the script)
  vol: partial volumes, max 8
  file: file name, extension omitted
  master: master volume, remove parameter for normalized waves
  perc:
    mult: percussion frequency
    vol: percussion volume, max 1
    len: percussion decay length
]])
end

o2.ftm shows the organ waves generated by the parameters above

Re: Post your instruments here!

Posted: Mon Jan 18, 2016 10:59 am
by Jir-0
Replicated some instruments from Mega Man IV (GB) and Mega Man 4 (NES). Some of the instruments are not accurate and there are possible missing instruments but these are what I can replicate at the time. (I made my own MM4[NES] instruments because I can't find a Mega Man instrument pack that has MM4's.)

EDIT: I included the triangle instruments. They require the N163 chip.

Mega Man IV (GB)
(GB) Mega Man IV Instrument Pack.ftm
(6.08 KiB) Downloaded 335 times


Mega Man 4 (NES)
Mega Man 4 Instrument Pack.ftm
(6.63 KiB) Downloaded 397 times

Re: Post your instruments here!

Posted: Wed Feb 24, 2016 5:45 pm
by MovieMovies1
i spent some time making some dpcm samples that sound fairly decent, i hope they can be of use to people using famitracker, ppmck, or some other tool to make famicom nes music.

Re: Post your instruments here!

Posted: Thu Mar 10, 2016 12:11 am
by Mojitone
Here's a collection of PCM samples from Rob Hubbard's C64 titles, ripped and converted for DPCM use by yours truly and ready to use.

DPCM Rob Hubbard.zip
EDIT: forgot some files
(447.24 KiB) Downloaded 249 times


FTM examples and NSF exports may or not be included as well.

Re: Post your instruments here!

Posted: Fri Mar 11, 2016 1:48 pm
by MiniMacro
Here's my instrument set from the album I'm currently working on, including:
-No DPCM
-Noise percussion
-Triangle support for noise percussion
-12 0 triangle bass that also serves as a noise hi-hat support
-12 different lead instruments with duty cycles
-The entire alphabet in Morse code (I'm not kidding)

Re: Post your instruments here!

Posted: Tue Mar 22, 2016 2:48 pm
by Jir-0
I tried to copy Kevvviiinnn's snare percussion from Stage 41, I hope it's close enough. Also here's the pulsate instrument from Rockman 6.
EDIT: Also added some Quickman percussion and one closed hat