浏览代码

added MessageList class

Fabian Peter Hammerle 10 年之前
父节点
当前提交
74620a53f5
共有 7 个文件被更改,包括 57 次插入0 次删除
  1. 6 0
      MessageList.cpp
  2. 14 0
      MessageList.h
  3. 7 0
      Output.cpp
  4. 2 0
      Output.h
  5. 17 0
      build
  6. 1 0
      tests/CMakeLists.txt
  7. 10 0
      tests/midiout.cpp

+ 6 - 0
MessageList.cpp

@@ -0,0 +1,6 @@
+#include "MessageList.h"
+#include <iostream>
+
+namespace midi {
+
+}; // namespace

+ 14 - 0
MessageList.h

@@ -0,0 +1,14 @@
+#pragma once
+#include <list>
+#include <memory>
+#include <list>
+#include "Message.h"
+
+namespace midi {
+
+class MessageList : public std::list<std::shared_ptr<Message>>
+{
+    typedef std::list<std::shared_ptr<Message>> parent;
+};
+
+} // namespace

+ 7 - 0
Output.cpp

@@ -9,4 +9,11 @@ void Output::sendMessage(const Message& message)
 	RtMidiOut::sendMessage(&bytes);
 }
 
+void Output::sendMessages(const MessageList& messageList)
+{
+    for(auto it = messageList.begin(); it != messageList.end(); it++) {
+        sendMessage(**it);
+    }
+}
+
 } // namespace

+ 2 - 0
Output.h

@@ -2,6 +2,7 @@
 
 #include "RtMidi.h"
 #include "Message.h"
+#include "MessageList.h"
 
 namespace midi {
 
@@ -9,6 +10,7 @@ class Output : public RtMidiOut
 {
 public:
 	void sendMessage(const Message& message);
+	void sendMessages(const MessageList& messageList);
 };
 
 } // namespace midi

+ 17 - 0
build

@@ -0,0 +1,17 @@
+#!/bin/bash
+
+cd "$( dirname "$0" )"
+
+mkdir -p lib
+cd lib
+cmake ..
+make
+cd ..
+
+cd tests
+mkdir -p bin
+cd bin
+cmake ..
+make 
+cd ../..
+

+ 1 - 0
tests/CMakeLists.txt

@@ -5,6 +5,7 @@ include_directories("${CMAKE_SOURCE_DIR}/..")
 link_directories("${CMAKE_SOURCE_DIR}/../lib")
 
 # add_definitions(-pthread)
+add_definitions(-std=c++11)
 
 add_executable(midiout midiout.cpp)
 target_link_libraries(midiout midi) 

+ 10 - 0
tests/midiout.cpp

@@ -14,5 +14,15 @@ int main()
 
     out.sendMessage(NoteOnMessage(3, 45, 127));
 
+    cout << "press button to send... " << flush;
+    cin.ignore();
+
+    MessageList l;
+    for(int i=10; i<120; i+=10) {
+        std::shared_ptr<Message> msg = std::make_shared<NoteOnMessage>(1, i, 100);
+        l.push_back(msg);
+    }
+    out.sendMessages(l);
+
     return 0;
 }