Fw: Soundfont Release samples

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Fw: Soundfont Release samples

jbeach2646
Paul, several years ago, one of the guys on the jOrgan forum produced a General Midi disposition which used all the 128 preset instruments of the General Midi soundbank.
You might want to post a request for a link to the download of that particular disposition.  It would save you all the work of creating one yourself.
 
John Beach
 
Sent: Monday, November 13, 2017 7:01 PM
Subject: Re: [jOrgan-user] Soundfont Release samples
 
Perhaps there is hope yet for my desire.
 
I need several G-MIDI soundfonts translated to SF2 or something suitable to play on MidiTzer or jOrgan. Bruse Milesand I had come up with something awhile back, but he took the secret of how we did it.
 
I play G-MIDI files from my Roland SoundCanvas from a dedicated 4th MIDI keyboard, but lost our files when I stepped away from Organ several years. Today I cannot figure how to play G-Midi sounds of orchestral instruments (especially brass for enchamade and violin / viola / oboe and some of the other orchestral instruments as solos or obbliagatoes  accompanied by organ.
 
HELP!
 
pk
StentorVox.com
 
 
On Wednesday, November 1, 2017, 8:03:45 PM PDT, John Beach <[hidden email]> wrote:
 
 
As you all know, I make my own dispositions and generate my own sounds.  So, I record everything from start to finish with Audacity.   I use four second samples for the auto-looped, steady state of the instrument.  I take the recorded release tail with 4 to 6 complete cycles of the full-volume end just because key-release, leaving about 1/16th inch of space at the beginning of the release sample.  The tails are, generally, one to two seconds in length.  On importing into Polyphone, I reduce the sample volume to 10% (Tools>Sample>Volume Change), set the root key (84)  and cents (0) and in the loop counter I leave “start” empty and set the “end to” 10.  In the instrument pool,  I create a Release instrument with the release sample and I set the Loop Playback to the loop icon with the red tail to the right side.   I set the Global attack at .001  and I set the Global Release at .8.   I bind the release instrument to the Instrument of the same name (Flute, Diapason, etc.) and I set the release for the footage of the stop as per  Paul Stratman’s diagram for release settings.  
 
A release sample has the sound of a “plucked string” in the Instrument pool when the key is released.  You don’t want this “pluck” to be noticeable in the Preset Pool when the preset is played.
That is why the setting of 10% Volume Change in the Sample Pool.  You will hear the “pluck” in the Instrument Pool, but you will not hear it in the Preset.  The release is more noticeable with reverb when played in Polyphone in the Preset.  However, in normal playing of the organ, it is not something that is, particularly, noticeable, due to the normal flow of music.  I am pleased with it, but I really wanted to see if Fluidsynth can handle it and it has no trouble. 
 
John Beach
 
As far as the Soundfont Import file goes, here is the file content.
 
/*
* jOrgan - Java Virtual Organ
* Copyright (C) 2003 Sven Meier
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
package jorgan.soundfont.gui.imports;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
 
import javax.swing.JComponent;
 
import jorgan.disposition.Element;
import jorgan.disposition.Rank;
import jorgan.disposition.Stop;
import jorgan.importer.gui.Import;
import jorgan.riff.RiffChunk;
import jorgan.riff.RiffFormatException;
import jorgan.soundfont.Preset;
import jorgan.soundfont.SoundfontReader;
import jorgan.swing.wizard.AbstractPage;
import jorgan.swing.wizard.Page;
import bias.Configuration;
import bias.swing.MessageBox;
 
/**
* An {@link Import} from a SoundFont.
*/
public class SoundFontImport implements Import {
 
    static Configuration config = Configuration.getRoot().get(
            SoundFontImport.class);
 
    private OptionsPanel panel = new OptionsPanel();
 
    private String name;
 
    private String description;
 
    private List<Element> elements;
 
    public SoundFontImport() {
        config.read(this);
    }
 
    @Override
    public List<Page> getPages() {
        return Collections.<Page> singletonList(new OptionsPage());
    }
 
    @Override
    public String getName() {
        return name;
    }
 
    @Override
    public String getDescription() {
        return description;
    }
 
    public void setDescription(String description) {
        this.description = description;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public List<Element> getElements() {
        return elements;
    }
 
    private void showMessage(String key, Object... args) {
        MessageBox box = SoundFontImport.config.get(key).read(
                new MessageBox(MessageBox.OPTIONS_OK));
        box.show(panel, args);
    }
 
    /**
     * Read ranks from the given soundfont file.
     *
     * @param file
     *            file to read from
     * @return list of ranks
     * @throws IOException
     * @throws RiffFormatException
     */
    private Set<Rank> readRanks(File file, int bank) throws IOException,
            RiffFormatException {
 
        Set<Rank> ranks = new HashSet<Rank>();
 
        InputStream input = null;
        try {
            input = new FileInputStream(file);
 
            RiffChunk riffChunk = new SoundfontReader(input).read();
 
            List<Preset> presets = SoundfontReader.getPresets(riffChunk);
            Collections.sort(presets);
            for (int p = 0; p < presets.size(); p++) {
                Preset preset = presets.get(p);
                if (preset.getBank() != bank) continue;
                Rank rank = new Rank();
                rank.setName(preset.getName());
                rank.setProgram(preset.getProgram());
                rank.setBank(bank);
                if (!this.panel.getTouchSensitive()) {
                    rank.setVelocity(100);
                }
                ranks.add(rank);
            }
        } finally {
            if (input != null) {
                input.close();
            }
        }
 
        return ranks;
    }
 
    private class OptionsPage extends AbstractPage {
 
        @Override
        public String getDescription() {
            return SoundFontImport.this.getDescription();
        }
 
        @Override
        protected JComponent getComponentImpl() {
            return panel;
        }
 
        @Override
        public boolean allowsNext() {
            File file = panel.getSelectedFile();
 
            return file != null && file.exists() && file.isFile();
        }
 
        @Override
        public boolean leavingToPrevious() {
            elements = null;
 
            return true;
        }
 
        @Override
        public boolean leavingToNext() {
 
            File file = panel.getSelectedFile();
            try {
                List<Element> elements = new ArrayList<Element>();
 
                Set<Rank> ranks = readRanks(file, panel.getBank());
                elements.addAll(ranks);
 
                if (panel.getCreateStops()) {
                    for (Rank rank : ranks) {
                        Stop stop = new Stop();
                        stop.setName(rank.getName());
                        stop.reference(rank);
                        elements.add(stop);
                    }
                }
 
                SoundFontImport.this.elements = elements;
            } catch (RiffFormatException ex) {
                showMessage("exception/invalid", file.getPath());
                return false;
            } catch (IOException ex) {
                showMessage("exception/general", file.getPath());
                return false;
            }
 
            return true;
        }
    }
}
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
jOrgan-user mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/jorgan-user


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot


_______________________________________________
jOrgan-user mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/jorgan-user

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
jOrgan-user mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/jorgan-user