4#include "rclcpp/rclcpp.hpp"
6#include <QtWidgets/QWidget>
7#include <QtWidgets/QLabel>
8#include <QtWidgets/QPushButton>
9#include <QtWidgets/QVBoxLayout>
10#include <QtWidgets/QHBoxLayout>
11#include <QtWidgets/QSlider>
12#include <QtWidgets/QGroupBox>
15#include <QRadioButton>
19#include <QtWidgets/QButtonGroup>
21#include "jamc/srv/func.hpp"
22#include "jamc/srv/time_scale.hpp"
23#include "jamc/srv/load.hpp"
25#include <sensor_msgs/msg/image.hpp>
34 class PianoUI :
public QWidget,
public rclcpp::Node
83 rclcpp::Subscription<sensor_msgs::msg::Image>::SharedPtr
_camera_sub;
Standalone Class for processing midi files and saving/loading mipi files. Contains various getters to...
Definition midi_processor.h:54
QLabel * _time_val
Definition ui_piano.h:63
rclcpp::Client< jamc::srv::TimeScale >::SharedPtr time_scale_client
Definition ui_piano.h:76
void force_pause_and_reset()
Immediate helper method to halt UI playback tracking and reset visual sliders.
Definition ui_piano.cpp:187
rclcpp::Client< jamc::srv::Func >::SharedPtr direction_client
Definition ui_piano.h:75
void toggle_direction()
Toggles between Forward and Reverse playback logic.
Definition ui_piano.cpp:343
QPushButton * _debug_button
Definition ui_piano.h:85
bool is_playing
Definition ui_piano.h:43
rclcpp::Subscription< sensor_msgs::msg::Image >::SharedPtr _camera_sub
Definition ui_piano.h:83
PlaybackDirection current_dir
Definition ui_piano.h:44
MidiProcessor processor
Definition ui_piano.h:80
QLabel * _new_file_label
Definition ui_piano.h:55
QString _midi_file_path
Definition ui_piano.h:45
QLabel * _old_file_label
Definition ui_piano.h:57
void set_direction_reverse()
Explicitly sets playback direction to Reverse via the /MIPI/direction service.
Definition ui_piano.cpp:364
QVBoxLayout * _channel_layout
Definition ui_piano.h:66
rclcpp::Client< jamc::srv::Func >::SharedPtr debug_client
Definition ui_piano.h:78
QPushButton * _direction_button
Definition ui_piano.h:51
void play_pause()
Toggles the playback state and notifies the /MIPI/play_pause service.
Definition ui_piano.cpp:247
void set_direction_forward()
Explicitly sets playback direction to Forward via the /MIPI/direction service.
Definition ui_piano.cpp:351
void image_callback(const sensor_msgs::msg::Image::SharedPtr msg)
ROS 2 Subscriber callback for camera feed.
Definition ui_piano.cpp:152
QPushButton * _new_file_button
Definition ui_piano.h:56
void send_debug_request()
Sends a trigger request to the debug service for development testing.
Definition ui_piano.cpp:163
rclcpp::Client< jamc::srv::Load >::SharedPtr channel_client
Definition ui_piano.h:77
QButtonGroup * _channel_group
Definition ui_piano.h:67
void load_existing_mipi(int index)
UI Slot for loading a file selected from the dropdown menu.
Definition ui_piano.cpp:294
void send_time_scale()
Transmits the current speed slider value as a time scale factor (0.01-1.0) to the robot.
Definition ui_piano.cpp:387
QComboBox * _old_file_button
Definition ui_piano.h:58
QSlider * _speed_control
Definition ui_piano.h:54
QSlider * _track_slider
Definition ui_piano.h:49
QLabel * _status_val
Definition ui_piano.h:61
void update_channel_radio_buttons()
Rebuilds the radio button group based on the currently loaded MIDI processor data.
Definition ui_piano.cpp:224
PianoUI()
Hybrid Qt-ROS2 Class for managing the User Interface of the MIDI-to-UR3 system.
Definition ui_piano.cpp:22
QPushButton * _play_pause_button
Definition ui_piano.h:50
void populate_mipi_combobox()
Scans the ~/mipi_files directory to refresh the dropdown list.
Definition ui_piano.cpp:206
QRadioButton * _channel_select
Definition ui_piano.h:53
QLabel * _channel_title
Definition ui_piano.h:52
QLabel * _title
Definition ui_piano.h:48
void update_status_info()
Refreshes all status labels in the UI with the latest system state information.
Definition ui_piano.cpp:377
~PianoUI()
Standard Destructor for PianoUI Class.
Definition ui_piano.cpp:145
void send_channel_selection(int index)
Transmits the selected MIDI channel to the robot controller.
Definition ui_piano.cpp:314
void open_midi_file()
UI Slot for opening a file dialog to process a raw .mid file.
Definition ui_piano.cpp:269
rclcpp::Client< jamc::srv::Func >::SharedPtr playback_client
Definition ui_piano.h:74
QLabel * _camera_view
Definition ui_piano.h:82
QLabel * _speed_val
Definition ui_piano.h:62
Definition ui_piano.cpp:10
PlaybackDirection
Definition ui_piano.h:32