Skip to content

Note

Introduction to the fundamental component in chart: Note.

Note

Compatibility level for each field is specified individually.

JSON Example

json
{
  "Type": 1,
  "XPosition": 0.0,
  "YOffset": 0.0,
  "StartBeat": 0.0,
  "EndBeat": 1.0,
  "Alpha": 255,
  "SpeedMultiplier": 1.0,
  "Width": 1.0,
  "IsFake": false,
  "VisibleTime": 999999.0000,
  "HitSoundData": null,
  "Above": true,
  "HitSoundPath": null
}

Structural Specifications

Unique IdentifierField NameTypeDescriptionDefault ValueCompatibility LevelAdded Version
1TypeenumType of noteNoteType.Tap01
2XPositionfloatX position relative to the center of the judge line-01
3YOffsetfloatY offset from the center of the judge line021
4StartBeatfloatBeat when the note starts-01
5EndBeatfloatBeat when the note ends. Same as StartBeat if not a Hold note-01
6AlphabyteOpacity of the note25521
7SpeedMultiplierfloatSpeed multiplier of the note1.021
8WidthfloatWidth multiplier of the note121
9IsFakeboolWhether this note is fake (cannot be hit)false11
10VisibleTimefloatVisibility duration of the note, in seconds99999921
11HitSoundDatabyte[]?Custom hit sound data of the notenull31
12AboveboolWhether the note appears above the judge linetrue01
100HitSoundPathstring?Path to custom hit sound file (for compatibility)null31

Behavior Rules

Type

  • The Type field defines the type of the note. Valid values are:
Enum ValueDescriptionNumeric Value
NoteType.TapRegular Tap Note0
NoteType.HoldHold Note1
NoteType.FlickFlick Note2
NoteType.DragDrag Note3

IsFake

  • Determines whether the note is fake and cannot be hit.
  • If a Hold note is fake (IsFake = true), it always appears un-hit. Otherwise, it reduces opacity after a miss.
  • Fake notes disappear immediately at EndBeat, with no hit effect or sound.

HitSoundData

  • Stores binary data of a custom hit sound, usually WAV or OGG format.
  • Can be null, meaning no custom hit sound is used.
  • Notes that are not hit will not play the custom hit sound.
  • Cannot be used together with HitSoundPath.

HitSoundPath

  • Specifies the path to a custom hit sound file, relative to the chart root directory. Example: sound/hit.wav means the file hit.wav inside the sound folder.
  • Can be null, meaning no custom hit sound is used.
  • Notes that are not hit will not play the custom hit sound.
  • Cannot be used together with HitSoundData.

YOffset

  • Defines the Y-axis offset of the note relative to the center of the judge line.
  • Positive values indicate the note is above the line; negative values indicate below.
  • This field can affect the position of hit effects.

Proto Paragraph

protobuf
syntax = "proto3";
package PhiCommonChart.ChartStructs;


message Note {
   NoteType Type = 1;
   float XPosition = 2;
   float YOffset = 3;
   float StartBeat = 4;
   float EndBeat = 5;
   uint32 Alpha = 6;
   float SpeedMultiplier = 7;
   float Width = 8;
   bool IsFake = 9;
   float VisibleTime = 10;
   bytes HitSoundData = 11;
   bool Above = 12;
   string HitSoundPath = 100;
}

enum NoteType {
  Tap = 0;
  Hold = 1;
  Flick = 2;
  Drag = 3;
}