summaryrefslogtreecommitdiffstats
path: root/mp3player.h
blob: c5efabb382897573e475f6f5295a34da796a2305 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef MP3_PLAYER_H
#define MP3_PLAYER_H

#include "AudioOutputI2SNoDAC.h"
#include "AudioGeneratorMP3.h"
#include "AudioFileSourceSD.h"
#include "AudioLogger.h"
#include "controller.h"
#include "SD.h"
#include <iostream>


enum ListMode {
  SECTIONS=0,
  MUSIC_FILES=1
};

class MP3List {
  String *list;
  int listSize = 0;
  int listCurrentPosition = 0;
  int countListElements(File*);
  void insertElementsToList(File*);
  bool canAdd(File*);
  void debug();
  ListMode mode;

public:
  MP3List(File*, ListMode);
  ~MP3List();
  String getCurrent();
  String getNext();
  String getPrevious();
};


class MP3Player : public MP3Controller {
  AudioFileSourceSD *source;
  AudioGeneratorMP3 *mp3;
  AudioOutputI2SNoDAC *out;

  MP3List *listMusicFiles;
  MP3List *listSections;

  String currentFolder;
  float volume=2.0;
  float const volumeBy = 0.3;

  String rootDir = "/";

  void playMP3(String);
  bool updateListSections();
  bool updateListMusicFiles();
  String getFilePath(String);


 public:
  MP3Player();
  ~MP3Player();
  void volumeUp();
  void volumeDown();
  void nextSection() override;
  void previousSection() override;
  void nextFile() override;
  void previousFile() override;
  void loop();
};

#endif