Hi, habe ein kleines Programm um eine Spur einer midi abzuspielen geschrieben. Der Code ist für das ATMEL Evaluations-Board von Pollin mit einem Atmega8. Allerdings habe ich kein Programm gefunden welches aus einer midi-Datei eine Spur extrahieren kann. Evtl. hat ein Interessierter einen Tipp. Das Ganze habe ich schon in der Code-Sammlung veröffentlicht. Leider hat sich bisher noch niemand gemeldet. Entweder es interessiert keinen oder ich habe es in der falschen Rubrik gepostet. siehe: [Beitrag "midi-sound auf Evaluations-Board von Pollin"] Hoffe das ich jetzt nix falsch gemacht habe. Für Hilfe wäre ich dankbar.
Hannes ... schrieb: > habe ein kleines Programm um eine Spur einer midi abzuspielen > geschrieben. Das ist etwas missverständlich. Was macht dein Programm? Ist es ein MIDI Expander - bekommt über MIDI In Daten und spielt die mit seinen Voices ab? Ist es ein Player für *.MID Dateien? Wenn ja, spielt es diese über MIDI Out oder mit internen Stimmen? Da mir 900kB ZIP im Moment zu viel zum Durchwühlen sind, mach doch mal eine kurze Beschreibung, auch für andere Interessierte.
:
Bearbeitet durch User
Hi Matthias, Das Programm wandelt nur eine Spur einer Midi-Datei in C-Code um (frequenz und länge). z.B.:
1 | Timer_io_init(415); _delay_ms(960); |
Diese Codezeilen können dann 1 zu 1 in das Projekt kopiert werden. Es werden also alle Töne auf dem ROM des Atmega gespeichert. Das sieht dann so aus:
1 | void sail() |
2 | {
|
3 | Timer_io_init(415); _delay_ms(960); |
4 | Timer_io_init(415); _delay_ms(480); |
5 | Timer_io_init(77); _delay_ms(480); |
6 | Timer_io_init(77); _delay_ms(480); |
7 | Timer_io_init(77); _delay_ms(480); |
8 | Timer_io_init(77); _delay_ms(480); |
9 | Timer_io_init(77); _delay_ms(480); |
10 | Timer_io_init(77); _delay_ms(480); |
11 | Timer_io_init(77); _delay_ms(480); |
12 | Timer_io_init(77); _delay_ms(480); |
13 | Timer_io_init(77); _delay_ms(480); |
14 | Timer_io_init(77); _delay_ms(480); |
15 | Timer_io_init(77); _delay_ms(480); |
16 | Timer_io_init(77); _delay_ms(480); |
17 | Timer_io_init(77); _delay_ms(480); |
18 | Timer_io_init(77); _delay_ms(480); |
19 | Timer_io_init(77); _delay_ms(480); |
20 | Timer_io_init(77); _delay_ms(480); |
21 | Timer_io_init(69); _delay_ms(480); |
22 | Timer_io_init(69); _delay_ms(480); |
23 | Timer_io_init(69); _delay_ms(480); |
24 | Timer_io_init(69); _delay_ms(480); |
25 | Timer_io_init(69); _delay_ms(480); |
26 | Timer_io_init(69); _delay_ms(480); |
27 | Timer_io_init(69); _delay_ms(480); |
28 | Timer_io_init(69); _delay_ms(480); |
29 | Timer_io_init(92); _delay_ms(480); |
30 | Timer_io_init(92); _delay_ms(480); |
31 | Timer_io_init(92); _delay_ms(480); |
32 | Timer_io_init(92); _delay_ms(480); |
33 | Timer_io_init(69); _delay_ms(480); |
34 | Timer_io_init(69); _delay_ms(480); |
35 | Timer_io_init(69); _delay_ms(480); |
36 | Timer_io_init(69); _delay_ms(480); |
37 | Timer_io_init(116); _delay_ms(480); |
38 | Timer_io_init(311); _delay_ms(960); |
39 | Timer_io_init(311); _delay_ms(160); |
40 | Timer_io_init(311); _delay_ms(160); |
41 | Timer_io_init(369); _delay_ms(160); |
42 | Timer_io_init(369); _delay_ms(160); |
43 | Timer_io_init(369); _delay_ms(160); |
44 | Timer_io_init(415); _delay_ms(160); |
45 | Timer_io_init(466); _delay_ms(480); |
46 | Timer_io_init(415); _delay_ms(480); |
47 | Timer_io_init(369); _delay_ms(320); |
48 | Timer_io_init(311); _delay_ms(160); |
49 | Timer_io_init(116); _delay_ms(480); |
50 | Timer_io_init(311); _delay_ms(960); |
51 | Timer_io_init(311); _delay_ms(160); |
52 | Timer_io_init(311); _delay_ms(160); |
53 | Timer_io_init(369); _delay_ms(160); |
54 | Timer_io_init(369); _delay_ms(160); |
55 | Timer_io_init(369); _delay_ms(160); |
56 | Timer_io_init(415); _delay_ms(160); |
57 | Timer_io_init(466); _delay_ms(480); |
58 | Timer_io_init(415); _delay_ms(480); |
59 | Timer_io_init(369); _delay_ms(320); |
60 | Timer_io_init(311); _delay_ms(160); |
61 | Timer_io_init(103); _delay_ms(480); |
62 | Timer_io_init(277); _delay_ms(960); |
63 | Timer_io_init(277); _delay_ms(160); |
64 | Timer_io_init(277); _delay_ms(160); |
65 | Timer_io_init(311); _delay_ms(160); |
66 | Timer_io_init(311); _delay_ms(160); |
67 | Timer_io_init(311); _delay_ms(160); |
68 | Timer_io_init(233); _delay_ms(160); |
69 | Timer_io_init(311); _delay_ms(480); |
70 | Timer_io_init(369); _delay_ms(480); |
71 | Timer_io_init(311); _delay_ms(320); |
72 | Timer_io_init(277); _delay_ms(160); |
73 | Timer_io_init(138); _delay_ms(480); |
74 | Timer_io_init(466); _delay_ms(480); |
75 | Timer_io_init(466); _delay_ms(480); |
76 | Timer_io_init(466); _delay_ms(160); |
77 | Timer_io_init(466); _delay_ms(160); |
78 | Timer_io_init(554); _delay_ms(160); |
79 | Timer_io_init(554); _delay_ms(160); |
80 | Timer_io_init(554); _delay_ms(160); |
81 | Timer_io_init(138); _delay_ms(160); |
82 | Timer_io_init(415); _delay_ms(480); |
83 | Timer_io_init(622); _delay_ms(480); |
84 | Timer_io_init(622); _delay_ms(160); |
85 | Timer_io_init(622); _delay_ms(160); |
86 | Timer_io_init(739); _delay_ms(160); |
87 | Timer_io_init(116); _delay_ms(480); |
88 | Timer_io_init(77); _delay_ms(480); |
89 | Timer_io_init(155); _delay_ms(480); |
90 | Timer_io_init(311); _delay_ms(160); |
91 | Timer_io_init(311); _delay_ms(160); |
92 | Timer_io_init(369); _delay_ms(160); |
93 | Timer_io_init(369); _delay_ms(160); |
94 | Timer_io_init(77); _delay_ms(80); |
95 | Timer_io_init(369); _delay_ms(80); |
96 | Timer_io_init(116); _delay_ms(160); |
97 | Timer_io_init(77); _delay_ms(480); |
98 | Timer_io_init(155); _delay_ms(480); |
99 | Timer_io_init(369); _delay_ms(320); |
100 | Timer_io_init(77); _delay_ms(160); |
101 | Timer_io_init(116); _delay_ms(480); |
102 | Timer_io_init(77); _delay_ms(480); |
103 | Timer_io_init(155); _delay_ms(480); |
104 | Timer_io_init(311); _delay_ms(160); |
105 | Timer_io_init(311); _delay_ms(160); |
106 | Timer_io_init(369); _delay_ms(160); |
107 | Timer_io_init(369); _delay_ms(160); |
108 | Timer_io_init(77); _delay_ms(80); |
109 | Timer_io_init(369); _delay_ms(80); |
110 | Timer_io_init(116); _delay_ms(160); |
111 | Timer_io_init(77); _delay_ms(480); |
112 | Timer_io_init(155); _delay_ms(480); |
113 | Timer_io_init(116); _delay_ms(320); |
114 | Timer_io_init(77); _delay_ms(160); |
115 | Timer_io_init(116); _delay_ms(320); |
116 | Timer_io_init(103); _delay_ms(160); |
117 | Timer_io_init(69); _delay_ms(480); |
118 | Timer_io_init(138); _delay_ms(480); |
119 | Timer_io_init(277); _delay_ms(160); |
120 | Timer_io_init(277); _delay_ms(160); |
121 | Timer_io_init(311); _delay_ms(160); |
122 | Timer_io_init(311); _delay_ms(160); |
123 | Timer_io_init(69); _delay_ms(80); |
124 | Timer_io_init(311); _delay_ms(80); |
125 | Timer_io_init(103); _delay_ms(160); |
126 | Timer_io_init(69); _delay_ms(480); |
127 | Timer_io_init(174); _delay_ms(480); |
128 | Timer_io_init(311); _delay_ms(320); |
129 | Timer_io_init(69); _delay_ms(160); |
130 | Timer_io_init(138); _delay_ms(480); |
131 | Timer_io_init(138); _delay_ms(480); |
132 | Timer_io_init(138); _delay_ms(480); |
133 | Timer_io_init(466); _delay_ms(160); |
134 | Timer_io_init(466); _delay_ms(160); |
135 | Timer_io_init(138); _delay_ms(160); |
136 | Timer_io_init(554); _delay_ms(160); |
137 | Timer_io_init(554); _delay_ms(160); |
138 | Timer_io_init(103); _delay_ms(160); |
139 | Timer_io_init(103); _delay_ms(480); |
140 | Timer_io_init(103); _delay_ms(480); |
141 | Timer_io_init(622); _delay_ms(160); |
142 | Timer_io_init(622); _delay_ms(160); |
143 | Timer_io_init(103); _delay_ms(160); |
144 | Timer_io_init(116); _delay_ms(480); |
145 | Timer_io_init(77); _delay_ms(480); |
146 | Timer_io_init(155); _delay_ms(480); |
147 | Timer_io_init(155); _delay_ms(160); |
148 | Timer_io_init(311); _delay_ms(160); |
149 | Timer_io_init(184); _delay_ms(160); |
150 | Timer_io_init(184); _delay_ms(160); |
151 | Timer_io_init(311); _delay_ms(160); |
152 | Timer_io_init(207); _delay_ms(160); |
153 | Timer_io_init(233); _delay_ms(480); |
154 | Timer_io_init(207); _delay_ms(480); |
155 | Timer_io_init(184); _delay_ms(320); |
156 | Timer_io_init(155); _delay_ms(160); |
157 | Timer_io_init(77); _delay_ms(480); |
158 | Timer_io_init(77); _delay_ms(480); |
159 | Timer_io_init(369); _delay_ms(320); |
160 | Timer_io_init(155); _delay_ms(160); |
161 | Timer_io_init(155); _delay_ms(160); |
162 | Timer_io_init(311); _delay_ms(160); |
163 | Timer_io_init(184); _delay_ms(160); |
164 | Timer_io_init(184); _delay_ms(160); |
165 | Timer_io_init(311); _delay_ms(160); |
166 | Timer_io_init(207); _delay_ms(160); |
167 | Timer_io_init(233); _delay_ms(480); |
168 | Timer_io_init(207); _delay_ms(480); |
169 | Timer_io_init(184); _delay_ms(320); |
170 | Timer_io_init(155); _delay_ms(160); |
171 | Timer_io_init(69); _delay_ms(480); |
172 | Timer_io_init(69); _delay_ms(480); |
173 | Timer_io_init(369); _delay_ms(320); |
174 | Timer_io_init(138); _delay_ms(160); |
175 | Timer_io_init(138); _delay_ms(160); |
176 | Timer_io_init(277); _delay_ms(160); |
177 | Timer_io_init(155); _delay_ms(160); |
178 | Timer_io_init(155); _delay_ms(160); |
179 | Timer_io_init(277); _delay_ms(160); |
180 | Timer_io_init(116); _delay_ms(160); |
181 | Timer_io_init(155); _delay_ms(480); |
182 | Timer_io_init(184); _delay_ms(480); |
183 | Timer_io_init(155); _delay_ms(320); |
184 | Timer_io_init(138); _delay_ms(160); |
185 | Timer_io_init(369); _delay_ms(320); |
186 | Timer_io_init(138); _delay_ms(160); |
187 | Timer_io_init(466); _delay_ms(480); |
188 | Timer_io_init(138); _delay_ms(480); |
189 | Timer_io_init(466); _delay_ms(160); |
190 | Timer_io_init(466); _delay_ms(160); |
191 | Timer_io_init(138); _delay_ms(160); |
192 | Timer_io_init(554); _delay_ms(160); |
193 | Timer_io_init(554); _delay_ms(160); |
194 | Timer_io_init(103); _delay_ms(160); |
195 | Timer_io_init(103); _delay_ms(480); |
196 | Timer_io_init(103); _delay_ms(480); |
197 | Timer_io_init(622); _delay_ms(160); |
198 | Timer_io_init(622); _delay_ms(160); |
199 | Timer_io_init(103); _delay_ms(160); |
200 | Timer_io_init(116); _delay_ms(480); |
201 | Timer_io_init(77); _delay_ms(480); |
202 | Timer_io_init(155); _delay_ms(480); |
203 | Timer_io_init(155); _delay_ms(160); |
204 | Timer_io_init(311); _delay_ms(160); |
205 | Timer_io_init(184); _delay_ms(160); |
206 | Timer_io_init(184); _delay_ms(160); |
207 | Timer_io_init(311); _delay_ms(160); |
208 | Timer_io_init(207); _delay_ms(160); |
209 | Timer_io_init(233); _delay_ms(480); |
210 | Timer_io_init(207); _delay_ms(480); |
211 | Timer_io_init(184); _delay_ms(320); |
212 | Timer_io_init(155); _delay_ms(160); |
213 | Timer_io_init(77); _delay_ms(480); |
214 | Timer_io_init(77); _delay_ms(480); |
215 | Timer_io_init(155); _delay_ms(480); |
216 | Timer_io_init(155); _delay_ms(160); |
217 | Timer_io_init(311); _delay_ms(160); |
218 | Timer_io_init(184); _delay_ms(160); |
219 | Timer_io_init(184); _delay_ms(160); |
220 | Timer_io_init(311); _delay_ms(160); |
221 | Timer_io_init(207); _delay_ms(160); |
222 | Timer_io_init(233); _delay_ms(480); |
223 | Timer_io_init(207); _delay_ms(480); |
224 | Timer_io_init(184); _delay_ms(320); |
225 | Timer_io_init(155); _delay_ms(160); |
226 | Timer_io_init(69); _delay_ms(480); |
227 | Timer_io_init(69); _delay_ms(480); |
228 | Timer_io_init(138); _delay_ms(480); |
229 | Timer_io_init(138); _delay_ms(160); |
230 | Timer_io_init(277); _delay_ms(160); |
231 | Timer_io_init(155); _delay_ms(160); |
232 | Timer_io_init(155); _delay_ms(160); |
233 | Timer_io_init(277); _delay_ms(160); |
234 | Timer_io_init(116); _delay_ms(160); |
235 | Timer_io_init(155); _delay_ms(480); |
236 | Timer_io_init(184); _delay_ms(480); |
237 | Timer_io_init(155); _delay_ms(320); |
238 | Timer_io_init(138); _delay_ms(160); |
239 | Timer_io_init(369); _delay_ms(320); |
240 | Timer_io_init(138); _delay_ms(160); |
241 | Timer_io_init(138); _delay_ms(480); |
242 | Timer_io_init(138); _delay_ms(480); |
243 | Timer_io_init(466); _delay_ms(160); |
244 | Timer_io_init(466); _delay_ms(160); |
245 | Timer_io_init(138); _delay_ms(160); |
246 | Timer_io_init(554); _delay_ms(160); |
247 | Timer_io_init(554); _delay_ms(160); |
248 | Timer_io_init(103); _delay_ms(160); |
249 | Timer_io_init(103); _delay_ms(480); |
250 | Timer_io_init(103); _delay_ms(480); |
251 | Timer_io_init(622); _delay_ms(160); |
252 | Timer_io_init(622); _delay_ms(160); |
253 | Timer_io_init(103); _delay_ms(160); |
254 | Timer_io_init(116); _delay_ms(480); |
255 | Timer_io_init(77); _delay_ms(480); |
256 | Timer_io_init(155); _delay_ms(480); |
257 | Timer_io_init(622); _delay_ms(160); |
258 | }
|
Hoffe ich konnte meine unzureichende Dokumentation verbessern.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.