diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-16 10:02:46 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-09-27 14:59:29 -0500 |
commit | 67698b8232c8e99c0de65a5444f1b3b86f4f6297 (patch) | |
tree | 0cf36bc71bf45ed584ff06477a2920a8cfc234ca /libs/surfaces/push2/midi_byte_array.h | |
parent | e0be45de3885264e5e9a045ebf3bf55cd2707c0c (diff) |
push2: port registration, LED setup
Diffstat (limited to 'libs/surfaces/push2/midi_byte_array.h')
-rw-r--r-- | libs/surfaces/push2/midi_byte_array.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/libs/surfaces/push2/midi_byte_array.h b/libs/surfaces/push2/midi_byte_array.h new file mode 100644 index 0000000000..3d3bcecd28 --- /dev/null +++ b/libs/surfaces/push2/midi_byte_array.h @@ -0,0 +1,76 @@ +/* + Copyright (C) 2006,2007 John Anderson + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ +#ifndef midi_byte_array_h +#define midi_byte_array_h + +#include <iostream> +#include <vector> + +#include <boost/shared_array.hpp> + +//#include <midi++/types.h> +namespace MIDI { + typedef unsigned char byte; +} + +/** + To make building arrays of bytes easier. Thusly: + + MidiByteArray mba; + mba << 0xf0 << 0x00 << 0xf7; + + MidiByteArray buf; + buf << mba; + + MidiByteArray direct( 3, 0xf0, 0x00, 0xf7 ); + + cout << mba << endl; + cout << buf << endl; + cout << direct << endl; + + will all result in "f0 00 f7" being output to stdout +*/ +class MidiByteArray : public std::vector<MIDI::byte> +{ +public: + MidiByteArray() : std::vector<MIDI::byte>() {} + + MidiByteArray( size_t count, MIDI::byte array[] ); + + /** + Accepts a preceding count, and then a list of bytes + */ + MidiByteArray( size_t count, MIDI::byte first, ... ); + + /// copy the given number of bytes from the given array + void copy( size_t count, MIDI::byte arr[] ); +}; + +/// append the given byte to the end of the array +MidiByteArray & operator << ( MidiByteArray & mba, const MIDI::byte & b ); + +/// append the given string to the end of the array +MidiByteArray & operator << ( MidiByteArray & mba, const std::string & ); + +/// append the given array to the end of this array +MidiByteArray & operator << ( MidiByteArray & mba, const MidiByteArray & barr ); + +/// output the bytes as hex to the given stream +std::ostream & operator << ( std::ostream & os, const MidiByteArray & mba ); + +#endif |