1,633

(29 replies, posted in Releases)

Whoa! Downloading now. smile

Subway Sonicbeat wrote:
akira^8GB wrote:

But cosoles = videogames.
Also, chipmusic is not exclusively made in consoles.
Still misleading wink

You mean computers too? I know, C64, Atari ST, computers with those fm chips... If that's why i'm misleading people, then I agree, cause I didn't thought about it.

If you're telling people you make music with videogame consoles, and you do, then you aren't misleading anyone! smile

Here's MODs in Memoriam's list of chip MODs, good stuff. smile

Voting is closed anyway, silly!

1,637

(22 replies, posted in Commodore Computers)

Super thread, thanks! smile

I normally just say "not much". I make sure never to mention music, because then they'd want to hear it. I'd love to say "taking old consoles, breaking them appart, taking the bits that make sound and re programming them to make synthesisors", but I've never done that (probably along with 90% of the chipmusic scene), so I can't. sad

1,639

(27 replies, posted in Nintendo Consoles)

SNESMOD if you want real life SNES music. However SNES sounds to me like poor quality sampletracking, the only real distinctive feature is the reverb, so I don't know why anyone'd bother. No MIDI sync, sorry. sad

First things first, if your internet connection can handle it, go download all releases from Ubiktune. Pause is a cool place to start too (Linde, C-jeff and Joshua Morse's albums stand out in particular).

Since you said you were look for some slightly older releases, these are some of my favourites (musicdisks though):

Rebels - Chipmusicdisk 1 [Windows, 2001] - this is the best, ever.
Fairlight - Twisted Chipster [Windows, 2002]
Tequila - pr0n [Windows, 1999]

I apologise if that was not what you were looking for, but I hope you enjoy some of it! smile

1,641

(15 replies, posted in General Discussion)

I've already got it, however I got it from Geocities so I don't know if it's still there.

------------------------------------------------------------------------
MCKC: MML > MCK Converter Ver 0.14 by Manbow-J
([email protected])

NES/NSF sound driver by Izumi

English Translation and additional documentation by virt
([email protected] | virt.vgmix.com)
------------------------------------------------------------------------

Introduction

     As you may or may not know, MML (Music Macro Language) is a popular form of
     sound programming in Japan, and has been shaped into a creation tool for
     everything from music for various game consoles to General MIDI sequences.
     Its huge array of commands and extremely simplified macro structure make it
     quite fast and adaptable for composition in many forms, past a relatively
     simple learning curve.

     Americans and Europeans have typically relied on module trackers to create
     chiptunes - or, as they're called in Japan, VGM. A tracker is certainly an
     incredibly precise, visually straightforward, and otherwise logical tool.
     However, in imitating a NES, there are many things that it just can't pull
     off, and others that take far more effort than they should.

     For one thing, in such a restrictive timing grid, it's difficult to cram a
     lot of timbral changes into a short space. There's no facility in a sample-
     based tracker for programming changes in the sound into the instrument
     script, so a quick change of timbre at the beginning of the note has to be
     put into the pattern each time, and this can drastically complicate the
     composition of a tune. Every note echo, every timbral attack, all by hand.
     We do it out of necessity, but it's extremely inefficient, and leaves me
     wanting for more control.

     Plus, there's that whole feeling of disconnection one gets when working
     with audio samples to emulate the realtime synthesizer of the NES. Sampled
     noise sounds fake and reacts too predictably, since it's not at all random.
     The triangle's aliasing is weak and unconvincing. DPCM doesn't sound right
     when mixed at 44.1khz. We need to be composing for the actual console's
     limits and structure, not a crude imitation. While NSF might still be an
     emulation, it's a LOT closer than an S3M or XM module.

     But NSFs are just big chunks of ASM instructions! What's a NES-obsessed
     musician to do? Either devote months (or years!) to perfecting 6502
     assembly and code your own sound driver, then worry about a script for the
     music itself -- or use the fantastic MCK driver, and program it with MML,
     then compile it into a finished NSF or NES binary. Let the authentic
     Western NESchip love begin!


------------------------------------------------------------------------

Using MCKC

MCKC, specifically, is the program that you run to convert your raw MML sequence
(just a plain old text file) into assembly-language source code compatible with
the MCK sound driver, to be compiled with NESASM into a finished NSF or NES rom.
Once you have created your MML document, you run MCKC on it like so:

     Mckc [switch] [mml file] ([output file, optional])

You'll probably want to name the file songdata.h so it won't be necessary to
edit the compilation scripts, but you can change the file that the scripts call
for from songdata.h to whatever you like, and thus the filename becomes
unimportant.

* Command-line switches:

     -h or -?
          A help message is printed out.

     -n
          Helpful information is written to the screen but "effect.h", an
          assembly file defining the various macros used in the song, is not
          created as it normally would be.

     -o[str]
          The same data is printed and "effect.h" is created with a filename
          equivalent to [str].

     -w
          Suppress warnings.

------------------------------------------------------------------------

Explanation of conventions used in this text

* Note: Hexidecimal Notation
     Within this document there are several instances where a number is preceded
     by a "$" and may contain the letters A ~ F. This is standard hexidecimal
     notation, and it is assumed that the reader is familiar with hex numbers,
     although for most functions described no hexidecimal values are necessary.


* Duration Conventions and Timing

     MML's notation works much like traditional staff notation. Quarter notes,
     Hemisemidemiquavers, 16th notes, Half rests, they're all used. "c4", in
     addition to being a powerful explosive, is a "c" quarter note. c16 is a
     16th note.

     Furthermore, you can 'dot' your notes, extending them by half their length,
     by adding a period. "c4." is equivalent to c4 with a c8 added to the end.
     An interesting thing about MML is that you can chain certain modifiers like
     dots - you can type "c4..." and it will be equivalent to c4 with c8, c16,
     and c32 tied onto it.

     There is another division within notes: 'Count Length', which works as
     follows: All notes are broken up into 192 equal pieces, regardless of their
     time duration. This is used in such commands as the "q" effect as noted
     below, when it is necessary to divide a note proportionally in order to
     alter some part of it.

     Finally, in the terms of the NES, a 'frame' is a period of time equal to
     1/60 second. This is not related to tempo in the traditional musical sense,
     but the values for many commands are stepped through once per frame and
     thus take the same amount of time regardless of the song's tempo. Things
     like volume envelopes have discrete values that are not scaled to match the
     speed of the song.


------------------------------------------------------------------------

The Script Header

          There are a number of fields that you will find at the top of the
          file, before all of the note data. This information is the header, and
          it sets forth a number of parameters that define the properties of the
          song, and establishes "macros" that will allow you to automate volume,
          pitch, and timbre changes by issuing simple commands in the sequence
          script.

Credits

     None of the following three fields are included in the final output
     assembly file once run through MCK. To have them show up in the final NSF,
     you will have to edit the appropriate fields in the make_nsf.txt assembly
     file included with your MCK distribution. These fields are simply included
     in the format so that MML files can be identified upon examination.

     #TITLE[str]
          The title of your tune.

     #COMPOSER[str]
          The name of the person who composed the tune.

     #PROGRAMER[str] <--sic, typo is correct form
          The name of the person, if applicable, who created the MML file from a
          pre-existing composition in another format and compiled it into binary
          data with the player code. In the Japanese VGM industry, it is not
          uncommon for a composer to work with a sound programmer.

Definitions and Includes

     #OCTAVE-REV[num] (0)
          Normally, the way you change octaves within your sequence is by
          writing > (raise octave) or < (lower octave) in between notes. If you
          use #OCTAVE-REV, however, with a non-zero value for [num], the
          "polarity" of octave-changes will be reversed; < will increase the
          octave by one. and > will decrease it.> " with +1, " < " with -1).

     #INCLUDE[str]
          Inserts a separate, supplementary file into the current file at the
          conversion-to-assembly stage. You can chain together up to 16 files in
          this manner. This will allow you to have un-changing or oft-used
          values such as #COMPOSER or a complex set of volume/timbre envelopes
          set aside in a text file - and call them other text files without
          having to paste them in each time.

Macros

     MML stands for Music Macro Language - and as such, it relies heavily upon
     the definition of key sequences and complicated series of operations that
     are defined once and then called upon later in a sequence. These are just
     like word-processing macros or macros in other types of programming
     languages, and they save quite a bit of time as opposed to inputting volume
     commands, "instrument" sounds, and the like each time by hand.

     For someone used to module tracking, this is a huge boon when writing
     chiptunes with limited timbres and volumes! If, for example, you wanted to
     have each note start with a 50% square wave attack and then quickly jump to
     a 25% pulse wave to approximate a piano-like "pling", you'd have to change
     the instruments on subsequent rows in a tracker every time you put in
     notes. This is exceptionally inefficient. Consider the difference between
     the following examples:

            Tracking         vs.          MML

          |C-5 01 ---
          |C-5 02 ---                   Defined once at top of file:
          |--- -- ---                   @01 = { 1 2 }
          |E-5 01 ---
          |E-5 02 ---                   Then, in the composition:
          |--- -- ---                   @@01 c e g
          |G-5 01 ---
          |G-5 02 ---

     It very quickly becomes obvious that by using macros you can save yourself
     a whole lot of time with note entry and timbre/volume/pitch changes. You
     define these macros before the sequence data, or even in a separate
     #include file. The following is a list of the various macros you can use.


Timbre Macro
     @[num] = { - | - }
          Accepting values between 0 ~ 127 for [num] and 0 ~ 15 within the { }
          brackets, this macro will change the duty ratio (timbre) of the sound
          while playing, as follows:

               0... 12.5% (thin, raspy pulse wave)
               1... 25.0% (smooth, thickly timbral pulse wave)
               2... 50.0% (clear, thin bell-like square wave)
               3... 75.0% (identical to 25%, but phase-inverted)

          Multiple values are separated by spaces or commas.

          The first value defines the initial timbre, and the last number the
          final timbre, to be held until the note is stopped. In between,
          however, the timbre will "sweep" through each value, advancing once
          each frame, until it reaches the end. In this manner, you can give
          each note an "attack" that will make it rapidly change from one timbre
          to another when the sound starts.

          The versatility of this technique is not to be underestimated; it is
          integral to many fuller-sounding NES soundtracks. It enables the
          composer to choose from a wide range of instrument sounds far beyond
          the simple ping of the pulse wave's four duty ratios.

          Using a "|" between numbers will allow for a loop in the macro. Once
          the end of the macro is reached, it will return to the number
          immediately following the "|" and sweep through again. This repetition
          will continue until the note is stopped. A loop with dissimilar
          timbres will lend a thick, burbly character to the sustained sound,
          similar to the "PWM" technique used in C64 and some European NES
          soundtracks.

          If the "|" is immediately before the last number in the macro, only
          that last number will loop, rendering the "|" superfluous. Therefore,
          the following two macros function identically:

               @0 = { 0, 1, | 2 }
               @02 = { 0 1 2 }

          The [num] value is called by the corresponding value accompanying the
          @@ command, as discussed below.

          NOTE: If you're using the triangle channel, use @3 - and if you're
          using the noise channel, use either @0 or @1 for a smooth or buzzy
          noise sound.

Volume Envelope Macro
     @v[num] = { - | - }
          Accepting values between 0 ~ 127 for [num] and 0 ~ 15 within the { }
          brackets, this macro will change the amplitude of the sound while
          playing. This is known as a volume envelope, and enables a slow
          gradual fade, a fast fade, or an instant cutoff of sound. This is also
          a facility by which echoes can be created automatically by turning the
          sound back on briefly once it has faded out, or to achieve other
          special volume effects in a reusable macro.

          Using a "|" between numbers will allow for a loop in the macro. Once
          the end of the macro is reached, it will return to the number
          immediately following the "|" and sweep through again. This repetition
          will continue until the note is stopped. If the loop point changes the
          volume back drastically, it will sound like the sound itself has
          restarted, and "stutter".

          If the "|" is immediately before the last number in the macro, only
          that last number will loop, rendering the "|" superfluous and
          maintaining the volume level of the final value indefinitely until the
          channel is reused.

          The [num] value is called by the corresponding value accompanying the
          @v command, as discussed below

          NOTE: The triangle channel, because of the way it produces sound
          (through very rapid volume sweeps) is incapable of playing at any
          volume other than full. This channel is either on or off, never in
          between. Volume Macros should not be used on it.


Pitch Envelope Macro
     @EP [num] = { - | - }
          Accepting values between -127 ~ 126 for [num] and 0 ~ 15 within the {
          } brackets, this macro will change the frequency (pitch) of the sound
          while playing. This is known as a pitch envelope. The source of
          classic video game bwoops and bleeps, this converts the pulse wave
          voices into exponentially increasing or decreasing sweeps through
          frequency.

          Using a "|" between numbers will allow for a loop in the macro. Once
          the end of the macro is reached, it will return to the number
          immediately following the "|" and sweep through again. This repetition
          will continue until the note is stopped.

          If the "|" is immediately before the last number in the macro, only
          that last number will loop, rendering the "|" superfluous and
          maintaining the pitch change of the final value indefinitely until the
          channel is reused.

          The [num] value is called by the corresponding value accompanying the
          EP command, as discussed below.


Arpeggio (Note Envelope) Macro
     @EN [num] = { - | - }
          A more flexible equivalent of module tracking programs' legendary
          "Arpeggio" functions, this macro will allow you to define a rapid
          series of note changes to approximate a musical chord, while using
          only one channel. The result is the synthetic equivalent of gargling,
          and has long been a trusty standby in the chiptunist's repertoire of
          texture-thickening tricks. Each value in { } brackets, separated by
          space or comma, can range from -127 ~ 126, and that value determines
          the number of semitones to change the note by on each subsequent
          frame. The pitch does not return to the start after each frame, but
          remains at the previous pitch and adds or subtracts to it by the
          amount of the next value, as illustrated in this example:

               @EN00 = { 0, 1, 1, 1, -1, -1, -1 }

               If a C is played, the notes in the arpeggio will be:
               C, C#, D, D#, D, C#, and C - each note occupying one frame.

          Using a "|" between numbers will allow for a loop in the macro. Once
          the end of the macro is reached, it will return to the number
          immediately following the "|" and gargle its way through again. This
          repetition will continue until the note is stopped.

          If the "|" is immediately before the last number in the macro, only
          that last number will loop, rendering the "|" superfluous and
          maintaining the note of the final value indefinitely until the channel
          is reused.

          The [num] value is called by the corresponding value accompanying the
          EN command, as discussed below.


Pitch LFO (Vibrato) Macro
     @MP[num] = { [delay], [speed], [depth] }
          Used to define a reusable pitch LFO (Low Frequency Oscillator, in this
          case a sine-wave pattern of pitch modulation, better known to
          musicians as vibrato.) [num] can range from 0 ~ 63. An explanation of
          each parameter follows:

               [delay] is the period of time spent with no vibrato before the
               LFO takes effect. This is useful for many lead voices, as it is
               often not desirable to have the note start with immediate
               vibrato, but to let it come in after a short time. Value can be 0
               ~ 255 ticks.

               [speed] is the frequency of the LFO.  Ranges from 1 ~ 255. The
               smaller the value, the faster the pitch will oscillate.

               [depth] is how drastic or pronounced the vibrato is. Accepts a
               value of -255 ~ 255. The larger the value, the more the pitch is
               changed. Extremely large values may cause the pitch to "overlap"
               to the bottom of the frequency range or other anomalous behavior.

          The [num] value is called by the corresponding value accompanying the
          EN command, as discussed below.


------------------------------------------------------------------------

Channels

          NES audio consists of five voices, or musical parts, that can play
          simultaneously, referred to here as 'channels'. They cover the melody,
          harmonic accompaniment, bass, and drums, as well as producing sound
          effects within a game. The five channels and their designated sound
          capabilities are as follows:

          A = Pulse Wave 1 (variable duty ratio [timbre])
          B = Pulse Wave 2 (same)
          C = Triangle Wave (16-level amplitude modulated square)
          D = White Noise (dual-mode, buzz and hiss)
          E = DPCM (tiny samples, drums, basses, "Double Dribble!")

          In the body of the MML sequence, notes and commands are targeted at a
          particular channel by calling that channel to 'attention' by issuing a
          channel header command. This can either be done at the front of each
          line in the text file, or whenever you want within the sequence.

          Having header commands 'switch channels' in the middle of a line will
          not in any way affect the timing of notes, because all of the notes
          and commands belonging to each channel are separated and reassembled
          into one solid track during compilation. Thus, the following
          examples...

               1) A cd   B c   A efg   B defg

               2) A cdefg   B cdefg

               3) A cdef   B cd   A g   B efg

               4) A cdefg
                  B cdefg

          ...Will all sound identical, regardless of spacing or interruption.

          Another concept is that of pluralization. You can chain together
          several channels and call them all to 'attention' concurrently, so
          that a single string of notes or commands passed to that group will be
          played on all of them. Thus, the following examples...

               1) ACE cdefg

               2) A cdefg C cdefg E cdefg

          ...Will sound identical. This flexibility in note entry lends itself
          to many different programming styles, and is one of the chief
          advantages of MML over other sequencing techniques for chiptunes.


