SoundFonts | Powerful polyphonic synthesizer for iOS | Audio Utils library

 by   bradhowes Swift Version: 2.29.1 License: MIT

kandi X-RAY | SoundFonts Summary

kandi X-RAY | SoundFonts Summary

SoundFonts is a Swift library typically used in Audio, Audio Utils applications. SoundFonts has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. You can download it from GitHub.

🥳 Check it out on Apple's App Store. This is an iOS (and soon-to-be macOS!) application that acts as a polyphonic synthesizer. It uses anAVAudioUnitSampler instance to generate the sounds for touched keys. The sounds that are available come from sound font files such as those available online for free (and of variable quality). There are four sound font files that are bundled with the application, and more can be added via the iCloud integration. NOTE: AVAudioUnitSampler can and will crash if the SoundFont preset it is using for rendering does not conform to spec. Unfortunately, there is no way to insulate the app from this so it too will crash along with AVAudioUnitSampler. I have also curated a small collection of SoundFont files that I found useful and/or interesting: Sample SoundFonts. If you visit the site from your iOS device and touch one of the links, you can add the fire directly to the SoundFonts application.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              SoundFonts has a low active ecosystem.
              It has 62 star(s) with 8 fork(s). There are 2 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 0 open issues and 6 have been closed. On average issues are closed in 142 days. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of SoundFonts is 2.29.1

            kandi-Quality Quality

              SoundFonts has no bugs reported.

            kandi-Security Security

              SoundFonts has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              SoundFonts is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              SoundFonts releases are available to install and integrate.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of SoundFonts
            Get all kandi verified functions for this library.

            SoundFonts Key Features

            No Key Features are available at this moment for SoundFonts.

            SoundFonts Examples and Code Snippets

            No Code Snippets are available at this moment for SoundFonts.

            Community Discussions

            QUESTION

            Is there a way to use custom soundfonts/soundbanks with winmm?
            Asked 2021-Jan-17 at 18:49

            Is there a way to use custom soundfonts/soundbanks while playing MIDI files with winmm.dll or do I have to use something else to do that? (I'm trying to do it in FASM).

            ...

            ANSWER

            Answered 2021-Jan-17 at 18:49

            The default synthesizer, "Microsoft GS Wavetable SW Synth", uses the file gm.dls, which is a system file and should not be replaced. There is no programmatic way to choose another sound font.

            Source https://stackoverflow.com/questions/65742360

            QUESTION

            Can't play a note with mingus
            Asked 2018-Dec-28 at 10:18

            I've came to use mingus to try to reproduce some notes in python. Based on what was answered here, I've tried with:

            ...

            ANSWER

            Answered 2018-Dec-10 at 18:08

            I'll answer my own question, but the very big part of the debug/solving process is in the question itself done with updates.

            The last part was to get it to sound, when not even waiting with sleep was making it work. Not even doing it before and after the play_note function. May I say that this function always returned True, so the note was expected to sound from the very beginning. The thing is, that the SF2 file (almost 150MB) was loaded successfully, or at least it seemed like it, since it returned True as well and was for sure pretty fast.

            The solution

            Let's continue after reaching the point where no errors were printed when executing my script (just before Update 3 in the Question).

            I wanted to check how much CPU percent usage was doing my script, so I used top on my Linux terminal and found pulseaudio running from several days ago:

            Killing this process allowed it to sound finally. However, I must say that a time.sleep() with about 0.25 seconds was added after the play_Note() function, in order to let it play the note completely.

            Source https://stackoverflow.com/questions/53671762

            QUESTION

            fluidsynth soundfont selection not persisting
            Asked 2018-Nov-14 at 19:34

            Fluidsynth sound font is reverting back to last loaded full font when midifile is played. In my case timidity-freepats.sf2 (sfont 2).

            fluidsynth version 1.1.10

            Here are my steps.

            Contents of config file ./nylon-guitar.fs:

            ...

            ANSWER

            Answered 2018-Nov-14 at 19:34

            Internally, fluidsynth places all soundfonts on a stack. Because palm-muted-guitar.sf2 is the last one loaded, it is top most on the stack. When e.g. a program change event occurs on a channel, fluidsynth looks through the soundfont stack from top to bottom, searching for a soundfont that provides the requested bank/preset combination. palm-muted-guitar.sf2 is the first one to provide a percussion instrument on bank 128, preset 0, thus it is selected.

            That said, your MIDI file probably sends a program or bank change event on channel 9. You may edit the MIDI file and get rid of those events. You may edit palm-muted-guitar.sf2 and remove the drum preset. Or you may setup a midi router that discards all program and bank change events on that midi channel.

            player.reset-synth is irrelevant, as you are not using fluidsynth's midi player to play MIDIs.

            Source https://stackoverflow.com/questions/49471931

            QUESTION

            AKAppleSampler loadSoundFont unrecognized selector
            Asked 2018-May-07 at 19:29

            Trying to resuscitate an older project after the recent AKSampler updates. As per docs it would seem that the original AKSampler functionality would now reside in the new AKAppleSampler. Yet when I am trying any of the methods for loading soundfonts, I get an unfortunate "AudioKit.AKAppleSampler loadMelodicSoundFont:preset:error:]: unrecognized selector sent" before the try clause even catches.

            ...

            ANSWER

            Answered 2018-May-07 at 19:29

            Solved. Seems the project even though syntax highlighting all methods correctly was somehow still referencing an older AudioKit version's framework. After cleaning, emptying DerivedData and installing AK via Cocoapods as opposed to direct framework link the AppleMIDISampler now loads soundfonts as expected.

            Source https://stackoverflow.com/questions/50219900

            QUESTION

            How to send blocks of audio to be processed by synthesizer -- without discontinuities
            Asked 2017-Sep-12 at 10:32

            I am using the Juce framework to build a VST/AU audio plugin. The audio plugin accepts MIDI, and renders that MIDI as audio samples — by sending the MIDI messages to be processed by FluidSynth (a soundfont synthesizer).

            This is almost working. MIDI messages are sent to FluidSynth correctly. Indeed, if the audio plugin tells FluidSynth to render MIDI messages directly to its audio driver — using a sine wave soundfont — we achieve a perfect result:

            But I shouldn't ask FluidSynth to render directly to the audio driver. Because then the VST host won't receive any audio.

            To do this properly: I need to implement a renderer. The VST host will ask me (44100÷512) times per second to render 512 samples of audio.

            I tried rendering blocks of audio samples on-demand, and outputting those to the VST host's audio buffer, but this is the kind of waveform I got:

            Here's the same file, with markers every 512 samples (i.e. every block of audio):

            So, clearly I'm doing something wrong. I am not getting a continuous waveform. Discontinuities are very visible between each blocks of audio that I process.

            Here's the most important part of my code: my implementation of JUCE's SynthesiserVoice.

            ...

            ANSWER

            Answered 2017-Sep-12 at 10:32

            As I wrote the final paragraph, I realised:

            fluid_synth_process() provides no mechanism for specifying timing information or sample offset. Yet we observe that time advances nevertheless (each block is different), so the simplest explanation is: the FluidSynth instance begins at time 0, and advances by numSamples*sampleRate seconds every time fluid_synth_process() is invoked.

            This leads to the revelation: since fluid_synth_process() has side-effects upon the FluidSynth instance's timing: it is dangerous for multiple voices to run this upon the same synth instance.

            I tried reducing const int numVoices = 8; to const int numVoices = 1;. So only one agent would invoke fluid_synth_process() per block.

            This fixed the problem; it produced a perfect waveform, and revealed the source of the discontinuity.

            So, I'm left now with a much easier problem of "what's the best way to synthesize a plurality of voices in FluidSynth". This is a much nicer problem to have. That's outside of the scope of this question, and I'll investigate it separately. Thanks for your time!

            EDIT: fixed the multiple voices. I did this by making SynthesiserVoice::renderNextBlock() a no-op, and moving its fluid_synth_process() into AudioProcessor::processBlock() instead — because it should be invoked once per block (not once per voice per block).

            Source https://stackoverflow.com/questions/46165191

            QUESTION

            Web audio api, stop sound gracefully
            Asked 2017-Jan-08 at 06:24

            The web audio api furnish the method .stop() to stop a sound. I want my sound to decrease in volume before stopping. To do so I used a gain node. However I'm facing weird issues with this where some sounds just don't play and I can't figure out why.

            Here is a dumbed down version of what I do:

            https://jsfiddle.net/01p1t09n/1/

            You'll hear that if you remove the line with setTimeout() that every sound plays. When setTimeout is there not every sound plays. What really confuses me is that I use push and shift accordingly to find the correct source of the sound, however it seems like it's another that stop playing. The only way I can see this happening is if AudioContext.decodeAudioData isn't synchronous. Just try the jsfiddle to have a better understanding and put your headset on obviously.

            Here is the code of the jsfiddle:

            ...

            ANSWER

            Answered 2017-Jan-08 at 06:24

            Aaah, yes, yes, yes! I finally found a lot of things by eventually bothering to read "everything" in the doc (diagonally). And let me tell you this api is a diamond in the rough. Anyway, they actually have what I wanted with Audio param :

            The AudioParam interface represents an audio-related parameter, usually a parameter of an AudioNode (such as GainNode.gain). An AudioParam can be set to a specific value or a change in value, and can be scheduled to happen at a specific time and following a specific pattern.

            It has a function linearRampToValueAtTime()

            And they even have an example with what I asked !

            Source https://stackoverflow.com/questions/41511541

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install SoundFonts

            You can download it from GitHub.

            Support

            If you are interested, there is some developer documentation available.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries

            Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Audio Utils Libraries

            howler.js

            by goldfire

            fingerprintjs

            by fingerprintjs

            Tone.js

            by Tonejs

            AudioKit

            by AudioKit

            sonic-pi

            by sonic-pi-net

            Try Top Libraries by bradhowes

            swift-math-parser

            by bradhowesSwift

            Joystick

            by bradhowesSwift

            sidecar

            by bradhowesC++

            BlockComment

            by bradhowesSwift

            remarkable-katex

            by bradhowesJavaScript