MIDINES + NESFX 1.0 MANUAL
Control:
Controller #1 SELECT = Toggle from MODE 1 to MODE 2 and back.
Controller #1 START = Toggle NESFX ON/OFF.
Display:
SECTIONS:
- OVERVIEW
- MIDINES 1.0 MIDI IMPLEMENTATION
- SOUND TECHNIQUES
- MIDI CHART
OVERVIEW------------------------------------------------
The 8bit Nintendo features the 2A03 CPU, a 6502 CPU variant which includes integrated audio generation circuitry. The sound capabilities include 2 variable duty cycle pulse (square) sound channels, 1 triangle sound channel, 1 noise sound channel, and a digital sample playback sound channel.
MIDINES is a independently authored, non-Nintendo licensed hardware interface that turns the analog sounding 8bit NES, into part of the professional MIDI recording studio.
MIDINES is a hardware interface that allows access to the 8bit Nintendo sound registers via MIDI command. MIDINES 1.0 features two modes of operation. MODE 2 which is the default, allows for visual feedback of the incoming MIDI data via the control display sprites. MODE 1 cancels the updating of the visual feedback increasing MIDI processing performance, also eliminating the PPU related buzz. To switch between MODE 1 and MODE 2 press the SELECT button on controller #1.
MIDINES also includes NESFX, a simple 8 bit visualization routine. To turn on/off NESFX press the START button on controller #1.
Listed in the Sound Techniques section are tricks on how to get delay, chorus, and a trick for making full frequency sample based sounds.
A quick reference MIDI chart is included in the back of this manual. Detailed MIDI implementation information is provided in the MIDINES MIDI IMPLEMENTATION section.
MIDINES 1.0 MIDI IMPLEMENTATION-------------------------------------------
PULSE CHANNELS (MIDI channels 1,2) ===============
The pulse channels feature 4bit volume, 4 duty cycle settings, a sweep pitch feature, and an auto volume envelope feature. The pulse channels can also be modulated via a MIDINES modulation hack that constantly resets the pulse waveform generator.
Note on velocity allows 16 volume steps, and is derived by dividing the midi note volume by 8. Therefore changes in velocity of less than 8 may not have an actual effect on the sound channels volume level.
Fine Pitch offsets the base value for the note. Due to the offset some notes may wrap from low to high or high to low pitches.
PULSE MIDI CONTROLLER CHANGE MESSAGES (CC parameters)
OFF = less than 64 (0x40)
ON = greater than or equal to 64 (0x40)
Mod wheel / CC1 = Duty Cycle
CC7 = Master Volume (value now overrides note velocity)
CC8 = Fine pitch mod (same as Fine Pitch midi parameter)
CC9 = Pulse channel length envelope
CC10 = Toggle OFF/ON pulse channel loop envelope
CC11 = Toggle OFF/ON volume Envelope disable
CC12 = Toggle OFF/ON Modulate pulse channel
CC13 = Toggle OFF/ON Enable Sweep
CC14 = Sweep Down / Up
CC15 = Sweep Period
CC16 = Sweep Shift
TRIANGLE CHANNEL (MIDI channel 3) ===============
The NES's triangle channel is quite basic and does not support volume control as do the pulse and noise channels. Despite this limitation the triangle channel features the widest frequency response that the NES has to offer, even generating audio surpassing 18KHz!
Fine pitch offsets the base value for the note. Due to the offset some notes may wrap from low to high or high to low pitches.
TRIANGLE MIDI CONTROLLER CHANGE MESSAGES (CC parameters)
CC8 = Fine pitch mod
NOISE CHANNEL (MIDI channel 4) ===============
The noise sound channel features 4bit volume control, and also has an auto volume envelope feature, similar to the pulse channels. The noise channel has 2 modes of noise generation, long loop and short loop. Long mode allows for standard noise generation, and short mode sounds more metallic and less random, more periodic. The NES's long / short noise loop modes are similar to the Game Boy noise modes.
The noise channel is spread out over MIDI channel 4. Due to the limited 16 noise pitch/period values that the NES allows, the noise period is repeated every 16 notes. For MIDI notes above 64 inclusive (64 dec 40 hex), noise short loop mode is set to on. For MIDI notes below 64 (64 dec 40 hex) noise loop mode is set to long loop mode.
Note on velocity allows 16 volume steps, and is derived by dividing the midi note volume by 8. Therefore changes in velocity of less than 8 may not have an actual effect on the sound channels volume level.
NOISE MIDI CONTROLLER CHANGE MESSAGES (CC parameters)
OFF = less than 64 (0x40)
ON = greater than or equal to 64 (0x40)
CC7 = Master Volume (value now overrides note velocity)
CC9 = Noise channel length envelope
CC10 = Toggle OFF/ON noise channel loop envelope
CC11 = Toggle OFF/ON volume Envelope disable
SAMPLE CHANNEL (MIDI channel 5) ===============
The sample channel is played via MIDI notes on MIDI channel 5. MIDINES 1.0 provides 16 TR/breaker type samples pitched about the keyboard in 16 note groups.
The 16 samples include:
dnb bass stab
TR-808 clave
Breaker Kick
Breaker Snare
TR-707 Kick
TR-808 Hiht
TR-808 Snare
TR-707 Snare
TR-707 Hiht
TR-909 Hiht
GB kick - gabber kick
TR-909 Snare
TR-909 house kick
TR-909 acid kick
short VG snare
short VG kick
Midi Note to Sample Value Map (MIDI channel 5)
- MIDINES 1.0 - (future version sample mapping may change)
Chart based on Middle C = C4.
note# note value pitch sample name
127 G9 -2 dnb bass stab
126 F#9 -2 TR-808 clave
125 F9 -2 Breaker Kick
124 E9 -2 Breaker Snare
123 D#9 -2 TR-707 Kick
122 D9 -2 TR-808 Hiht
121 C#9 -2 TR-808 Snare
120 C9 -2 TR-707 Snare
119 B8 -2 TR-707 Hiht
118 A#8 -2 TR-909 Hiht
117 A8 -2 GB kick - gabber kick
116 G#8 -2 TR-909 Snare
115 G8 -2 TR-909 house kick
114 F#8 -2 TR-909 acid kick
113 F8 -2 short VG snare
112 E8 -2 short VG kick
111 D#8 -3 dnb bass stab
110 D8 -3 TR-808 clave
109 C#8 -3 Breaker Kick
108 C8 -3 Breaker Snare
107 B7 -3 TR-707 Kick
106 A#7 -3 TR-808 Hiht
105 A7 -3 TR-808 Snare
104 G#7 -3 TR-707 Snare
103 G7 -3 TR-707 Hiht
102 F#7 -3 TR-909 Hiht
101 F7 -3 GB kick - gabber kick
100 E7 -3 TR-909 Snare
099 D#7 -3 TR-909 house kick
098 D7 -3 TR-909 acid kick
097 C#7 -3 short VG snare
096 C7 -3 short VG kick
095 B6 -4 dnb bass stab
094 A#6 -4 TR-808 clave
093 A6 -4 Breaker Kick
092 G#6 -4 Breaker Snare
091 G6 -4 TR-707 Kick
090 F#6 -4 TR-808 Hiht
089 F6 -4 TR-808 Snare
088 E6 -4 TR-707 Snare
087 D#6 -4 TR-707 Hiht
086 D6 -4 TR-909 Hiht
085 C#6 -4 GB kick - gabber kick
084 C6 -4 TR-909 Snare
083 B5 -4 TR-909 house kick
082 A#5 -4 TR-909 acid kick
081 A5 -4 short VG snare
080 G#5 -4 short VG kick
079 G5 -5 dnb bass stab
078 F#5 -5 TR-808 clave
077 F5 -5 Breaker Kick
076 E5 -5 Breaker Snare
075 D#5 -5 TR-707 Kick
074 D5 -5 TR-808 Hiht
073 C#5 -5 TR-808 Snare
072 C5 -5 TR-707 Snare
071 B4 -5 TR-707 Hiht
070 A#4 -5 TR-909 Hiht
069 A4 -5 GB kick - gabber kick
068 G#4 -5 TR-909 Snare
067 G4 -5 TR-909 house kick
066 F#4 -5 TR-909 acid kick
065 F4 -5 short VG snare
064 E4 -5 short VG kick
063 D#4 -6 dnb bass stab
062 D4 -6 TR-808 clave
061 C#4 -6 Breaker Kick
060 C4 -6 Breaker Snare
059 B3 -6 TR-707 Kick
058 A#3 -6 TR-808 Hiht
057 A3 -6 TR-808 Snare
056 G#3 -6 TR-707 Snare
055 G3 -6 TR-707 Hiht
054 F#3 -6 TR-909 Hiht
053 F3 -6 GB kick - gabber kick
052 E3 -6 TR-909 Snare
051 D#3 -6 TR-909 house kick
050 D3 -6 TR-909 acid kick
049 C#3 -6 short VG snare
048 C3 -6 short VG kick
047 B -7 dnb bass stab
046 A#2 -7 TR-808 clave
045 A2 -7 Breaker Kick
044 G#2 -7 Breaker Snare
043 G2 -7 TR-707 Kick
042 F#2 -7 TR-808 Hiht
041 F2 -7 TR-808 Snare
040 E2 -7 TR-707 Snare
039 D#2 -7 TR-707 Hiht
038 D2 -7 TR-909 Hiht
037 C#2 -7 GB kick - gabber kick
036 C2 -7 TR-909 Snare
035 B1 -7 TR-909 house kick
034 A#1 -7 TR-909 acid kick
033 A1 -7 short VG snare
032 G#1 -7 short VG kick
031 G1 0(full) dnb bass stab
030 F#1 0(full) TR-808 clave
029 F1 0(full) Breaker Kick
028 E1 0(full) Breaker Snare
027 D#1 0(full) TR-707 Kick
026 D1 0(full) TR-808 Hiht
025 C#1 0(full) TR-808 Snare
024 C1 0(full) TR-707 Snare
023 B0 0(full) TR-707 Hiht
022 A#0 0(full) TR-909 Hiht
021 A0 0(full) GB kick - gabber kick
020 G#0 0(full) TR-909 Snare
019 G0 0(full) TR-909 house kick
018 F#0 0(full) TR-909 acid kick
017 F0 0(full) short VG snare
016 E0 0(full) short VG kick
015 D#0 -1 dnb bass stab
014 D0 -1 TR-808 clave
013 C#0 -1 Breaker Kick
012 C0 -1 Breaker Snare
011 B-1 -1 TR-707 Kick
010 A#-1 -1 TR-808 Hiht
009 A-1 -1 TR-808 Snare
008 G#-1 -1 TR-707 Snare
007 G-1 -1 TR-707 Hiht
006 F#-1 -1 TR-909 Hiht
005 F-1 -1 GB kick - gabber kick
004 E-1 -1 TR-909 Snare
003 D#-1 -1 TR-909 house kick
002 D-1 -1 TR-909 acid kick
001 C#-1 -1 short VG snare
000 C-1 -1 short VG kick
SOUND TECHNIQUES------------------------------------------------
DELAY
Create a simple melody or arpeggio with the pulse channel #1 (MIDI ch1). Then copy this sequence and paste into pulse channel #2, (MIDI ch2). Next offset the notes by an 8th note - 16th note or triplet depending on the type of delay your after and shorten or cut the remaining overhanging notes off the end of the sequence. Select all the notes on pulse channel 2 (MIDI ch2) and reduce the velocity by 10-25%.
CHORUS
A chorus sound can be achieved by playing pulse channels 1 & 2 on the same note, then using MIDI CC8 to offset one of the pulse channels pitch by a small amount. Altering the duty cycles of the pulse channels in conjunction with a slight pitch offset provides unique chorusing sounds.
FULL FREQUENCY SAMPLE SOUNDS
The sample channel, while excellent for bass type sounds, has a hard time with frequencies above 8Khz or so. In order to make up for this drop in the high frequency domain, using short synchronously timed bursts of noise over the samples can together generate a full frequency sample sound. Try turning MIDI CC9 to 26 to setting the noise length, and set CC10,11 off - 0. This envelope works in a way where the greater the velocity is the longer the decay, the shorter the velocity the shorter the decay. This way it is easy to set up a high frequency layer to complement the samples.
- MIDI CHART------------------------------------------------
Channel 1 - Pulse 01
OFF = less than 64 (0x40)
ON = greater than or equal to 64 (0x40)
Mod wheel / CC1 = Duty Cycle
CC7 = Master Volume (value now overrides note velocity)
CC8 = Fine pitch mod (same as Fine pitch midi parameter)
CC9 = pulse channel length envelope
CC10 = Toggle OFF/ON pulse channel loop envelope
CC11 = Toggle OFF/ON volume Envelope disable
CC12 = Toggle OFF/ON Modulate pulse channel
CC13 = Toggle OFF/ON Enable Sweep
CC14 = Sweep Down / Up
CC15 = Sweep Period
CC16 = Sweep Shift
Channel 2 - Pulse 02
OFF = less than 64 (0x40)
ON = greater than or equal to 64 (0x40)
Mod wheel / CC1 = Duty Cycle
CC7 = Master Volume (value now overrides note velocity)
CC8 = Fine pitch mod (same as Fine pitch midi parameter)
CC9 = Toggle OFF/ON pulse channel length envelope
CC10 = Toggle OFF/ON pulse channel loop envelope
CC11 = Toggle OFF/ON volume Envelope disable
CC12 = Toggle OFF/ON Modulate pulse channel
CC13 = Toggle OFF/ON Enable Sweep
CC14 = Sweep Down / Up
CC15 = Sweep Period
CC16 = Sweep Shift
Channel 3 - Triangle
CC8 = Fine pitch mod
Channel 4 - Noise
OFF = less than 64 (0x40)
ON = greater than or equal to 64 (0x40)
CC7 = Master Volume (value now overrides note velocity)
CC9 = channel length envelope
CC10 = Toggle OFF/ON noise channel loop envelope
CC11 = Toggle OFF/ON volume Envelope disable
Channel 5 - Sample Channel
Share with your friends: |