Giter Site home page Giter Site logo

dudejoe870 / godot-openmpt Goto Github PK

View Code? Open in Web Editor NEW
18.0 3.0 5.0 81.27 MB

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

CMake 0.13% Makefile 2.01% Batchfile 1.05% Shell 0.57% Python 0.55% C++ 87.00% M4 0.70% JavaScript 0.01% Lua 1.23% C 4.73% PowerShell 0.01% VBScript 0.01% Inno Setup 0.73% FreeBasic 1.16% CSS 0.01% HTML 0.08% GDScript 0.03%
fasttracker fasttracker2 godot godot-addon godot-plugin godot4 godotengine impulsetracker milkytracker mod-tracker

godot-openmpt's People

Contributors

dudejoe870 avatar redmser avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

godot-openmpt's Issues

Add support for some CTL keys

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:

  • load.skip_plugins (boolean): Set to "1" to avoid loading plugins
  • load.skip_subsongs_init (boolean): Set to "1" to avoid pre-initializing sub-songs. Skipping results in faster module loading but slower seeking.
  • seek.sync_samples (boolean): Set to "0" to not sync sample playback when using openmpt_module_set_position_seconds or openmpt_module_set_position_order_row.

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?

VST in MPTM files, effects and instruments

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.

Add this to the AssetLib

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.

Building not making .dlls for first step, only .libs

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		

Errors preventing build.

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.