Skip to main content
NESdev Wiki
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Pulse Channel frequency chart

MIDI Tuning Table

Using the MIDI Tuning Standard with A=440 Hz, we can derive the equivalent period timer value for the two Pulse channels. Due to limitations on the 11-bit period’s range, the lowest standard MIDI frequency that can be reproduced with acceptable tuning is A-1 (55 Hz) on NTSC, and G#1 (51.91 Hz) on PAL. Here we show the desired frequency for each MIDI index, the closest period value, and the resulting tuning error (in cents) from the standard.

Note: The Triangle channel can make use of the same 11-bit period values. Due to its longer 32-step sequence, it will sound exactly one octave lower (half of the apparent frequency) compared to the equivalent period on Pulse.

MIDINTSC APU PulsePAL APU Pulse
IndexNoteFrequency11bit PeriodFrequencyTuning11bit PeriodFrequencyTuning
31G-149.00---$7FF50.74+60c
32G#151.91$7FF54.62+88c$7D151.90+0c
33A-155.00$7F155.00+0c$76055.01+0c
34A#158.27$77F58.26+0c$6F658.28+0c
35B-161.74$71361.73+0c$69261.74+0c
36C-265.41$6AD65.42+0c$63465.40+0c
37C#269.30$64D69.31+0c$5DB69.28-1c
38D-273.42$5F373.40+0c$58673.44+0c
39D#277.78$59D77.79+0c$53777.78+0c
40E-282.41$54C82.43+1c$4EC82.41+0c
41F-287.31$50087.32+0c$4A587.32+0c
42F#292.50$4B892.52+0c$46292.53+1c
43G-298.00$47498.04+1c$42398.03+1c
44G#2103.83$434103.86+1c$3E8103.81+0c
45A-2110.00$3F8109.99+0c$3B0109.96-1c
46A#2116.54$3BF116.52+0c$37B116.49-1c
47B-2123.47$389123.47+0c$349123.41-1c
48C-3130.81$356130.83+0c$319130.87+1c
49C#3138.59$326138.61+0c$2ED138.55-1c
50D-3146.83$2F9146.80+0c$2C3146.77-1c
51D#3155.56$2CE155.58+0c$29B155.56+0c
52E-3164.81$2A6164.74-1c$275164.94+1c
53F-3174.61$280174.51-1c$252174.64+0c
54F#3185.00$25C184.89-1c$231184.90-1c
55G-3196.00$23A195.90-1c$211196.06+1c
56G#3207.65$21A207.53-1c$1F3207.83+1c
57A-3220.00$1FB220.20+2c$1D7220.15+1c
58A#3233.08$1DF233.04+0c$1BD232.99-1c
59B-3246.94$1C4246.93+0c$1A4246.82-1c
60C-4261.63$1AB261.36-2c$18C261.75+1c
61C#4277.18$193276.88-2c$176277.10-1c
62D-4293.66$17C293.60+0c$161293.54-1c
63D#4311.13$167310.72-2c$14D311.12+0c
64E-4329.63$152329.97+2c$13A329.88+1c
65F-4349.23$13F349.57+2c$129348.70-3c
66F#4369.99$12D370.40+2c$118369.80-1c
67G-4392.00$11C392.49+2c$108392.12+1c
68G#4415.30$10C415.84+2c$0F9415.65+1c
69A-4440.00$0FD440.40+2c$0EB440.31+1c
70A#4466.16$0EF466.09+0c$0DE465.98-1c
71B-4493.88$0E1494.96+4c$0D1494.82+3c
72C-5523.25$0D5522.71-2c$0C6522.18-4c
73C#5554.37$0C9553.77-2c$0BA555.68+4c
74D-5587.33$0BD588.74+4c$0B0587.08-1c
75D#5622.25$0B3621.45-2c$0A6622.23+0c
76E-5659.26$0A9658.00-3c$09D657.68-4c
77F-5698.46$09F699.13+2c$094697.40-3c
78F#5739.99$096740.80+2c$08B742.24+5c
79G-5783.99$08E782.24-4c$084781.30-6c
80G#5830.61$086828.60-4c$07C831.30+1c
81A-5880.00$07E880.79+2c$075880.62+1c
82A#5932.33$077932.17+0c$06E936.15+7c
83B-5987.77$070989.92+4c$068989.65+3c
84C-61046.50$06A1045.43-2c$0621049.63+5c
85C#61108.73$0641107.53-2c$05D1105.46-5c
86D-61174.66$05E1177.48+4c$0571180.83+9c
87D#61244.51$0591242.90-2c$0521251.96+10c
88E-61318.51$0541316.01-3c$04E1315.35-4c
89F-61396.91$04F1398.26+2c$0491404.23+9c
90F#61479.98$04B1471.85-10c$0451484.47+5c
91G-61567.98$0461575.50+8c$0411574.44+7c
92G#61661.22$0421669.56+9c$03E1649.41-12c
93A-61760.00$03F1747.83-12c$03A1761.24+1c
94A#61864.66$03B1864.35+0c$0371855.59-8c
95B-61975.53$0381962.47-11c$0341960.62-13c
96C-72093.00$0342110.58+14c$0312078.26-12c
97C#72217.46$0312237.22+15c$02E2210.91-5c
98D-72349.32$02F2330.43-14c$02B2361.66+9c
99D#72489.02$02C2485.80-2c$0292474.12-10c
100E-72637.02$0292663.35+17c$0262664.43+18c
101F-72793.83$0272796.52+2c$0242808.46+9c
102F#72959.96$0252943.71-10c$0222968.94+5c
103G-73135.96$0233107.24-16c$0203148.88+7c
104G#73322.44$0213290.02-17c$01E3352.03+15c
105A-73520.00$01F3495.65-12c$01D3463.76-28c
106A#73729.31$01D3728.69+0c$01B3711.18-8c
107B-73951.07$01B3995.03+19c$0193996.65+20c
108C-84186.01$01A4142.99-18c$0184156.52-12c
109C#84434.92$0184474.43+15c$0164517.95+32c
110D-84698.64$0174660.87-14c$0154723.32+9c
111D#84978.03$0155084.58+37c$0144948.24-10c
112E-85274.04$0145326.71+17c$0135195.65-26c
113F-85587.65$0135593.04+2c$0125469.10-37c
114F#85919.91$0125887.41-10c$0115772.94-44c
115G-86271.93$0116214.49-16c$0106112.53-45c
116G#86644.88$0106580.05-17c$00F6494.56-40c
117A-87040.00$00F6991.30-12c$00E6927.53-28c
118A#87458.62$00E7457.39+0c$00D7422.35-8c
119B-87902.13$00D7990.06+19c$00C7993.30+20c
120C-98372.02$00C8604.68+47c$00B8659.41+58c
121C#98869.84$00C8604.68-53c$00B8659.41-42c
122D-99397.27$00B9321.73-14c$00A9446.63+9c
123D#99956.06$00A10169.16+37c$00910391.29+74c
124E-910548.08$00A10169.16-63c$00910391.29-26c
125F-911175.30$00911186.08+2c$00811545.88+56c
126F#911839.82$00812428.98+84c$00811545.88-44c
127G-912543.85$00812428.98-16c---

