scemino / nscumm.audio Goto Github PK
View Code? Open in Web Editor NEWadlib music player, listen to your old game musics (Monkey Island, Indiana Jones, Wolfenstein, Dune II, etc.)
License: GNU General Public License v3.0
adlib music player, listen to your old game musics (Monkey Island, Indiana Jones, Wolfenstein, Dune II, etc.)
License: GNU General Public License v3.0
Hi
I tested Version 0.1 Alpha on windows 10 using the 2 files attached. The file plays correctly using a player that has AdPlug (audacious and foobar2000).
test.dro: the player does not write anything to the screen and no sound is heard.
test.imf: System.DllNotFoundException while openal is installed and openal32.dll is copied to EXE folder
NScumm.Audio.ALPlayer test.imf
Unhandled exception. System.DllNotFoundException: Unable to load DLL '/System/Library/Frameworks/OpenAL.framework/OpenAL' or one of its dependencies (0x8007007E)
at OpenAL.Alc.OpenDevice(String deviceName)
at NScumm.Audio.AlPlayer.AlPlayer..ctor(IMusicPlayer player, Int32 rate) in /home/runner/work/NScumm.Audio/NScumm.Audio/NScumm.Audio.Player/AlPlayer.cs:line 46
at NScumm.Audio.AlPlayer.Program.Main(String[] args) in /home/runner/work/NScumm.Audio/NScumm.Audio/NScumm.Audio.Player/Program.cs:line 51
Right now, the NScumm.Audio.Players classes are marked internal and sealed. They should all be public instead.
Instead of suspending updates at the end of a song, there should be an option to loop playback indefinitely.
File management should be done completely outside of NScumm.Audio.Players. It should not expect to have access to the file system. Instead of expecting a file, its API should expect a byte stream. It should be up to the user to decide (in their outside code) whether that byte stream comes from a file or a byte array in RAM or a web api or anything else it could be. This becomes particularly important on mobile devices or web apps which may not have permission to use the file system. Loading from a file system path could be provided as an option by a wrapper method to create the stream but should not be required.
I'll be putting together a PR that does this for ImfPlayer at least.
Id Software's ADL format is used for Adlib sound effects in the Commander Keen and Wolfenstein 3-D engine games. It is a completely separate format from IMF and from the Westwood ADL File Format. Instead of entire songs, it is intended for just playing short sound effects. It only uses channel 0, leaving channels 1-7 available for IMF playback.
I wrote a C# container and player for this format in my WOLF3D-Godot project and I may be able to base an NScumm.Audio.Players class on what I wrote there. I'll try to get a PR together for this sometime soon.
I'd like to be able to use this to convert IMF songs to streaming audio using the same or similar method to what IMF2WAV does.
The problem is that the API provided by NScumm.Audio is limited to sending notes to the (emulated) hardware in real time. Source code is included with IMF2WAV and if you look at what its fmopl.h
does, it provides a much bigger API than IOpl.cs
to allow managing time any way the user wants rather than being restricted to real time only. Could NScumm.Audio be changed to provide similar functions?
Hi,
I have a quastion about integretion nScumm.Audio with nSCUMM... It's real to do? I tested nSCUMM on Loom game. The result: no sound ;( How we can fix it?
This looks like a bug to me. due to int division, the resulting double will always be 0.
When trying to play a DRO file captured using latest DOSBox version which plays correctly in Audacious/Foobar2000 (using adplug), I get this message:
This music file is not supported
Attached is a sample DRO file which does not play.
The way the NScumm.Audio.Players API currently works is that songs are assumed to be playing all the time. You can call Load
again to change to another song but there's no option to stop playback. I recommend adding a Stop method to the API.
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.