MusicSpectrum  1.0.0
spectrum3D.hpp
Vá para a documentação desse arquivo.
1 #pragma once
2 
3 #include "FFT/fft.hpp"
4 #include "HUD/hud.hpp"
7 #include "Sample/sample.hpp"
8 #include "Shader/shader.hpp"
9 #include "Timer/timer.hpp"
10 
11 #include <functional>
12 #include <glm/gtc/matrix_transform.hpp>
13 
22 class Spectrum3D {
23  protected:
24  const glm::mat4 view_default_mat =
25  glm::lookAt(glm::vec3(0.0f, 3.0f, 12.0f), glm::vec3(0.0f, 1.5f, 0.0f),
26  glm::vec3(0.0f, 1.0f, 0.0f));
27 
28  private:
29  // Variáveis privadas do constructor
30  std::shared_ptr<sf::RenderWindow> window;
31  std::shared_ptr<HUD> hud_ptr;
32  std::shared_ptr<FFT<sf::Int16>> fft_ptr;
33 
34  std::shared_ptr<Plane> plane_ptr;
35  std::shared_ptr<MobiusStrip> mobius_ptr;
36 
37  std::shared_ptr<Timer> timer_ptr;
38  std::unique_ptr<Sample> sample_ptr;
39 
40  glm::mat4 proj_mat;
41  glm::mat4 view_wave_mat;
42  glm::mat4 view_wff_mat;
43 
44  private:
46 
47  GLuint vao_wave;
48  GLuint vbo_wave;
49  GLuint ebo_wave;
50  std::shared_ptr<Shader> shader_wave_ptr;
51 
52  GLuint vao_fft;
53  GLuint vbo_fft;
54  GLuint ebo_fft;
55  std::shared_ptr<Shader> shader_wfft_ptr;
56 
57  void clear();
58  void initOpenGL();
59  void handleMouse();
60  void setupBuffers(GLuint &vao, GLuint &vbo, GLuint &ebo);
61  void bindAndDraw(GLuint vao, GLuint vbo, GLuint ebo,
62  std::vector<glm::vec3> &vertices,
63  std::vector<GLuint> &indices, GLenum mode);
64 
65  public:
66  void viewWaveform();
67  void viewWaveformFFT();
68 
69  void getWhellDelta(int w_delta);
70 
71  void run(std::function<void(std::vector<Float_Complex>, std::size_t)>
72  handlePlot);
73 
74  Spectrum3D(std::shared_ptr<sf::RenderWindow> win, std::shared_ptr<HUD> hud,
75  std::shared_ptr<FFT<sf::Int16>> fft);
76 };
Definition: fft.hpp:21
Definition: spectrum3D.hpp:22
GLuint vbo_wave
Definition: spectrum3D.hpp:48
std::shared_ptr< MobiusStrip > mobius_ptr
Definition: spectrum3D.hpp:35
GLuint vbo_fft
Definition: spectrum3D.hpp:53
int whell_delta
Definition: spectrum3D.hpp:45
void initOpenGL()
Definition: setup.cpp:15
std::unique_ptr< Sample > sample_ptr
Definition: spectrum3D.hpp:38
glm::mat4 view_wave_mat
Definition: spectrum3D.hpp:41
void viewWaveformFFT()
Visualiza a forma de onda com aplicação da FFT no sinal de áudio.
Definition: Spectrum3D/waves_sine.cpp:52
glm::mat4 proj_mat
Definition: spectrum3D.hpp:40
std::shared_ptr< HUD > hud_ptr
Definition: spectrum3D.hpp:31
void viewWaveform()
Visualiza a forma de onda do sinal de áudio.
Definition: Spectrum3D/waves_sine.cpp:4
std::shared_ptr< Shader > shader_wfft_ptr
Definition: spectrum3D.hpp:55
GLuint ebo_fft
Definition: spectrum3D.hpp:54
std::shared_ptr< Shader > shader_wave_ptr
Definition: spectrum3D.hpp:50
std::shared_ptr< Plane > plane_ptr
Definition: spectrum3D.hpp:34
glm::mat4 view_wff_mat
Definition: spectrum3D.hpp:42
void getWhellDelta(int w_delta)
Definition: spectrum3D.cpp:42
std::shared_ptr< FFT< sf::Int16 > > fft_ptr
Definition: spectrum3D.hpp:32
std::shared_ptr< Timer > timer_ptr
Definition: spectrum3D.hpp:37
GLuint ebo_wave
Definition: spectrum3D.hpp:49
void setupBuffers(GLuint &vao, GLuint &vbo, GLuint &ebo)
Definition: setup.cpp:41
void clear()
Limpa a tela.
Definition: setup.cpp:4
void run(std::function< void(std::vector< Float_Complex >, std::size_t)> handlePlot)
Definition: spectrum3D.cpp:51
void handleMouse()
Trata o movimento do mouse.
Definition: setup.cpp:93
std::shared_ptr< sf::RenderWindow > window
Definition: spectrum3D.hpp:30
Spectrum3D(std::shared_ptr< sf::RenderWindow > win, std::shared_ptr< HUD > hud, std::shared_ptr< FFT< sf::Int16 >> fft)
Definition: spectrum3D.cpp:10
GLuint vao_wave
Definition: spectrum3D.hpp:47
GLuint vao_fft
Definition: spectrum3D.hpp:52
const glm::mat4 view_default_mat
Definition: spectrum3D.hpp:24
void bindAndDraw(GLuint vao, GLuint vbo, GLuint ebo, std::vector< glm::vec3 > &vertices, std::vector< GLuint > &indices, GLenum mode)
Definition: setup.cpp:74