{-# 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 :: Int -> InstrumentName
fromGM Int
i | Int
i Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
0 Bool -> Bool -> Bool
&& Int
i Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
127 = Int -> InstrumentName
forall a. Enum a => Int -> a
toEnum Int
i
fromGM Int
i = [Char] -> InstrumentName
forall a. HasCallStack => [Char] -> a
error ([Char] -> InstrumentName) -> [Char] -> InstrumentName
forall a b. (a -> b) -> a -> b
$ [Char]
"fromGMNo: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Int -> [Char]
forall a. Show a => a -> [Char]
show Int
i [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ 
                   [Char]
" is not a valid General Midi Number"
toGM :: InstrumentName -> Int
toGM :: InstrumentName -> Int
toGM InstrumentName
Percussion = Int
0
toGM (CustomInstrument [Char]
name) = Int
0
toGM InstrumentName
i = InstrumentName -> Int
forall a. Enum a => a -> Int
fromEnum InstrumentName
i

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

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