divider
8bitpeoples.com


Nullsleep on Twitter Nullsleep on Facebook
////////////////////////////////////////////////////////
//// DPCM (DMC) HOWTO //////////////////////////////////
//// by nullsleep ////////// product of 8bitpeoples ////
//// version 0.1 /////////// Research & Development ////
////////////////////////////////////////////////////////
Download DPCM HowTo v0.1 (.ZIP)

This document is intended to serve as a helpful guide
for individuals using mck to compose NES music, who wish
to make use of the DPCM channel for sample playback.

It is not intended as a technical reference (atleast not
in its current form) ... For more detailed info in the
technical specifications i can recommend Brad Taylor's
document on NES sound.

That being said, there should be 3 files included in this
pack in addition to the document you are reading right
now:

make_nes.txt
make_nsf.txt
samples.h

The majority of this document simply contains comments
that i have added into these other 3 files collected in
one place.  Together they should provide a general use
template for achieving sample playback on the DPCM
channel.

Finally, you will need DMCconv to convert your samples
from .wav to .bin for use with mck.  The documentation
for DMCconv is not in english, however its operation is
simple enough so that this should not be a problem.
Below is the description of its usage:

Usage: DMCconv wavefile outfile 
 Options
 -r?  DMC Sampling rate(0-F) (Default:F 33.14KHz)
      0: 4.18KHz  1: 4.71KHz  2: 5.26KHz  3: 5.59KHz
      4: 6.26KHz  5: 7.05KHz  6: 7.92KHz  7: 8.36KHz
      8: 9.42KHz  9:11.18KHz  A:12.60KHz  B:13.98KHz
      C:16.88KHz  D:21.30KHz  E:24.86KHz  F:33.14KHz
 -v?  Volume(Default:100)
 -n   Volume not adjust(Default:Adjust)
 -b   Bank size padding(Default:No padding)


The time has come for the NES scene to come alive!

../love_alwayz/nullsleep
../www.8bitpeoples.com
../www.nullsleep.com

*** if you find any errors in this document please
*** send corrections to nullsleep@8bitpeoples.com

Related Links:
http://nesmusic.zophar.net	; the home of mck
http://www.vorc.org		; relevant mck news + more
http://nesdev.parodius.com	; a wealth of NES docs
http://research.8bitpeoples.com ; NESdev + other 8bit love

-----------===================================-----------
-----------==== COLLECTED COMMENTS FOLLOW ====-----------
-----------===================================-----------

.
.
.

////////////////////////////////////////////////////////
//// FROM SAMPLES.H ////////////////////////////////////
////////////////////////////////////////////////////////
;=======================================================
; this example maps the samples to the notes
; within the second octave (o2), so it is 
; important that in your songdata.mus file
; you set channel E to o2.
;
; the example above is for using only one sample.
; this is ideal if all you want to use the DPCM
; channel for is a one-shot type sample like a
; vocal "YO! LETS ROCK!" at the opening of your
; tune.  however, you probably want to use this
; channel for drum samples, in which case you
; will likely need more than just one sample.
; it should be easy enough to add more on, for 
; instance, the next two lines needed to add 
; another sample would be:
;
; db	$00,$00,$00,$00 ; c+
; db	$0f,$00,$14,$50 ; d	sample_2
;
; you can see how this works easier if you
; look at the hex numbers as one long value
; instead of the chunks broken up with the
; comma's:
;
; $0f000050 + $1400 =
; $0f001450 + $1400 =
; $0f002850 + $1400 = and so on ...
;
; that is to say the offset between each
; sample is $1400hex (which is 5120 in dec)
;
; the sharps (c+, d+, etc.) are skipped
; simply to make it easier to remember what
; note each sample maps to:
;
; c = kick
; d = snare
; e = hi-tom
; f = lo-tom
;
; is easier to remember when in the middle
; of a hot mml session (and takes less key
; strokes) than:
;
; c = kick
; c+ = snare
; d = hi-tom
; d+ = lo-tom
;=======================================================


////////////////////////////////////////////////////////
//// FROM MAKE_NSF.TXT*/////////////////////////////////
////////////////////////////////////////////////////////
;=======================================================
; again this is for using 2 samples.  to continue
; adding more samples on, its a modification that
; is no more difficult than the db statements added
; to samples.h, the next two lines would look like:
;
; .org	$c500
; .incbin	"sample_2.bin"		; sample_2
;
; looking at the hex address values for the .org
; statements alone illustrates the convention of
; adding subsequent samples clearly:
;
; $c000 + $500 =
; $c500 + $500 =
; $ca00 + $500 = and so on ...
;
; that is to say, the hex offset in this case is
; $500hex (which is 1280 in dec).
;=======================================================

* These conventions are identical for make_nes.txt