Code Friendly Tables

Here are the period values from the above table in ca65 syntax, split into low/high byte halves for convenient indexing.

Note: These include every MIDI index from 0-127. This means the first ~32 entries in the table contain nonsense values, as the equivalent periods are larger than the range of the 11-bit timer. Programmers may wish to trim these early entries to save space.

NTSC Periods

ntsc_period_low:
  .byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
  .byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
  .byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
  .byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
  .byte $ff, $f1, $7f, $13, $ad, $4d, $f3, $9d
  .byte $4c, $00, $b8, $74, $34, $f8, $bf, $89
  .byte $56, $26, $f9, $ce, $a6, $80, $5c, $3a
  .byte $1a, $fb, $df, $c4, $ab, $93, $7c, $67
  .byte $52, $3f, $2d, $1c, $0c, $fd, $ef, $e1
  .byte $d5, $c9, $bd, $b3, $a9, $9f, $96, $8e
  .byte $86, $7e, $77, $70, $6a, $64, $5e, $59
  .byte $54, $4f, $4b, $46, $42, $3f, $3b, $38
  .byte $34, $31, $2f, $2c, $29, $27, $25, $23
  .byte $21, $1f, $1d, $1b, $1a, $18, $17, $15
  .byte $14, $13, $12, $11, $10, $0f, $0e, $0d
  .byte $0c, $0c, $0b, $0a, $0a, $09, $08, $08

ntsc_period_high:
  .byte $07, $07, $07, $07, $07, $07, $07, $07
  .byte $07, $07, $07, $07, $07, $07, $07, $07
  .byte $07, $07, $07, $07, $07, $07, $07, $07
  .byte $07, $07, $07, $07, $07, $07, $07, $07
  .byte $07, $07, $07, $07, $06, $06, $05, $05
  .byte $05, $05, $04, $04, $04, $03, $03, $03
  .byte $03, $03, $02, $02, $02, $02, $02, $02
  .byte $02, $01, $01, $01, $01, $01, $01, $01
  .byte $01, $01, $01, $01, $01, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00

PAL Periods

pal_period_low:
  .byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
  .byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
  .byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
  .byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
  .byte $d1, $60, $f6, $92, $34, $db, $86, $37
  .byte $ec, $a5, $62, $23, $e8, $b0, $7b, $49
  .byte $19, $ed, $c3, $9b, $75, $52, $31, $11
  .byte $f3, $d7, $bd, $a4, $8c, $76, $61, $4d
  .byte $3a, $29, $18, $08, $f9, $eb, $de, $d1
  .byte $c6, $ba, $b0, $a6, $9d, $94, $8b, $84
  .byte $7c, $75, $6e, $68, $62, $5d, $57, $52
  .byte $4e, $49, $45, $41, $3e, $3a, $37, $34
  .byte $31, $2e, $2b, $29, $26, $24, $22, $20
  .byte $1e, $1d, $1b, $19, $18, $16, $15, $14
  .byte $13, $12, $11, $10, $0f, $0e, $0d, $0c
  .byte $0b, $0b, $0a, $09, $09, $08, $08, $07

pal_period_high:
  .byte $07, $07, $07, $07, $07, $07, $07, $07
  .byte $07, $07, $07, $07, $07, $07, $07, $07
  .byte $07, $07, $07, $07, $07, $07, $07, $07
  .byte $07, $07, $07, $07, $07, $07, $07, $07
  .byte $07, $07, $06, $06, $06, $05, $05, $05
  .byte $04, $04, $04, $04, $03, $03, $03, $03
  .byte $03, $02, $02, $02, $02, $02, $02, $02
  .byte $01, $01, $01, $01, $01, $01, $01, $01
  .byte $01, $01, $01, $01, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00
  .byte $00, $00, $00, $00, $00, $00, $00, $00

See also

Edit this page on GitHub