Comments

     /* ~ */
     /* This is a comment. */ Any data surrounded in these symbols is ignored by
     the compiler and serves only as comments to the source sequence, as a
     reminder to yourself or explanation for examiners.

     ; and /
     These symbols both will cause the compiler to ignore the rest of the line,
     until the next line break.





------------------------------------------------------------------------

MML Commands

          These are the commands used within a sequence, following the song
          headers and after issuing a channel header, to accompany and modify
          the notes you enter. They range from changing the character of the
          sound to altering the flow of the music. The number in (parentheses),
          following the form illustration, is the hard-wired default value that
          will be assumed by the player code if the command is not issued in the
          sequence.


     * Data Skip
          !
               All data on the channel on which this command is issued will be
               ignored, although further data on other channels will still be
               executed. This is a sort of break-point that will allow you to
               stop the music without permanently deleting notes.

     * Tempo
          t[num] (120)
               Sets the tempo of a track, in BPM (beats per minute). Valid range
               is from 1 ~ 255.

     * Default Note Duration
          l[len] (4)
               Sets the default length, in traditional measure/[len] notation,
               of a note unaccompanied by a duration flag, i.e., "c" instead of
               "c4" or "c16".

     * Pitch Sweep
          s[speed],[depth] (0,0)
               Pitch Sweep, similar to the pitch envelope. The range for [speed]
               appears to only function in the range of 9 ~ 15, where a higher
               value will effect a more subtle change every frame, and the range
               of [depth] appears to function according to this chart:

                   |1  2  3  4  5  6  7  8  9  10 11 12 13 14 15|
                   |drastic<--->slight->/^\<-slight<---->drastic|
                   |       DOWN         OFF          UP         |

               Here the closer to the ends of the spectrum, the more drastic the
               pitch change is, and if the value is 8, nothing happens.

     * Timbre Single Select
          @[num] (0)
               Sets the duty ratio (timbre) of the square wave accordingly:

                    0... 12.5% (thin, raspy pulse wave)
                    1... 25.0% (smooth, thickly timbral pulse wave)
                    2... 50.0% (clear, thin bell-like square wave)
                    3... 75.0% (identical to 25%, but phase-inverted)

               This cannot be used at the same time as the @@ command, described
               below - whichever command is used last will take priority.

     * Timbre Macro Select
          @@[num] (0)
               Selects a Timbre Macro to apply to subsequent notes. This cannot
               be used at the same time as the above @ command - whichever
               command is used last will take priority.

     * Volume
          v[num] (0)
               This is used to directly set the volume of the current channel
               for subsequent notes, ignoring any volume envelope you may have
               set. Valid settings are 1 ~ 15. As expected, this cannot be used
               at the same time as the @v command - whichever is used last will
               take priority.

     * Volume Up
          v+[num] (1)
               This will increase the volume of the current channel for
               subsequent notes - as an addendum to the v command. This is
               useful when you want to implement a sequenced volume fade by hand
               but do not want to have to change every value by hand should you
               decide to start the fade at another level. Valid range is 1 ~ 15.
               As with the v command, you cannot use this at the same time as
               the @v command.

     * Volume Down
          v-[num] (1)
               Identical to the above, but for a decrease in volume.

     * Envelope
          @v[num] (0)
               Selects a Volume Envelope Macro to apply to subsequent notes.
               This cannot be used at the same time as the above v command -
               whichever command is used last will take priority.

     * Octave Select
          o[num] (4)
               Chooses an octave in which notes will play. The octaves
               accessible on the NES range from 2 ~ 7.

     * Octave Up
          >
               Increases the octave by one and signals that subsequent notes be
               played in the next octave. Multiple > commands in series will
               raise the octave multiple times. The polarity of this command
               will switch if you issue an #OCTAVE-REV directive in the header.

     * Octave Down
          <
               Same as above, except reversed.

     * Play Note
          c,d,e,f,g,a,b[len] (4)

               Just the same as traditional note scales. Here sharps are
               represented by + and flats are represented by -. Note that the
               assignment of sharps and flats are independent of the scale and
               otherwise unconditional, so it is possible to designate
               enharmonics. Therefore, A++, C- and d+++++++++ will all produce a
               B note. [len] will set the length of the note, in (measure/[len])
               notation, such as c16, f32, or b8, but if [len] is left blank,
               the value of L will be used as the duration.

     * Direct Note Select
          n[num],[len]
               Note is played by number, instead of by name or octave.
               Supposedly, the first C in octave 2 is note #0. It does not
               appear to produce any sound below note #9 on the pulse wave
               channels, however, only on the triangle wave, so don't plug these
               exact values into the pulse wave channels, only extrapolate up
               from #9.

                       Numerical Designations
                        Across Second Octave
                    +-------+---+  +-------+---+
                    |C      |  0|  |F+(G-) |  6|
                    |C+(D-) |  1|  |G      |  7|
                    |D      |  2|  |G+(A-) |  8|
                    |D+(E-) |  3|  |A      |  9|
                    |E      |  4|  |A+(B-) | 10|
                    |F      |  5|  |B      | 11|
                    +-------+---+  +-------+---+

     * Direct Frequency Select
          @n[num],[len]
               This command allows you to set the register of the NES that
               controls the pitch of each channel directly. This bypasses the
               note interface completely and allows you to access the full range
               of frequency available to the hardware.

               The range of values that can be used are 8 ~ 2034 ($07f2 [hex]) -
               the smaller the value, the higher the frequency.

               The pitch register has an exponential response. Changes become
               twice as drastic with each octave increase - the space between
               discrete notes shrinks exponentially as you get higher up the
               scale. Here is a chart (again, doesn't expect any sound at this
               range on the pulse channels, just go on this reference and
               divide) which details the tuning of specific discrete pitches
               across the lowest octave.

                    +---------+-----+ +---------+-----+
                    |A-1      |$07f2| |D-2+(E-) |$059E|
                    |A-1+(B-) |$0780| |E-2      |$054E|
                    |B-1      |$0714| |F-2      |$0501|
                    |C-2      |$06AE| |F-2+(G-) |$04B9|
                    |C-2+(D-) |$064E| |G-2      |$0476|
                    |D-2      |$05F4| |G-2+(A-) |$0436|
                    +---------+-----+ +---------+-----+

               Notice that in the course of this scale, the number shrinks in
               half? To find the value of a chromatic note in another octave,
               divide the value of that note given in this chart by 2 for each
               higher octave.

               For example, you can see that C-2 is $6AE. To find C-4, $6AE/2/2=
               $1AB, so C-4 is $1AB.


     * Rest Sign
          r[len] (4)
               Just as in traditional notation, the rest is the equivalent of a
               silent note. The [len] parameter works exactly as in a normal
               note, but the channel will be silent instead for that period of
               time.

     * Tuplet
          { ~ } [len]
               Best introduced through example, { ccc }8 will play three c notes
               in the same amount of time it would take to play one normal
               eighth note. In traditional notation this is called a triplet.
               Although they might sound muddy or indistinguishable, it is
               possible by this same method to create quintuplets, septuplets,
               25-tuplets. or whatever you can imagine-tuplets.

     * Quantize (Note Cut) Commands
          q[num] (8)
               Quantization, slightly different from the typical MIDI
               definition, controls here the length of the note. The value given
               here will allow [num]/8 of the note to play. In other words, each
               note is divided into 8 parts and, using this command, [num] of
               them will play before the sound is cut off. This is more useful
               than it seems for lead parts where you might want to abbreviate
               some of the notes on off-beats to make the lead sound more
               energetic, instead of letting every note drag until the next one
               starts. The range of input is, of course, 1 ~ 8.

          @q [num] (0)
               q's more flexible but perhaps less intuitive big brother, This
               one is independent of note length, and will make the note stop
               [num] frames prematurely, regardless of its length. Calculations
               as to exact note equivalents are possible by measuring against
               the tempo - at 120 bpm, 15 frames is equivalent to an 8th note,
               since there are 60 frames per second.

               A side note of personal interest: If you're trying to reproduce
               the style of K. SAWA of Technos Japan fame, you'll probably be
               relying on this command constantly to emulate the tendency of
               their player engine to clip each note a few frames before the
               next.

     * Slur
          &
               Used to connect two notes of the same pitch, adding their
               duration together to make one long note. "a8 & a8" will combine
               together to play as a4, which is twice as long as its components.

     * Tie
          ^
               Similar to the Slur in that it can be used to extend the duration
               of a note by adding another note to the end of it, but the Tie
               does not require a note to be declared. It simply functions as
               follows: "a8+8" to create an a4.

               I am not entirely sure why these two commands exist separately,
               as they seem to do the same thing (Slur does not change the pitch
               of the note, as one would expect, and there seems to be no note
               portamento command) but there it is. Perhaps in future versions
               of MCK there will be a discrete way to change to a new single
               pitch while playing, perhaps a note slide (portamento) function,
               which would be quite ideal.

     * Detune
          D[num]
               Detune gives you fine control over the frequency of the channel
               in close steps. At low levels it is quite subtle but it can also
               be used to dramatically alter the pitch of notes. Its main use
               when subtle is to create a "flanging" effect by playing the same
               notes on two channels, with one channel slightly detuned. This is
               another way to create sounds that go beyond the standard four
               duty ratio timbres of the pulse channels.

               The valid range is -127 ~ 126. When the value is set at 255, the
               effect is cancelled.

     * Pitch LFO Macro Select
          MP[num]
               This will choose a particular Pitch LFO Macro to apply to the
               subsequent notes, and the [num] corresponds directly to the
               assigned value of the @MP[num] you want.

               The valid range is 0 ~ 127, and 255 cancels the effect.

     * Pitch LFO OFF
          MPOF
               This is equivalent to issuing MP255 - it turns off the Pitch LFO
               Macro, effective at the beginning of the next note (issuing it
               after the currently playing note will not cancel it on that
               note).

     * Pitch Envelope Macro Select
          EP[num]
               This will choose a particular Pitch Envelope Macro to apply to
               the subsequent notes, and the [num] corresponds directly to the
               assigned value of the @EP[num] you want.

               The valid range is 0 ~ 127, and 255 cancels the effect

     * Pitch Envelope OFF
          EPOF
               This is equivalent to issuing EP255 - it turns off the Pitch
               Envelope Macro, effective at the beginning of the next note
               (issuing it after the currently playing note will not cancel it
               on that note)

     * Note Arpeggio Macro Select
          EN[num]
               This will choose a particular Arpeggio Macro to apply to the
               subsequent notes, and the [num] corresponds directly to the
               assigned value of the @EN[num] you want.

               The valid range is 0 ~ 127, and 255 cancels the effect

     * Note Arpeggio OFF
          ENOF
               This is equivalent to issuing EN255 - it turns off the Pitch
               Envelope Macro, effective at the beginning of the next note
               (issuing it after the currently playing note will not cancel it
               on that note)

     * Track Loop
          L
               The almighty L sets a loop point in your sequence. This will
               ensure that your chiptune plays forever in the minds of your
               fans. Until they hit stop. Then, maybe, if you're lucky and
               skillful, afterwards too.

               Simply place the L at the beginning of the sequence you wish to
               have looping continuously - make sure that the loop points of all
               of the active channels line up, unless you have planned
               otherwise, like for a repetitive drum track.

     * Repeat
          [ ~ | ~ ][num]
               This will repeat any sequence of events (notes or commands) [num]
               times. For example, [ cdefg ]4 is equivalent to
               cdefgcdefgcdefgcdefg. Useful as a limited loop.

     * Wait
          w [len]
               Delays execution of the next command by [len], and preserves the
               execution of the current command for the duration of the wait.
               This is similar to r but it doesn't necessarily impose silence.

     * Direct Memory Entry
          y[adr],[num]
               1 byte of a numeric value of your choosing [num] will be written
               to [adr] register location in the NES memory, directly. This can
               have undesirable results, naturally, so make sure you know what
               you're doing. I know I sure as hell don't.


