Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions AutoMidiPlayer.Data/Properties/Settings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions AutoMidiPlayer.Data/Properties/Settings.settings
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,9 @@
<Setting Name="RobloxLocation" Type="System.String" Scope="User">
<Value Profile="(Default)">RobloxPlayerBeta.exe</Value>
</Setting>
<Setting Name="NTELocation" Type="System.String" Scope="User">
<Value Profile="(Default)">HTGame.exe</Value>
</Setting>
<Setting Name="ActiveGenshin" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
Expand All @@ -104,6 +107,9 @@
<Setting Name="ActiveSky" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="ActiveNTE" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="SelectedInstrument" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
Expand Down
2 changes: 1 addition & 1 deletion AutoMidiPlayer.WPF/AutoMidiPlayer.WPF.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<UseWPF>true</UseWPF>
<StartupObject>AutoMidiPlayer.WPF.App</StartupObject>
<ApplicationManifest>app.manifest</ApplicationManifest>
<Version>6.24.6</Version>
<Version>6.25.0</Version>
<ApplicationIcon>Resources\logo.ico</ApplicationIcon>
<Nullable>enable</Nullable>
<RepositoryUrl>https://github.com/Jed556/AutoMidiPlayer</RepositoryUrl>
Expand Down
20 changes: 20 additions & 0 deletions AutoMidiPlayer.WPF/Core/Games/GameRegistry.cs
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,26 @@ public static class GameRegistry
setLocation: v => Settings.Modify(s => s.SkyLocation = v),
getIsActive: () => Settings.ActiveSky,
setIsActive: v => Settings.Modify(s => s.ActiveSky = v)
),
new GameDefinition(
id: "NTE",
displayName: "NTE (Neverness to Everness)",
instrumentGameName: "NTE",
imageResourcePath: "pack://application:,,,/Resources/NTE.png",
processNames: ["HTGame"],
defaultExeName: "HTGame.exe",
defaultSearchPaths:
[
@"C:\Program Files\Neverness To Everness\Client\WindowsNoEditor\HT\Binaries\Win64\HTGame.exe",
@"D:\Neverness To Everness\Client\WindowsNoEditor\HT\Binaries\Win64\HTGame.exe",
@"E:\Neverness To Everness\Client\WindowsNoEditor\HT\Binaries\Win64\HTGame.exe",
@"F:\Neverness To Everness\Client\WindowsNoEditor\HT\Binaries\Win64\HTGame.exe",
@"G:\Neverness To Everness\Client\WindowsNoEditor\HT\Binaries\Win64\HTGame.exe",
],
getLocation: () => Settings.NTELocation,
setLocation: v => Settings.Modify(s => s.NTELocation = v),
getIsActive: () => Settings.ActiveNTE,
setIsActive: v => Settings.Modify(s => s.ActiveNTE = v)
)
];

Expand Down
17 changes: 17 additions & 0 deletions AutoMidiPlayer.WPF/Core/Games/NTE/Instruments/Piano.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System.Collections.Generic;

namespace AutoMidiPlayer.WPF.Core.Instruments;

public static partial class NTEInstruments
{
public static readonly InstrumentConfig Piano21k = new(
game: "NTE",
name: "Piano (21 Key)",
notes: [
60, 62, 64, 65, 67, 69, 71, // C4 D4 E4 F4 G4 A4 B4
48, 50, 52, 53, 55, 57, 59, // C3 D3 E3 F3 G3 A3 B3
36, 38, 40, 41, 43, 45, 47, // C2 D2 E2 F2 G2 A2 B2
],
keyboardLayouts: [NTEKeyboardLayouts.QWERTY_21Keys]
);
}
15 changes: 15 additions & 0 deletions AutoMidiPlayer.WPF/Core/Games/NTE/KeyboardLayout.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
namespace AutoMidiPlayer.WPF.Core.Instruments;

/// <summary>
/// NTE keyboard layouts.
/// </summary>
internal static class NTEKeyboardLayouts
{
public static readonly KeyboardLayoutConfig QWERTY_21Keys = new(
name: "QWERTY",
keys: [
'q', 'w', 'e', 'r', 't', 'y', 'u',
'a', 's', 'd', 'f', 'g', 'h', 'j',
'z', 'x', 'c', 'v', 'b', 'n', 'm',
]);
}
Binary file added AutoMidiPlayer.WPF/Resources/NTE.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ https://github.com/user-attachments/assets/8e7d8dec-33c4-4d2b-a268-4abd1dbac405
- **Heartopia** - Piano (All variations), 15-key instruments (e.g. lyre, wooden bass, violin, etc.)
- **Roblox** - Piano (61-key)
- **Sky: Children of the Light** - All available Sky instruments as of Feb 2026
- **NTE (Neverness to Everness)** - Piano (21-Key)

See the [Support wiki page][wiki-support] for details on supported games, instruments, and keyboard layouts.

Expand Down Expand Up @@ -86,6 +87,7 @@ The short answer is that it's uncertain. Use it at your own risk. Do not play so
* For Heartopia, here is their [Official Discord message](https://discord.com/channels/1128257488375005215/1460985755529773301/1465702188700405986) about using 3rd party tools.
* For Sky, see their policy on [third-party apps](https://thatgamecompany.helpshift.com/hc/en/17-sky-children-of-the-light/faq/1250-can-i-use-or-create-third-party-applications-like-mods-or-bots/).
* For Roblox, refer to their [third-party services Terms of Use](https://en.help.roblox.com/hc/en-us/articles/115004647846-Roblox-Terms-of-Use#third-party-services).
* For NTE, see their [Data collected to prevent cheating and unauthorized software](https://static.pwsdk.com/nte/privacy/privacy.html).


## Documentation
Expand Down Expand Up @@ -134,7 +136,7 @@ This project is inspired by and built on top of **[sabihoshi/GenshinLyreMidiPlay
# License
* This project is under the [MIT](LICENSE.md) license.
* Originally created by [sabihoshi][GenshinLyreMidiPlayer]. Modified by [Jed556](https://github.com/Jed556) for multi-game support and modernization.
* All rights reserved by © miHoYo Co., Ltd., © XD Inc., © thatgamecompany, Inc., and © Roblox Corporation. This project is not affiliated nor endorsed by miHoYo, XD, thatgamecompany, or Roblox. Genshin Impact™, Heartopia™, Sky: Children of the Light™, Roblox™, and other properties belong to their respective owners.
* All rights reserved by © miHoYo Co., Ltd., © XD Inc., © thatgamecompany, Inc., © Roblox Corporation, and © Hotta Studio, a Perfect World company. This project is not affiliated nor endorsed by miHoYo, XD, thatgamecompany, Roblox, or Hotta Studio. Genshin Impact™, Heartopia™, Sky: Children of the Light™, Roblox™, NTE (Neverness to Everness)™, and other properties belong to their respective owners.
* This project uses third-party libraries or other resources that may be distributed under [different licenses](THIRD-PARTY-NOTICES.md).

<br/>
Expand Down