|
DixShtix | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--com.dixshtix.midi.GeneralMidi
A Set of defaults for MIDI interpretation. Suitable for most devices.
On MIDI sound modules (ie, whose Patches are instrumental sounds), it became desirable to define a standard set of Patches in order to make sound modules more compatible. For example, it was decided that Patch number 0 on all sound modules should be the sound of an Acoustic Grand Piano. In this way, no matter what MIDI sound module you use, when you change to Patch number 1, you always hear some sort of Acoustic Grand Piano sound. A standard was set for 128 Patches which must appear in a specific order, and this standard is called General MIDI (GM). For example, Patch number 24 on a GM module must be a Nylon String Guitar.
The patches are arranged into 16 "families" of instruments, with each family containing 8 instruments. For example, there is a Reed family. Among the 8 instruments within the Reed family, you will find Saxophone, Oboe, and Clarinet.
A GM sound module should be multi-timbral, meaning that it can play MIDI events upon all 16 channels simultaneously, with a different GM Patch sounding for each channel.
Furthermore, all patches must sound an A440 pitch when receiving a MIDI note number of 69.
If the GM module also has a built-in "drum module" (ie, usually one of 16 Parts), then each of that Drum Part's MIDI notes triggers a different drum sound. The assignments of drum sounds to MIDI notes is shown in the chart, GM Drum Sounds. The Drum Part is usually set to receive MIDI data on channel 10 (Hexadecimal 09).
GM Standard makes it easy for musicians to put Program Change messages in their MIDI (sequencer) song files, confident that those messages will select the correct instruments on all GM sound modules, and the song file would therefore play all of the correct instrumentation automatically. Furthermore, musicians need not worry about parts being played back in the wrong octave. Finally, musicians didn't have to worry that a snare drum part, for example, wouldn't be played back on a Cymbal. The GM spec also spells out other minimum requirements that a GM module should meet, such as being able to respond to Pitch and Modulation Wheels, and also be able to play 24 notes simultaneously (with dynamic voice allocation between the 16 Parts). All of these standards help to ensure that MIDI Files play back properly upon setups of various equipment.
The GM standard is actually not encompassed in the MIDI specification, and there's no reason why someone can't set up the Patches in his sound module to be entirely different sounds than the GM set. After all, most MIDI sound modules offer such programmability. But, most have a GM option so that musicians can easily play the many MIDI files that expect a GM module.
Finally, the GM spec spells out a few global settings. For example, the module should respond to velocity (ie, for note messages). This may be hard-wired to control the VCA level (ie, volume) of each note. Some modules may allow velocity to affect other parameters. The pitch wheel bend range should default to +/- 2 semitones. The module also should respond to Channel Pressure (often used to control VCA level or VCO level for vibrato depth) as well as the following MIDI controller messages: Modulation (1) (usually hard-wired to control LFO amount, ie, vibrato), Channel Volume (7), Pan (10), Expression (11), Sustain (64), Reset All Controllers (121), and All Notes Off (123). Channel Volume should default to 90, with all other controllers and effects off (including pitch wheel offset of 0). Additionally, the module should respond to these Registered Parameter Numbers: Pitch Wheel Bend Range (0), Fine Tuning (1), and Coarse Tuning (2). Initial tuning should be standard, A440 reference.
There is a MIDI System Exclusive message that can be used to turn a module's General MIDI mode on or off. See the MIDI specification. This is useful for modules that also offer more expansive, non-GM playback modes or extra, programmable banks of patches beyond the GM set, but need to allow the musician to switch to GM mode when desired.
NOTE: The GM spec doesn't dictate how a module produces sound. For example, one module could use cheap FM synthesis to simulate the Acoustic Grand Piano patch. Another module could use 24 digital audio waveforms of various notes on a piano, mapped out across the MIDI note range, to create that one Piano patch. Obviously, the 2 patches won't sound exactly alike, but at least they will both be piano patches on the 2 modules. So too, GM doesn't dictate VCA envelopes for the various patches, so for example, the Sax patch upon one module may have a longer release time than the same patch upon another module.
Field Summary | |
static java.lang.String[] |
drum_kits
Note names for the General MIDI Standard drum kit. |
static int |
kAahChoir
GM Standard patch value (Ensemble). |
static int |
kAccordion
GM Standard patch value (Organ). |
static int |
kAcousticGrandPiano
GM Standard patch value (Piano). |
static int |
kAcousticNylonGuitar
GM Standard patch value (Guitar). |
static int |
kAcousticSteelGuitar
GM Standard patch value (Guitar). |
static int |
kAcousticStringEnsemble1
GM Standard patch value (Ensemble). |
static int |
kAcousticStringEnsemble2
GM Standard patch value (Ensemble). |
static int |
kAgogo
GM Standard patch value (Percussive). |
static int |
kAltoSax
GM Standard patch value (Reed). |
static int |
kApplause
GM Standard patch value (Sound Effects). |
static int |
kAtmosphere
GM Standard patch value (Synth Effects). |
static int |
kBagpipe
GM Standard patch value (Ethnic). |
static int |
kBanjo
GM Standard patch value (Ethnic). |
static int |
kBaritoneSax
GM Standard patch value (Reed). |
static int |
kBassoon
GM Standard patch value (Reed). |
static int |
kBirdTweet
GM Standard patch value (Sound Effects). |
static int |
kBottleBlow
GM Standard patch value (Pipe). |
static int |
kBrassSection
GM Standard patch value (Brass). |
static int |
kBreathNoise
GM Standard patch value (Sound Effects). |
static int |
kBright
GM Standard patch value (Synth Effects). |
static int |
kBrightAcousticPiano
GM Standard patch value (Piano). |
static int |
kCalliope
GM Standard patch value (Synth Lead). |
static int |
kCelesta
GM Standard patch value (Chromatic Percussion). |
static int |
kCello
GM Standard patch value (Strings). |
static int |
kChiffer
GM Standard patch value (Synth Lead). |
static int |
kChorusedPiano
GM Standard patch value (Piano). |
static int |
kChurchOrgan
GM Standard patch value (Organ). |
static int |
kClarinet
GM Standard patch value (Reed). |
static int |
kClavinet
GM Standard patch value (Piano). |
static int |
kContrabass
GM Standard patch value (Strings). |
static int |
kCrystal
GM Standard patch value (Synth Effects). |
static int |
kDistortionGuitar
GM Standard patch value (Guitar). |
static int |
kDrawOrgan
GM Standard patch value (Organ). |
static int |
kDulcimer
GM Standard patch value (Chromatic Percussion). |
static int |
kEchoes
GM Standard patch value (Synth Effects). |
static int |
kElectricBassFingered
GM Standard patch value (Bass). |
static int |
kElectricBassPicked
GM Standard patch value (Bass). |
static int |
kElectricCleanGuitar
GM Standard patch value (Guitar). |
static int |
kElectricGrandPiano
GM Standard patch value (Piano). |
static int |
kElectricGuitarMuted
GM Standard patch value (Guitar). |
static int |
kElectricJazzGuitar
GM Standard patch value (Guitar). |
static int |
kElectricPiano1
GM Standard patch value (Piano). |
static int |
kElectricPiano2
GM Standard patch value (Piano). |
static int |
kEnglishHorn
GM Standard patch value (Reed). |
static int |
kFiddle
GM Standard patch value (Ethnic). |
static int |
kFlute
GM Standard patch value (Pipe). |
static int |
kFrenchHorn
GM Standard patch value (Brass). |
static int |
kFretlessBass
GM Standard patch value (Bass). |
static int |
kGlockenspiel
GM Standard patch value (Chromatic Percussion). |
static int |
kGoblin
GM Standard patch value (Synth Effects). |
static int |
kGuitarFretNoise
GM Standard patch value (Sound Effects). |
static int |
kGuitarHarmonics
GM Standard patch value (Guitar). |
static int |
kGunshot
GM Standard patch value (Sound Effects). |
static int |
kHarmonica
GM Standard patch value (Organ). |
static int |
kHarpsichord
GM Standard patch value (Piano). |
static int |
kHelicopter
GM Standard patch value (Sound Effects). |
static int |
kHonkyTonkPiano
GM Standard patch value (Piano). |
static int |
kIceRain
GM Standard patch value (Synth Effects). |
(package private) static java.lang.String[] |
kit_names
Kit names defined by General MIDI |
static int |
kKalimba
GM Standard patch value (Ethnic). |
static int |
kKoto
GM Standard patch value (Ethnic). |
static int |
kMarimba
GM Standard patch value (Chromatic Percussion). |
static int |
kMelodicTom
GM Standard patch value (Percussive). |
static int |
kMusicBox
GM Standard patch value (Chromatic Percussion). |
static int |
kMutedTrumpet
GM Standard patch value (Brass). |
static int |
knA440
The default base of tuning |
static int |
knAcousticBassDrum
GM Standard Drumkit key value. |
static int |
knAcousticSnare
GM Standard Drumkit key value. |
static int |
knBassDrum1
GM Standard Drumkit key value. |
static int |
knCabasa
GM Standard Drumkit key value. |
static int |
knChineseCymbal
GM Standard Drumkit key value. |
static int |
knClaves
GM Standard Drumkit key value. |
static int |
knClosedHiHat
GM Standard Drumkit key value. |
static int |
knCowbell
GM Standard Drumkit key value. |
static int |
knCrashCymbal1
GM Standard Drumkit key value. |
static int |
knCrashCymbal2
GM Standard Drumkit key value. |
static int |
knElectricSnare
GM Standard Drumkit key value. |
static int |
knHandClap
GM Standard Drumkit key value. |
static int |
knHiBongo
GM Standard Drumkit key value. |
static int |
knHiFloorTom
GM Standard Drumkit key value. |
static int |
knHighAgogo
GM Standard Drumkit key value. |
static int |
knHiMidTomTom
GM Standard Drumkit key value. |
static int |
knHiTimbale
GM Standard Drumkit key value. |
static int |
knHiTomTom
GM Standard Drumkit key value. |
static int |
knHiWoodBlock
GM Standard Drumkit key value. |
static int |
knLoFloorTom
GM Standard Drumkit key value. |
static int |
knLongGuiro
GM Standard Drumkit key value. |
static int |
knLongWhistle
GM Standard Drumkit key value. |
static int |
knLoTimbale
GM Standard Drumkit key value. |
static int |
knLoTomTom
GM Standard Drumkit key value. |
static int |
knLowAgogo
GM Standard Drumkit key value. |
static int |
knLowBongo
GM Standard Drumkit key value. |
static int |
knLowConga
GM Standard Drumkit key value. |
static int |
knLowMidTomTom
GM Standard Drumkit key value. |
static int |
knLowWoodBlock
GM Standard Drumkit key value. |
static int |
knMaracas
GM Standard Drumkit key value. |
static int |
knMiddleC
The middle of the Piano |
static int |
knMuteCuica
GM Standard Drumkit key value. |
static int |
knMuteHiConga
GM Standard Drumkit key value. |
static int |
knMuteTriangle
GM Standard Drumkit key value. |
static int |
knOpenCuica
GM Standard Drumkit key value. |
static int |
knOpenHiConga
GM Standard Drumkit key value. |
static int |
knOpenHiHat
GM Standard Drumkit key value. |
static int |
knOpenTriangle
GM Standard Drumkit key value. |
static int |
knPedalHiHat
GM Standard Drumkit key value. |
static int |
knRideBell
GM Standard Drumkit key value. |
static int |
knRideCymbal1
GM Standard Drumkit key value. |
static int |
knRideCymbal2
GM Standard Drumkit key value. |
static int |
knShortGuiro
GM Standard Drumkit key value. |
static int |
knShortWhistle
GM Standard Drumkit key value. |
static int |
knSideStick
GM Standard Drumkit key value. |
static int |
knSplashCymbal
GM Standard Drumkit key value. |
static int |
knTambourine
GM Standard Drumkit key value. |
static int |
knVibraslap
GM Standard Drumkit key value. |
static int |
kOboe
GM Standard patch value (Reed). |
static int |
kOcarina
GM Standard patch value (Pipe). |
static int |
kOohChoir
GM Standard patch value (Ensemble). |
static int |
kOrchestraHit
GM Standard patch value (Ensemble). |
static int |
kOrchestralHarp
GM Standard patch value (Strings). |
static int |
kOverdrivenGuitar
GM Standard patch value (Guitar). |
static int |
kPanFlute
GM Standard patch value (Pipe). |
static int |
kPercussiveOrgan
GM Standard patch value (Organ). |
static int |
kPiccolo
GM Standard patch value (Pipe). |
static int |
kPizzicatoStrings
GM Standard patch value (Strings). |
static int |
kRecorder
GM Standard patch value (Pipe). |
static int |
kReedOrgan
GM Standard patch value (Organ). |
static int |
kReverseCymbal
GM Standard patch value (Percussive). |
static int |
kRhodesPiano
GM Standard patch value (Piano). |
static int |
kRockOrgan
GM Standard patch value (Organ). |
static int |
kSawLead
GM Standard patch value (Synth Lead). |
static int |
ksBrushSet
Drum Kit ID. |
static int |
ksDefaultSet
Drum Kit ID. |
static int |
ksDrySet
Drum Kit ID. |
static int |
kSeashore
GM Standard patch value (Sound Effects). |
static int |
ksElectronicSet
Drum Kit ID. |
static int |
ksFirstUserSet
Drum Kit ID. |
static int |
kShakuhachi
GM Standard patch value (Pipe). |
static int |
kShamisen
GM Standard patch value (Ethnic). |
static int |
kShanai
GM Standard patch value (Ethnic). |
static int |
kSitar
GM Standard patch value (Ethnic). |
static int |
ksJazzSet
Drum Kit ID. |
static int |
kSlapBass1
GM Standard patch value (Bass). |
static int |
kSlapBass2
GM Standard patch value (Bass). |
static int |
ksLastUserSet
Drum Kit ID. |
static int |
kSopranoSax
GM Standard patch value (Reed). |
static int |
kSoundtracks
GM Standard patch value (Synth Effects). |
static int |
kSpace
GM Standard patch value (Synth Effects). |
static int |
ksPowerSet
Drum Kit ID. |
static int |
kSquareLead
GM Standard patch value (Synth Lead). |
static int |
ksRoomSet
Drum Kit ID. |
static int |
kSteelDrums
GM Standard patch value (Percussive). |
static int |
kSynthBass1
GM Standard patch value (Bass). |
static int |
kSynthBass2
GM Standard patch value (Bass). |
static int |
kSynthBrass1
GM Standard patch value (Brass). |
static int |
kSynthBrass2
GM Standard patch value (Brass). |
static int |
kSynthLead5
GM Standard patch value (Synth 'Charang' Lead). |
static int |
kSynthLead6
GM Standard patch value (Synth 'Voice' Lead). |
static int |
kSynthLead7
GM Standard patch value (Synth 'Fifths' Lead). |
static int |
kSynthLead8
GM Standard patch value (Synth 'Bass+lead' Lead). |
static int |
kSynthPad1
GM Standard patch value (Synth 'New Age' Pad). |
static int |
kSynthPad2
GM Standard patch value (Synth 'Warm' Pad). |
static int |
kSynthPad3
GM Standard patch value (Synth 'Polysynth' Pad). |
static int |
kSynthPad4
GM Standard patch value (Synth 'Choir' Pad). |
static int |
kSynthPad5
GM Standard patch value (Synth 'Bowed' Pad). |
static int |
kSynthPad6
GM Standard patch value (Synth 'Metallic' Pad). |
static int |
kSynthPad7
GM Standard patch value (Synth 'Halo' Pad). |
static int |
kSynthPad8
GM Standard patch value (Synth 'Sweep' Pad). |
static int |
kSynthStrings1
GM Standard patch value (Ensemble). |
static int |
kSynthStrings2
GM Standard patch value (Ensemble). |
static int |
kSynthTom
GM Standard patch value (Percussive). |
static int |
kSynvox
GM Standard patch value (Ensemble). |
static int |
kTaikoDrum
GM Standard patch value (Percussive). |
static int |
kTangoAccordion
GM Standard patch value (Organ). |
static int |
kTelephoneRing
GM Standard patch value (Sound Effects). |
static int |
kTenorSax
GM Standard patch value (Reed). |
static int |
kTimpani
GM Standard patch value (Strings). |
static int |
kTinkleBell
GM Standard patch value (Percussive). |
static int |
kTremoloStrings
GM Standard patch value (Strings). |
static int |
kTrombone
GM Standard patch value (Brass). |
static int |
kTrumpet
GM Standard patch value (Brass). |
static int |
kTuba
GM Standard patch value (Brass). |
static int |
kTubularBells
GM Standard patch value (Chromatic Percussion). |
static int |
kVibraphone
GM Standard patch value (Chromatic Percussion). |
static int |
kViola
GM Standard patch value (Strings). |
static int |
kViolin
GM Standard patch value (Strings). |
static int |
kWhistle
GM Standard patch value (Pipe). |
static int |
kWoodBass
GM Standard patch value (Bass). |
static int |
kWoodblock
GM Standard patch value (Percussive). |
static int |
kXylophone
GM Standard patch value (Chromatic Percussion). |
static java.lang.String[] |
note_names
Table mapping note number to a name. |
static java.lang.String[] |
patch_names
Instrument Names for General MIDI |
static java.lang.String[] |
registered_parameters
Registered parameters. |
Constructor Summary | |
GeneralMidi()
|
Methods inherited from class java.lang.Object |
|
Field Detail |
public static final int kAcousticGrandPiano
public static final int kBrightAcousticPiano
public static final int kElectricGrandPiano
public static final int kHonkyTonkPiano
public static final int kRhodesPiano
public static final int kElectricPiano1
public static final int kChorusedPiano
public static final int kElectricPiano2
public static final int kHarpsichord
public static final int kClavinet
public static final int kCelesta
public static final int kGlockenspiel
public static final int kMusicBox
public static final int kVibraphone
public static final int kMarimba
public static final int kXylophone
public static final int kTubularBells
public static final int kDulcimer
public static final int kDrawOrgan
public static final int kPercussiveOrgan
public static final int kRockOrgan
public static final int kChurchOrgan
public static final int kReedOrgan
public static final int kAccordion
public static final int kHarmonica
public static final int kTangoAccordion
public static final int kAcousticNylonGuitar
public static final int kAcousticSteelGuitar
public static final int kElectricJazzGuitar
public static final int kElectricCleanGuitar
public static final int kElectricGuitarMuted
public static final int kOverdrivenGuitar
public static final int kDistortionGuitar
public static final int kGuitarHarmonics
public static final int kWoodBass
public static final int kElectricBassFingered
public static final int kElectricBassPicked
public static final int kFretlessBass
public static final int kSlapBass1
public static final int kSlapBass2
public static final int kSynthBass1
public static final int kSynthBass2
public static final int kViolin
public static final int kViola
public static final int kCello
public static final int kContrabass
public static final int kTremoloStrings
public static final int kPizzicatoStrings
public static final int kOrchestralHarp
public static final int kTimpani
public static final int kAcousticStringEnsemble1
public static final int kAcousticStringEnsemble2
public static final int kSynthStrings1
public static final int kSynthStrings2
public static final int kAahChoir
public static final int kOohChoir
public static final int kSynvox
public static final int kOrchestraHit
public static final int kTrumpet
public static final int kTrombone
public static final int kTuba
public static final int kMutedTrumpet
public static final int kFrenchHorn
public static final int kBrassSection
public static final int kSynthBrass1
public static final int kSynthBrass2
public static final int kSopranoSax
public static final int kAltoSax
public static final int kTenorSax
public static final int kBaritoneSax
public static final int kOboe
public static final int kEnglishHorn
public static final int kBassoon
public static final int kClarinet
public static final int kPiccolo
public static final int kFlute
public static final int kRecorder
public static final int kPanFlute
public static final int kBottleBlow
public static final int kShakuhachi
public static final int kWhistle
public static final int kOcarina
public static final int kSquareLead
public static final int kSawLead
public static final int kCalliope
public static final int kChiffer
public static final int kSynthLead5
public static final int kSynthLead6
public static final int kSynthLead7
public static final int kSynthLead8
public static final int kSynthPad1
public static final int kSynthPad2
public static final int kSynthPad3
public static final int kSynthPad4
public static final int kSynthPad5
public static final int kSynthPad6
public static final int kSynthPad7
public static final int kSynthPad8
public static final int kIceRain
public static final int kSoundtracks
public static final int kCrystal
public static final int kAtmosphere
public static final int kBright
public static final int kGoblin
public static final int kEchoes
public static final int kSpace
public static final int kSitar
public static final int kBanjo
public static final int kShamisen
public static final int kKoto
public static final int kKalimba
public static final int kBagpipe
public static final int kFiddle
public static final int kShanai
public static final int kTinkleBell
public static final int kAgogo
public static final int kSteelDrums
public static final int kWoodblock
public static final int kTaikoDrum
public static final int kMelodicTom
public static final int kSynthTom
public static final int kReverseCymbal
public static final int kGuitarFretNoise
public static final int kBreathNoise
public static final int kSeashore
public static final int kBirdTweet
public static final int kTelephoneRing
public static final int kHelicopter
public static final int kApplause
public static final int kGunshot
public static final int knAcousticBassDrum
public static final int knBassDrum1
public static final int knSideStick
public static final int knAcousticSnare
public static final int knHandClap
public static final int knElectricSnare
public static final int knLoFloorTom
public static final int knClosedHiHat
public static final int knHiFloorTom
public static final int knPedalHiHat
public static final int knLoTomTom
public static final int knOpenHiHat
public static final int knLowMidTomTom
public static final int knHiMidTomTom
public static final int knCrashCymbal1
public static final int knHiTomTom
public static final int knRideCymbal1
public static final int knChineseCymbal
public static final int knRideBell
public static final int knTambourine
public static final int knSplashCymbal
public static final int knCowbell
public static final int knCrashCymbal2
public static final int knVibraslap
public static final int knRideCymbal2
public static final int knHiBongo
public static final int knLowBongo
public static final int knMuteHiConga
public static final int knOpenHiConga
public static final int knLowConga
public static final int knHiTimbale
public static final int knLoTimbale
public static final int knHighAgogo
public static final int knLowAgogo
public static final int knCabasa
public static final int knMaracas
public static final int knShortWhistle
public static final int knLongWhistle
public static final int knShortGuiro
public static final int knLongGuiro
public static final int knClaves
public static final int knHiWoodBlock
public static final int knLowWoodBlock
public static final int knMuteCuica
public static final int knOpenCuica
public static final int knMuteTriangle
public static final int knOpenTriangle
public static final int knMiddleC
public static final int knA440
public static final int ksDrySet
public static final int ksRoomSet
public static final int ksPowerSet
public static final int ksElectronicSet
public static final int ksJazzSet
public static final int ksBrushSet
public static final int ksFirstUserSet
public static final int ksLastUserSet
public static final int ksDefaultSet
public static final java.lang.String[] patch_names
public static final java.lang.String[] drum_kits
static final java.lang.String[] kit_names
public static final java.lang.String[] note_names
public static final java.lang.String[] registered_parameters
Constructor Detail |
public GeneralMidi()
|
DixShtix | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |