Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

emergency sound bank generator #121

Open
kotc opened this issue Jan 29, 2015 · 18 comments
Open

emergency sound bank generator #121

kotc opened this issue Jan 29, 2015 · 18 comments

Comments

@kotc
Copy link

kotc commented Jan 29, 2015

https://java.net/projects/gervill/sources/svn/content/trunk/src/com/sun/media/sound/EmergencySoundbank.java
what is it? its a generator for fully synthetic instruments. license is gpl2. could be an interesting alternative to keep distribution size small. its written in java but i think conversion shouldn't be too hard

@psi29a
Copy link
Member

psi29a commented Jan 29, 2015

Good idea! :)

Sadly, we can't use GPL code.

It has to be LGPL or freerer.

@kotc
Copy link
Author

kotc commented Jan 29, 2015

huh, how about adding cmakelists.txt conditional that selects between gpl2/3/lgpl features that get compiled?

@psi29a
Copy link
Member

psi29a commented Jan 29, 2015

We wish to keep the entire codebase LGPL, we'll code it from scratch if we need to.

Don't get me wrong, this is a good idea. I've kinda asked for this but in another related issue.

@psi29a psi29a added this to the 1.0 - Wishlist milestone Feb 5, 2015
@psi29a
Copy link
Member

psi29a commented Feb 26, 2015

I stumbled across this recently:
https://csharpsynthproject.codeplex.com

It contains a soundbanck generator and is MIT licensed... wooo!

@chrisisonwildcode
Copy link
Contributor

This might be a silly question .. How compatible is MIT license to LGPL?

Sent from my iPhone

On 26 Feb 2015, at 7:17 pm, Bret Curtis [email protected] wrote:

I stumbled across this recently:
https://csharpsynthproject.codeplex.com

It contains a soundbanck generator and is MIT licensed... wooo!


Reply to this email directly or view it on GitHub.

@psi29a
Copy link
Member

psi29a commented Feb 26, 2015

MIT/Expat means... use it however you like, we don't care, just give credit where credit is due. So when included into an LGPL, the their code becomes LGPL.

@psi29a
Copy link
Member

psi29a commented Jan 13, 2016

Looks like this will be the next project as Lucius of XLEngine (https://github.com/luciusDXL/XL-Engine) has asked for this.

@psi29a
Copy link
Member

psi29a commented Jan 13, 2016

Something else: https://github.com/rheit/zdoom/tree/master/src/oplsynth

Most of the code there is LGPL. They also use wildmidi... so fair is fair. ;)

@chrisisonwildcode
Copy link
Contributor

I'll look at that when I get the chance. I was thinking of asking is anyone is able to track down opl3 settings for the different midi instruments, including the waveform settings.

@chrisisonwildcode
Copy link
Contributor

unfortunately in zoom the opl code we actually need is not LGPL, instead its some non-commercial use license.

Latest name source has the code GPL'd ...

@psi29a
Copy link
Member

psi29a commented Apr 24, 2016

Parts are LGPL and some are GPL, look closely at the files and their headers.

nukedopl3.cpp and nukedopl3.h for example are LGPL, as is OPL3.cpp... they have like 3 different implementations.

@chrisisonwildcode
Copy link
Contributor

I had a good look at the files to determine what we need, the main bit we need is in a file that gpl within the meme project.

Sent from my iPhone

On 25 Apr 2016, at 2:01 AM, Bret Curtis [email protected] wrote:

Parts are LGPL and some are GPL, look closely at the files and their headers.


You are receiving this because you commented.
Reply to this email directly or view it on GitHub

@chrisisonwildcode
Copy link
Contributor

Sorry. Didn't notice auto correct being a pain. Mame project. The file that emulates the opl chip itself is gpl.

Sent from my iPhone

On 25 Apr 2016, at 2:01 AM, Bret Curtis [email protected] wrote:

Parts are LGPL and some are GPL, look closely at the files and their headers.


You are receiving this because you commented.
Reply to this email directly or view it on GitHub

@loki666
Copy link
Contributor

loki666 commented Aug 17, 2016

chocolate doom has the latest version of NukedOPL3
https://github.com/chocolate-doom/chocolate-doom/blob/master/opl/opl3.c
it's GPL licensed, but the author is ok to switch it to LGPL.

yet, there is still the issue to "translate" midi into OPL3 programming, and to find a good GM patch set for OPL3

@loki666
Copy link
Contributor

loki666 commented Aug 17, 2016

Also, if anyone can make use of this, there is a small bank embedded in Sonivox EAS synth.
https://github.com/murkymark/eas-midi/blob/master/lib_src/wt_44khz.c

@psi29a
Copy link
Member

psi29a commented Aug 18, 2016

The last one is Apache 2.0, just fyi.

@peteroupc
Copy link

peteroupc commented Sep 16, 2023

Apparently, the technique used to generate many of the synthetic instruments in EmergencySoundbank is to render the instrument's tone in the frequency domain and convert the samples using an inverse Fourier transform. Alternatively, instrument samples can be generated by somehow mixing the public-domain single-cycle wave forms found in the AdventureKid Wave Form Collection.

A related request of mine for public-domain software synthesis and instrument banks.

@peteroupc
Copy link

Here is what I found out about how EmergencySoundbank works.

Most of the instruments in EmergencySoundbank are generated by:

  • rendering a weighted sum of Gaussian curves in the frequency domain,
  • sampling this weighted sum at 44100 Hz,
  • rotating each sample in the complex plane by a random angle,
  • doing an inverse Fourier transform, and
  • taking the real part of the result,

among other things (such as setting the volume and modulation envelopes as well as fading in the beginning of the sound and setting loop points).

A few EmergencySoundbank instruments (generally drum patches) are generated a little differently, namely as a bass part and as a treble part.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants