Giter VIP home page Giter VIP logo

Comments (5)

schellingb avatar schellingb commented on May 30, 2024 1

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.

Danielku15 avatar Danielku15 commented on May 30, 2024

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.

Danielku15 avatar Danielku15 commented on May 30, 2024

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.

schellingb avatar schellingb commented on May 30, 2024

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.

Danielku15 avatar Danielku15 commented on May 30, 2024

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)

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.