Git Product home page Git Product logo

nscumm.audio's People

Contributors

benmclean avatar scemino avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

nscumm.audio's Issues

Integretion nScumm.Audio with nSCUMM

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?

Add id Software ADL format to NScumm.Audio.Players

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.

Version 0.1 Alpha: test report

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).

  • DRO file captured using DOSBox 0.74-3:

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

files.zip

NScumm.Audio.Players should support stopping audio

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.

DRO file can't be played

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.

test.zip

Render audio without relying on system clock

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?

NScumm.Audio.Players should accept byte streams, not files

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.

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.