------------------------------------------------------------------------

(To-do list, this document: DPCM and noise channel quirks - how to add samples
and make them work - varies from the typical pulsewave notation!)

(To-do list, separate from this document: DPCM/DMC conversion primer, full
explanation and clear, refined translation of MCK compilation guide (i.e. how to
set everything up so it's ready to compile, including all your samples,
configuring the make_n** scripts, etc.))

For the time being, information on compiling the finished MCK-ready assembly is
available in English at the same place you most likely got MCK/MCKC to begin
with: http://nesmusic.zophar.net.

The wealth of NES music information that exists in Japanese is quite vast, and
is far beyond the scope of my extremely limited translation ability. I would
appreciate any help that anyone can contribute toward translating interesting or
useful documents about NES music.

For up-to-date, interesting, and exceptionally varied news coverage of the
chiptune/VGM world, please visit http://www.vorc.org.

(Warranty and Software Version History from original Japanese text omitted)
-j


English v1.0 - August 1, 2002 - Initial Release
Lazerbeat wrote:

There seem to be a couple of mutually things people fear.

1 - A website with a music based popularity contest.

2 - A website with unfiltered content where it is hard to find media you like.

Some kind of preference based system be it likes/thumbs/ratings would give two streams of data, one filtered and the other not, would it be possible to provide both? Perhaps set a preference somewhere on the site where people could choose filtered, unfiltered or both?

