bisqwit / adlmidi Goto Github PK
View Code? Open in Web Editor NEWADLMIDI is a MIDI player that uses OPL3 emulation.
ADLMIDI is a MIDI player that uses OPL3 emulation.
on archlinux, with an ordinary alsa / pulseaudio configuration, adlmidi plays back audio at a barely audible volume. Running with -w
produces a .wav file with a very low volume as well.
On this line;
https://github.com/bisqwit/adlmidi/blob/master/midiplay.cc#L361
setbuffer(stderr, stderr_buffer, sizeof(stderr_buffer));
(the c form) is used rather than, setvbuf(stderr, stderr_buffer, _IONBF, sizeof(stderr_buffer));
(the c++ form).
I only noticed this because I don't have the C language build tools installed, so compilation failed.
https://github.com/DhrBaksteen/ArduinoOPL2/blob/master/examples/OPL3Duo/SerialPassthrough/SerialPassthrough.ino
https://github.com/DhrBaksteen/ArduinoOPL2/blob/master/examples/OPL2AudioBoard/SerialPassthrough/SerialPassthrough.ino
Currently I use SerialPassthrough.ino of OPL3DUO, compile these codes with arduino and upload them to arduino nano.
After that I use dosbox-x and specify the port number (like com3) and I can use the actual opl3 hardware.
Even when I use the 2op sound bank, there are still notes gobbled up.
While the original ADLMIDI was developed slowly, 4 years ago I have began a fork called libADLMIDI - a library project I have made from off the original sources. The library project was grown into powerful MIDI synthesizer which is now using in various free projects include player plugins and game engines (For example, GZDoom).
The full swap that can be taken as "ADLMIDI 2.0" (libADLMIDI's code overlayed):
https://github.com/Wohlstand/ADLMIDI/tree/library
The "Lazy Way" where old ADLMIDI will be kept same (include million of bugs are was fixed on side of libADLMIDI), but will be "librarized" by the similar way that was done in 2015'th year by me originally
https://github.com/Wohlstand/ADLMIDI/tree/library-2
https://github.com/Wohlstand/libADLMIDI
It's not only an attempt to bootstrap so outdated original, but also make an ability to change the library part license into LGPLv2.1+ (The related discussion is here: #3)
It seems using -w
to produce a .wav file will continue forever. I noticed when the file was at 400MB (36 minutes) and still growing. I suggest disable looping in this mode.
Hello @bisqwit. Are you open to an idea of permitting distribution of ADLMIDI under LGPL or another license more permissive than GPL is?
There has been work on some library projects, by primarly @Wohlstand and myself, reusing the ADLMIDI code. [1] [2]. By virtue of the GPL license, these are derivative works of ADLMIDI, and by transitivity so are all projects touching these libraries by linking other than runtime loading.
Some projects are reluctant to integration of GPL-licensed code (as the latest example, dxx-rebirth).
Considering that our work is outside of the initial scope of ADLMIDI, maybe a change of license would now make some sense that it didn't at the creation of ADLMIDI.
We used to also be bound to GPL by Dosbox before, but that is no longer the case as it can be substituted with a LGPL-licensed NukedOPL3.
For a similar licensing reason as cited, Nuke.YKT has previously accepted to relicense his NukedOPL3 from Chocolate Doom, from GPL to LGPL to permit adoption in some projects.
So I ask kindly if you would be willing to permit such use of ADLMIDI. Thank you.
ADLMIDI: MIDI (etc.) player with OPL3 emulation.............
(C) -- http://iki.fi/bisqwit/source/adlmidi.html............/usr/include/c++/13.2.1/string_view:258: constexpr const std::basic_string_view<_CharT, _Traits>::value_type& std::basic_string_view<_CharT, _Traits>::operator[](size_type) const [with _CharT = char; _Traits = std::char_traits<char>; const_reference = cons
Program received signal SIGABRT, Aborted.
0x00007ffff78b932c in ?? () from /usr/lib/libc.so.6
(gdb) bt
#0 0x00007ffff78b932c in ?? () from /usr/lib/libc.so.6
#1 0x00007ffff78686c8 in raise () from /usr/lib/libc.so.6
#2 0x00007ffff78504b8 in abort () from /usr/lib/libc.so.6
#3 0x00007ffff7bfe3b2 in std::__glibcxx_assert_fail (file=file@entry=0x555555578900 "/usr/include/c++/13.2.1/string_view",
line=line@entry=0x102,
function=function@entry=0x555555578800 "constexpr const std::basic_string_view<_CharT, _Traits>::value_type& std::basic_string_view<_CharT, _Traits>::operator[](size_type) const [with _CharT = char; _Traits = std::char_traits<char>; const_r"...,
condition=condition@entry=0x555555578033 "__pos < this->_M_len") at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/debug.cc:61
#4 0x00005555555596c0 in std::basic_string_view<char, std::char_traits<char> >::operator[] (this=<synthetic pointer>,
__pos=<optimized out>) at /usr/include/c++/13.2.1/string_view:256
#5 std::basic_string_view<char, std::char_traits<char> >::operator[] (__pos=<optimized out>, this=<synthetic pointer>)
at /usr/include/c++/13.2.1/string_view:256
#6 ParseReverb (specs=...) at src/midiplay.cc:2525
#7 0x000055555555885a in main (argc=0x4, argv=0x7fffffffe018) at src/midiplay.cc:3248
(adlmidi compiled as of eded08f )
Seriously, there are no build instructions and no binaries, what the fuck am I supposed to do? Guess how to build it?
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.