{-# LINE 9 "GeneralMidi.lhs" #-} -- This code was automatically generated by lhs2tex --code, from the file -- HSoM/GeneralMidi.lhs. (See HSoM/MakeCode.bat.) {-# LINE 16 "GeneralMidi.lhs" #-} module Euterpea.IO.MIDI.GeneralMidi where import Euterpea.Music (InstrumentName(..)) fromGM :: Int -> InstrumentName fromGM i | i >= 0 && i <= 127 = toEnum i fromGM i = error $ "fromGMNo: " ++ show i ++ " is not a valid General Midi Number" toGM :: InstrumentName -> Int toGM Percussion = 0 toGM (CustomInstrument name) = 0 toGM i = fromEnum i instance Enum InstrumentName where fromEnum AcousticGrandPiano = 0 fromEnum BrightAcousticPiano = 1 fromEnum ElectricGrandPiano = 2 fromEnum HonkyTonkPiano = 3 fromEnum RhodesPiano = 4 fromEnum ChorusedPiano = 5 fromEnum Harpsichord = 6 fromEnum Clavinet = 7 fromEnum Celesta = 8 fromEnum Glockenspiel = 9 fromEnum MusicBox = 10 fromEnum Vibraphone = 11 fromEnum Marimba = 12 fromEnum Xylophone = 13 fromEnum TubularBells = 14 fromEnum Dulcimer = 15 fromEnum HammondOrgan = 16 fromEnum PercussiveOrgan = 17 fromEnum RockOrgan = 18 fromEnum ChurchOrgan = 19 fromEnum ReedOrgan = 20 fromEnum Accordion = 21 fromEnum Harmonica = 22 fromEnum TangoAccordion = 23 fromEnum AcousticGuitarNylon = 24 fromEnum AcousticGuitarSteel = 25 fromEnum ElectricGuitarJazz = 26 fromEnum ElectricGuitarClean = 27 fromEnum ElectricGuitarMuted = 28 fromEnum OverdrivenGuitar = 29 fromEnum DistortionGuitar = 30 fromEnum GuitarHarmonics = 31 fromEnum AcousticBass = 32 fromEnum ElectricBassFingered = 33 fromEnum ElectricBassPicked = 34 fromEnum FretlessBass = 35 fromEnum SlapBass1 = 36 fromEnum SlapBass2 = 37 fromEnum SynthBass1 = 38 fromEnum SynthBass2 = 39 fromEnum Violin = 40 fromEnum Viola = 41 fromEnum Cello = 42 fromEnum Contrabass = 43 fromEnum TremoloStrings = 44 fromEnum PizzicatoStrings = 45 fromEnum OrchestralHarp = 46 fromEnum Timpani = 47 fromEnum StringEnsemble1 = 48 fromEnum StringEnsemble2 = 49 fromEnum SynthStrings1 = 50 fromEnum SynthStrings2 = 51 fromEnum ChoirAahs = 52 fromEnum VoiceOohs = 53 fromEnum SynthVoice = 54 fromEnum OrchestraHit = 55 fromEnum Trumpet = 56 fromEnum Trombone = 57 fromEnum Tuba = 58 fromEnum MutedTrumpet = 59 fromEnum FrenchHorn = 60 fromEnum BrassSection = 61 fromEnum SynthBrass1 = 62 fromEnum SynthBrass2 = 63 fromEnum SopranoSax = 64 fromEnum AltoSax = 65 fromEnum TenorSax = 66 fromEnum BaritoneSax = 67 fromEnum Oboe = 68 fromEnum EnglishHorn = 69 fromEnum Bassoon = 70 fromEnum Clarinet = 71 fromEnum Piccolo = 72 fromEnum Flute = 73 fromEnum Recorder = 74 fromEnum PanFlute = 75 fromEnum BlownBottle = 76 fromEnum Shakuhachi = 77 fromEnum Whistle = 78 fromEnum Ocarina = 79 fromEnum Lead1Square = 80 fromEnum Lead2Sawtooth = 81 fromEnum Lead3Calliope = 82 fromEnum Lead4Chiff = 83 fromEnum Lead5Charang = 84 fromEnum Lead6Voice = 85 fromEnum Lead7Fifths = 86 fromEnum Lead8BassLead = 87 fromEnum Pad1NewAge = 88 fromEnum Pad2Warm = 89 fromEnum Pad3Polysynth = 90 fromEnum Pad4Choir = 91 fromEnum Pad5Bowed = 92 fromEnum Pad6Metallic = 93 fromEnum Pad7Halo = 94 fromEnum Pad8Sweep = 95 fromEnum FX1Train = 96 fromEnum FX2Soundtrack = 97 fromEnum FX3Crystal = 98 fromEnum FX4Atmosphere = 99 fromEnum FX5Brightness = 100 fromEnum FX6Goblins = 101 fromEnum FX7Echoes = 102 fromEnum FX8SciFi = 103 fromEnum Sitar = 104 fromEnum Banjo = 105 fromEnum Shamisen = 106 fromEnum Koto = 107 fromEnum Kalimba = 108 fromEnum Bagpipe = 109 fromEnum Fiddle = 110 fromEnum Shanai = 111 fromEnum TinkleBell = 112 fromEnum Agogo = 113 fromEnum SteelDrums = 114 fromEnum Woodblock = 115 fromEnum TaikoDrum = 116 fromEnum MelodicDrum = 117 fromEnum SynthDrum = 118 fromEnum ReverseCymbal = 119 fromEnum GuitarFretNoise = 120 fromEnum BreathNoise = 121 fromEnum Seashore = 122 fromEnum BirdTweet = 123 fromEnum TelephoneRing = 124 fromEnum Helicopter = 125 fromEnum Applause = 126 fromEnum Gunshot = 127 fromEnum i = error $ "fromEnum: " ++ show i ++ " is not implemented" toEnum 0 = AcousticGrandPiano toEnum 1 = BrightAcousticPiano toEnum 2 = ElectricGrandPiano toEnum 3 = HonkyTonkPiano toEnum 4 = RhodesPiano toEnum 5 = ChorusedPiano toEnum 6 = Harpsichord toEnum 7 = Clavinet toEnum 8 = Celesta toEnum 9 = Glockenspiel toEnum 10 = MusicBox toEnum 11 = Vibraphone toEnum 12 = Marimba toEnum 13 = Xylophone toEnum 14 = TubularBells toEnum 15 = Dulcimer toEnum 16 = HammondOrgan toEnum 17 = PercussiveOrgan toEnum 18 = RockOrgan toEnum 19 = ChurchOrgan toEnum 20 = ReedOrgan toEnum 21 = Accordion toEnum 22 = Harmonica toEnum 23 = TangoAccordion toEnum 24 = AcousticGuitarNylon toEnum 25 = AcousticGuitarSteel toEnum 26 = ElectricGuitarJazz toEnum 27 = ElectricGuitarClean toEnum 28 = ElectricGuitarMuted toEnum 29 = OverdrivenGuitar toEnum 30 = DistortionGuitar toEnum 31 = GuitarHarmonics toEnum 32 = AcousticBass toEnum 33 = ElectricBassFingered toEnum 34 = ElectricBassPicked toEnum 35 = FretlessBass toEnum 36 = SlapBass1 toEnum 37 = SlapBass2 toEnum 38 = SynthBass1 toEnum 39 = SynthBass2 toEnum 40 = Violin toEnum 41 = Viola toEnum 42 = Cello toEnum 43 = Contrabass toEnum 44 = TremoloStrings toEnum 45 = PizzicatoStrings toEnum 46 = OrchestralHarp toEnum 47 = Timpani toEnum 48 = StringEnsemble1 toEnum 49 = StringEnsemble2 toEnum 50 = SynthStrings1 toEnum 51 = SynthStrings2 toEnum 52 = ChoirAahs toEnum 53 = VoiceOohs toEnum 54 = SynthVoice toEnum 55 = OrchestraHit toEnum 56 = Trumpet toEnum 57 = Trombone toEnum 58 = Tuba toEnum 59 = MutedTrumpet toEnum 60 = FrenchHorn toEnum 61 = BrassSection toEnum 62 = SynthBrass1 toEnum 63 = SynthBrass2 toEnum 64 = SopranoSax toEnum 65 = AltoSax toEnum 66 = TenorSax toEnum 67 = BaritoneSax toEnum 68 = Oboe toEnum 69 = EnglishHorn toEnum 70 = Bassoon toEnum 71 = Clarinet toEnum 72 = Piccolo toEnum 73 = Flute toEnum 74 = Recorder toEnum 75 = PanFlute toEnum 76 = BlownBottle toEnum 77 = Shakuhachi toEnum 78 = Whistle toEnum 79 = Ocarina toEnum 80 = Lead1Square toEnum 81 = Lead2Sawtooth toEnum 82 = Lead3Calliope toEnum 83 = Lead4Chiff toEnum 84 = Lead5Charang toEnum 85 = Lead6Voice toEnum 86 = Lead7Fifths toEnum 87 = Lead8BassLead toEnum 88 = Pad1NewAge toEnum 89 = Pad2Warm toEnum 90 = Pad3Polysynth toEnum 91 = Pad4Choir toEnum 92 = Pad5Bowed toEnum 93 = Pad6Metallic toEnum 94 = Pad7Halo toEnum 95 = Pad8Sweep toEnum 96 = FX1Train toEnum 97 = FX2Soundtrack toEnum 98 = FX3Crystal toEnum 99 = FX4Atmosphere toEnum 100 = FX5Brightness toEnum 101 = FX6Goblins toEnum 102 = FX7Echoes toEnum 103 = FX8SciFi toEnum 104 = Sitar toEnum 105 = Banjo toEnum 106 = Shamisen toEnum 107 = Koto toEnum 108 = Kalimba toEnum 109 = Bagpipe toEnum 110 = Fiddle toEnum 111 = Shanai toEnum 112 = TinkleBell toEnum 113 = Agogo toEnum 114 = SteelDrums toEnum 115 = Woodblock toEnum 116 = TaikoDrum toEnum 117 = MelodicDrum toEnum 118 = SynthDrum toEnum 119 = ReverseCymbal toEnum 120 = GuitarFretNoise toEnum 121 = BreathNoise toEnum 122 = Seashore toEnum 123 = BirdTweet toEnum 124 = TelephoneRing toEnum 125 = Helicopter toEnum 126 = Applause toEnum 127 = Gunshot toEnum n = error $ "toEnum: " ++ show n ++ " is not implemented for InstrumentName"