dudejoe870 / godot-openmpt Goto Github PK
View Code? Open in Web Editor NEWA binding for libopenmpt (a sophisticated mod-tracker player library) for Godot 4.2. Can play .xm .s3m .it .umx and many other formats!
License: MIT License
A binding for libopenmpt (a sophisticated mod-tracker player library) for Godot 4.2. Can play .xm .s3m .it .umx and many other formats!
License: MIT License
I don't think a generic "get/set ctl" API makes sense, since a lot of keys are already available through a nicer API. But some keys could be helpful to expose with a wrapper API, such as:
I propose the load.*
CTLs to be available as import options and corresponding properties on the stream class.
seek.*
would make sense to be part of the playback, and it seems like each playback gets its own mpt_module
(thus its own ctls). But maybe it could also be set on the stream, so that each playback gets this value assigned automatically?
See https://github.com/Dudejoe870/godot-openmpt/actions/runs/9746722327/job/26960918425?pr=5
Should be a simple fix changing the artifact name to use a placeholder that doesn't use invalid characters.
MPTM files are pretty great and I'm glad you have them working. I've been looking for a solution like this since I love making small music for games in MPTracker and it's ancestors. I hope the Channel control (maybe row/order position control also?) are as trival as you say and I'll enjoy as much dynamic control of tracker files as I can get. Something I had a lot of control over a couple of decades ago with these types of files.
Now, we all know about MPTracker and that it uses this library for playback, but it's also a VST host. I'm not sure if that is a separate functionality to the libopenmpt library off the top of my head but I put together some free VST .dlls in the same folder as the .mptm file and while It works in the tracker it doesn't in the addon. It doesn't crash or error either, so that's good. I'm not too surprised. But if this is at all possible, it would be next level to have control over your own instruments in that way. Still I think having OPL synths working is pretty great, and they do work in .mptm with your addon, so some non-sampler, analog like synth is available and OPL is nice and retro, but it would be great to have a modern system of synth and effects working as well. Great work and keep it up.
The only mod playing addon there is some shitty made from scratch one that doesn't even support Impulse Tracker. Kinda thought I would have to port libopenmpt myself to godot, fortunately found this.
It sure would be nice if the prebuilt version was available on AssetLib.
Using Visual Studio 2022, I use the default debug, build all and it's successful. I make the release config and build all as well, successful. So both build, I have gen folders, but make only .lib files so I have no .dll files to drop into the bin of the root godot-cpp. Am I doing something wrong?
Getting a lot of the warning:
Severity Code Description Project File Line Suppression State Details
Warning D9025 overriding '/W3' with '/W4' D:\dev\godot_extentions\godot libopenmpt\godot-openmpt\godot-cpp\out\build\x64-Debug\godot-cpp D:\dev\godot_extentions\godot libopenmpt\godot-openmpt\godot-cpp\out\build\x64-Debug\cl 1
Getting the following errors:
Severity Code Description Project File Line Suppression State Details
Error C1083 Cannot open include file: 'godot_cpp/classes/audio_stream.hpp': No such file or directory godot-openmpt D:\dev\godot_extentions\godot libopenmpt\godot-openmpt\src\audio_stream_mpt.h 4
Error C1083 Cannot open include file: 'godot_cpp/classes/object.hpp': No such file or directory godot-openmpt D:\dev\godot_extentions\godot libopenmpt\godot-openmpt\src\openmpt_singleton.h 4
Error C1083 Cannot open include file: 'godot_cpp/classes/global_constants.hpp': No such file or directory godot-openmpt D:\dev\godot_extentions\godot libopenmpt\godot-openmpt\godot-cpp\include\godot_cpp\core\property_info.hpp 36
I feel like I'm missing something. Following your instructions, I run cmake on the custom_* directory, it makes the .sln files and the ALL_BUILD there. I build root of the repo, the directory containing the custom directory in VS 2022. I get these errors where it cannot find these header files.
I also tried specifically cmake -S .\custom-godotcpp-build -B .\custom-godotcpp-build -DGENERATE_DEBUG_SYMBOLS=OFF just to be sure as well as simply "cmake .."I tried using cmake in the root of the repo as well and it makes ALL_BUILD and other's but on building I get the same errors. I've tried building in VS in the custom_* directory as well, both of the last two steps are not in your instructions, but I had to try whatever I could.
Edit: I was thinking the custom-godotcpp build was working the original godot-cpp directory. I guess it does not. I'll have to try again after that make finishes.
They exist in both AudioStreamMPT
and AudioStreamPlaybackMPT
.
It should likely be removed from the latter class, since you do not need a playback to select / get selected subsong.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.