Reading wav files in linux using .netcore 3.1 - linux

I am developing an application in .netcore 3.1 which uses naudio to read wav files and checks if wav file has any sound or not. it works fine in windows but doesn't work in linux(centos-7). it throws error
Unable to load shared library 'Msacm32.dll' or one of its dependencies
and then i found nAudio does not work in Linux: https://github.com/naudio/NAudio/issues/472
Can anyone please suggest any solution for this? Maybe any other library which can be used and works for linux.

I did worked around for this by calling a python script from .net core. I used scipy.io.wavfile library to read wav file in pyhton. May be it will help someone.

Related

How do I use 7zip in a .NET Core app running on Linux?

We've got a .NET Core app that was hosted in Azure Service Fabric. Now we are moving it to Linux-based Docker containers.
We need to be able to create 7zip archives for an external service (one of those fancy "drop your files here via ftp" interfaces which requires 7zip archives).
Until now we could use a CLI wrapper ported from .NET Framework to .NET Core. But that does no longer work once we switch to a Linux environment.
We can't change the external service (because it is not ours) and we don't want to use Windows-based Docker containers.
There is a large number of 7zip NuGet packages for .NET Framework. Very few for .NET Core (mostly outdated and no longer maintained). And none I could find for .NET Core on Linux.
Do you have any suggestions on how we could solve that issue?
UPDATE: I found one similar question among the open issues of the SevenZipSharp project. Sadly there is no solution included.
UPDATE 2: Unfortunately we can't use an alternative implementation of the LZMA algorithm. Our 3rd party requires archives in the .7z format :-(
This is not an answer as it doesn't really provide a solution to the question, but it does address why it unlikely there will come an updated 7Zip library for Linux and address the problem with a good LZMA OS-cross-platform compression engine. So it should be seen as a long Comment, I hope it's okay.
It seems 7Zip is not maintained on Linux at all, current library is rather old, and I don't trust it's compatibility with the current and newer Windows 7Zip versions, so in my view 7Zip on Linux is a no-go. It's my understanding that Igor Pavlov (creator and maintainer of Zip) only target Windows. And he's not the creator of the current and old Linux 7Zip library.
A LZMA compression engine with both Linux and Windows support is LZip (.lz).
The latest library (zlib) is 1.11 and in July 2019 I sent a request to Domani Hannes to compile a new Windows version and he was to kind to reply with a download link and the following message:
I just now built plzip-1.8 with lzlib-1.11 and mingw-w64-winpthreads-v6.0.0.
There are no longer modifications necessary to be able to compile for Windows, so it's pretty straightforward.
I guess it mean it's easy to compile newer Windows versions in the future too.
Download link to this binary: plzip_zlib_1.11.exe.
I haven't have time to test it thoroughly yet for my own project, so if anyone go down this path please share your experiences (with a risk of hijacking this thread, so maybe not :-P).

Why does the Windows SDK now include strmbase.lib?

Windows SDK 7.1 was the last version that included the baseclasses direct show sample. But later Windows SDK have strmbase.lib with the compiled library. What use is the library without the headers?
It might be included without good reason waiting for its cleanup time, or there is unobvious reason such as reference to this static library when linking other legacy libraries.
Either way you are correct in the part that DirectShow bases classes are no longer in Windows SDK. Those interested in DirectShow development would typically get DirectShow BaseClasses and samples from Windows-classic-samples/Win7Samples and build the code including strmbase.lib themselves.

play raw PCM wave audio in Win8 (consumer preview)

Is it possible to stream or play raw uncompressed PCM audio data in Windows 8? I don't want to play a file, but rather push my own audio samples (e.g. generate a sine wave). I'm running the Win8 consumer preview. I know that NAudio can do this in Win7 and earlier editions of Windows. I've tried referencing NAudio in a Visual Studio 11 project but NAudio has a dependency on System.Windows.Forms.dll, which does not exist (as far as I can tell) on the Win8 consumer preview. Is there another way to accomplish this in the Win8 preview? I'd prefer a solution using managed code or JavaScript.
You didn't specify language of your chice, so I am going to assume C#. For C# I can think of couple possible options:
SharpDX + XAudio2. This would work for C++ as well without the need for SharpDX
In Silverlight you can use MediaStreamSource - Playing back Wave files in Silverlight. I don't see it in WinRT, but similar alternative might exist.
Write winrt library in C++ utilizing XAudio2. This way you wouldn't need to use SharpDX and you can call it from C# or JavaScript app.

play ogg in Xcode projects

I am developing an application in Xcode that need the ogg and vorbis framework to play ogg files. I have googled for some information about this but i didn't get to any point, i dont know how to make this framework to work. I have already downloaded the libraries and add them into my project but i dont get it to compile even when the files are already there it complains of missing files.
Can anyone point me to a good manual on how to accomplish this ?
Any help appreciated.

How to run C# 4.0 app on Linux OS using mono?

I want to run my c# application with OS Linux using Mono. I am new to this cross platform migration? Please tell the procedure for doing that?
Thanks & Regards.
It very much depends on what type of application it is. For a console or WinForms app, it may be simple. Mono doesn't support WPF.
Well, the first think you'll need to do is install Mono of course. Then you probably want to run MoMA to determine your application's compatibility. There's a whole separate page about porting WinForms apps.
If all is well, you should just be able to run your application using:
mono MyApplication.exe
after copying the binaries over.
If your application is actually a web service or web application, you'll want to think about the various hosting options.
I suspect you'll want to read a lot of the pages on the Mono Start Page.
Check if your application is 100% compatible with Mono Framework using MoMA.
Remove or replace those unimplemented parts with Mono's implementation or third party libraries that works with Mono. Or if you think it should work fine, just execute it with Mono Framework 2.8 or higher. Better go with 2.10 which is default's profile is on 4.0.
There is an IDE, MonoDevelop that supports Web and Desktop applications. Open the project files (monodevelop supports visual studio project files) from monodevelop, compile and run.
you can browse mono website here, where you can find which features are supported and which are not supported and why.

Resources