{-# LINE 9 "GeneralMidi.lhs" #-}
{-# 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"