I like to see comments, but not drama-comments about how a song has way too many likes... how will the system tell which is which?

1,643

(38 replies, posted in Software & Plug-ins)

Hehe, Medusatracker would be awesome! Of course you can just use any VST tracker with Medusa, but it's not really the same...

joule wrote:

However, I would accept if albums and bigger releases could be reviewed. That would be a worthy enough cause and more of a meaningful and valid way of gaining reputation/attention. Also giving the "scene" a boost in the right direction..

Yeah, it's a shame no one ever comes to 8brot! sad

Also agree that being on some kind of special list is essentially the same as a chart. I personally think that the favourites system which we have for forum topics should just be carried over to the uploads section, and nothing more.

Edit: and also agree with ?B about not having counts on the index.

1,645

(15 replies, posted in General Discussion)

Here's a flash based MML editor for people who just want to try it out online (find out what all the fuss is about!) without messing with compilers, batch files, etc, and here's the manual. Some kind of OPL3 and PSG emulation going on. The manual isn't too newb-friendly, so read Nullsleep's tutorial too.

Thanks for the heads up on that 3ML thing, Beware! Hadn't heard of that before, looks very nice. smile (here's a link to the English version, for anyone who's interested).

1,646

(131 replies, posted in Commodore Computers)

Well, there are people who will do them for a tiny fee (50p, maybe a pound), plus postage. Not so bad after just spending £35 on an Amiga, hehe. Now I've got Hombre and all, maybe I can start offering these services for free, even.

Until I decide whether I want to do that, I recommend:

Broony1968 {at} aol {dot} com

Postage to Argentina might be a bit much, but I have a feeling you don't need this anyway. smile

1,647

(798 replies, posted in LittleGPTracker)

matt.nida wrote:

My absolute number one dream feature for LGPT would be configurable NNA options ala Renoise or (I think) ImpulseTracker. Would make working with pad/orchestral sounds a LOT more straightforward.

Yeah, that would be great!

1,648

(131 replies, posted in Commodore Computers)

The best way I have found to transfer files to A500, for anyone who is wondering, is Hombre on a floppy, with a 9 -> 25 pin null modem cable. The cable will cost next-to nothing, really easy to find, and it gives you a bunch of different ways to transfer data - I believe you can even set up a folder on your PC to act as another drive on the A500, although I haven't tried it yet (obviously you have to keep it connected to the computer to do this).