Comments (5)
Hi there
Thanks for reaching out!
Personally I have no problem whatsoever with your plan. TSF is licensed MIT because it is based on SFZero by Steve Folta (https://github.com/stevefolta/SFZero). If it were all my code it would have an even looser license :-)
So the thing with MIT is it needs attribution in all "portions of the software" which means not only in the source code but also in some form in binary and web deployed variants. In a binary distribution this usually is an about screen or a readme file. On the web no one seems to care (they should) but it seems to be common to hide it somewhere in a (often unreadable minified) .js file which is kinda against the spirit I feel.
You already have given more thought about it than most people integrating open source so I'm sure whatever form of attribution you choose is fine.
It would be cool if the changes you made directly to the library would be under MIT so someone could put backport them and have a library with SF3 support but if it's in an entire different language it maybe doesn't make much sense.
Or maybe if you come up with (for instance) fixes to the synth quality that could directly be applied to TSF you could paste a link to the commit and give me permission to port it back under MIT.
Looking forward to seeing your integration, alphaTab looks interesting.
from tinysoundfont.
Thanks for the info. The attribution would be explicitely in the source files that are based on this project + in the source header of the final javascript. The .net redistribution happens via the NuGet package manager which again refers to the original license description. Of course, people who finally will use my library, are responsible again to ensure a correct attribution of my library which then must include the correct copyright notice which will again include all attributions. But as you say: Correct attribution rarely happens in the market especially in the web with all minimizers.
I will try to keep you informed on bigger changes I make and could be ported back to the C-version of the source. Especially things related to the actual audio generation (missing handling of modulator, generators or zone handling) should be easily portable as the core of the audiogeneration will stay.
For SF3 support you basically need to decode Ogg Vorbis files. The sample headers have then a special flag set and you need to decode a certain buffer range of the original sample buffer and adapt some start/end loopstart/loopend values. The most tricky thing I am doing, is to decode only the samples of the presets that are used in the midi file.
from tinysoundfont.
Hello again.
It's been quite a while since I requested for permission on using TSF in AlphaTab. After I did tons of investigations during the last months on various synthesis engines I finally integrated TSF into AlphaTab.
The related PR on my side is CoderLine/alphaTab#261
I tried to attribute your project (and SFZero) as good as possible and reasonable.
- The source files that were ported from TSF contain a dedicated file header annotating the original copyright.
- The compile JavaScript file also contains a dedicated attribution.
- On the project readme I added an own point to the "Thanks to" section.
I yesterday changed my project license to MPL-2.0 which is less restrictive and better compatible with MIT too.
I would like to get your final confirmation if the .net port of the library is okay for you like that.
I did not make any bigger extensions or modifications to the library beside:
- Adding a feature where I can mute/solo individual channels.
- Set a separate use selected mix-volume per channel
My investigations the last months have shown that the biggest missing part to get the TSF synthesized audio sound correctly are the modulators. I am still learning how the modulators actually are modifying the raw samples before mixing and how to get this into the TSF port. This will become the first biggest extension to TSF on my side. I will try to port back my changes to your library if I am successful.
from tinysoundfont.
Hey there again!
Congratulations on finishing it and getting it working in C#!
Thank you for the attribution and again for the thoughts put into it. I'm perfectly okay with it. Maybe some day @stevefolta will find this topic and can give feedback as well :-)
Modulators are certainly the biggest missing feature for full SoundFont 2.01 compatibility. The few times I pondered implementation it seemed to me that it would need more code than TinySoundFont itself to support it and achieving good compatibility with the specs seems rather difficult as well. Meanwhile I haven't seen many soundfonts use them at all. Maybe it's more common for very high quality fonts?
But if you have a sweet implementation, I'd gladly consider adding it to TSF.
Personally I'm more interested in a good and small chorus and reverb filter that would fit in nicely with TSF.
from tinysoundfont.
Thanks for the fast feedback. I will try to ping Steve too, but he seems not to be very active on GitHub anymore and his website is also not updated at all. I doubt he will call back.
I mostly noticed the missing modulators on high quality SoundFonts but also on some smaller ones they were used to make slight adjustments to volumes. The lack of modulators made some instruments sometimes too loud compared to the expected playback. Especially also considering there is quite a set of default modulators that should be applied. I will try to keep you updated on that topic. But firstly I want to get my next library release finalized before I start new topics like this
from tinysoundfont.
Related Issues (20)
- Line 59 of tsf.h HOT 1
- "conversion may change the value [-Werror=conversion]" compilation errors on MCST lcc compiler HOT 2
- Volume curve HOT 2
- this library wrote 3300 seconds of PCM audio in 4.9 seconds. (nice work) HOT 1
- Is it possible to use this library with SDL_mixer?
- How I can stop a note by fading the volume? HOT 2
- How many channels does this support? HOT 2
- white noise unexpected sound when playing the files HOT 2
- Stuck instrument with Windows XP onestop.mid HOT 1
- Incompatibility with ISO C++ HOT 2
- `TSF_MALLOC(...)` without non-NULL check/error handling HOT 3
- Design issue: having playback handling and soundfont in same structure incentivizes people to write memory hogs(?) HOT 3
- `tsf_set_max_voices()` should actually be enforced HOT 2
- Unicode open HOT 1
- Would be possible to sustain a note? HOT 2
- Is .sfz support something devs consider also thank you for the library HOT 6
- voices active for slightly longer than they should be
- Reading samples directly at runtime (port to STM32) HOT 1
- MIDI latency HOT 1
- Likely memory leak in use of TSF_REALLOC in new sf3 code in out of memory conditions HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tinysoundfont.