A simple library for playing notes
Dependents: DCGame el14m2l_Dungeon_Crawler_Game
music.cpp@0:446604264b9e, 2016-05-05 (annotated)
- Committer:
- Martyrtle
- Date:
- Thu May 05 14:27:18 2016 +0000
- Revision:
- 0:446604264b9e
Done
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Martyrtle | 0:446604264b9e | 1 | /** |
Martyrtle | 0:446604264b9e | 2 | @file music.cpp |
Martyrtle | 0:446604264b9e | 3 | |
Martyrtle | 0:446604264b9e | 4 | @brief Member functions implementations |
Martyrtle | 0:446604264b9e | 5 | |
Martyrtle | 0:446604264b9e | 6 | */ |
Martyrtle | 0:446604264b9e | 7 | |
Martyrtle | 0:446604264b9e | 8 | #include "music.h" |
Martyrtle | 0:446604264b9e | 9 | |
Martyrtle | 0:446604264b9e | 10 | void speaker::tone(float frequency,float duration) |
Martyrtle | 0:446604264b9e | 11 | { |
Martyrtle | 0:446604264b9e | 12 | if (frequency > 0) { |
Martyrtle | 0:446604264b9e | 13 | float dt = 1.0f/(frequency*n) - (1.34e-6 + 1e-6); |
Martyrtle | 0:446604264b9e | 14 | note_timer.start(); |
Martyrtle | 0:446604264b9e | 15 | while(note_timer.read() < duration) { |
Martyrtle | 0:446604264b9e | 16 | for (int i = 0; i < n ; i++) { |
Martyrtle | 0:446604264b9e | 17 | *Speaker = y[i]; |
Martyrtle | 0:446604264b9e | 18 | wait(dt); |
Martyrtle | 0:446604264b9e | 19 | } |
Martyrtle | 0:446604264b9e | 20 | } |
Martyrtle | 0:446604264b9e | 21 | *Speaker = 0.0f; |
Martyrtle | 0:446604264b9e | 22 | note_timer.stop(); |
Martyrtle | 0:446604264b9e | 23 | note_timer.reset(); |
Martyrtle | 0:446604264b9e | 24 | } else { |
Martyrtle | 0:446604264b9e | 25 | wait(duration); |
Martyrtle | 0:446604264b9e | 26 | } |
Martyrtle | 0:446604264b9e | 27 | wait(duration); |
Martyrtle | 0:446604264b9e | 28 | } |