diff options
Diffstat (limited to 'drumgizmo/input/jackmidi')
| -rw-r--r-- | drumgizmo/input/jackmidi/Makefile.am | 34 | ||||
| -rw-r--r-- | drumgizmo/input/jackmidi/audioinputenginejackmidi.cc | 153 | ||||
| -rw-r--r-- | drumgizmo/input/jackmidi/audioinputenginejackmidi.h | 61 | ||||
| -rw-r--r-- | drumgizmo/input/jackmidi/jackmidi.cc | 252 | 
4 files changed, 0 insertions, 500 deletions
diff --git a/drumgizmo/input/jackmidi/Makefile.am b/drumgizmo/input/jackmidi/Makefile.am deleted file mode 100644 index d392f19..0000000 --- a/drumgizmo/input/jackmidi/Makefile.am +++ /dev/null @@ -1,34 +0,0 @@ - -jackmidisources = \ -	jackmidi.cc \ -	$(top_srcdir)/src/midimapper.cc \ -	$(top_srcdir)/src/midimapparser.cc \ -	$(top_srcdir)/src/saxparser.cc \ -	$(top_srcdir)/hugin/hugin.c - -if HAVE_INPUT_JACKMIDI - -jackmidiltlibs = jackmidi.la -jackmidibuildsources = $(jackmidisources) - -else - -jackmidiltlibs = -jackmidibuildsources = - -endif - -EXTRA_DIST = $(jackmidisources) - -lib_LTLIBRARIES = $(jackmidiltlibs) - -libdir = $(INPUT_PLUGIN_DIR) - -AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src -I$(top_srcdir)/hugin -jackmidi_la_LDFLAGS = -module -avoid-version -shared -jackmidi_la_LIBADD = $(EXPAT_LIBS) -jackmidi_la_CXXFLAGS = $(EXPAT_CFLAGS) -jackmidi_la_SOURCES = $(jackmidibuildsources) - -install-exec-hook: -	rm -f $(DESTDIR)$(libdir)/jackmidi.la diff --git a/drumgizmo/input/jackmidi/audioinputenginejackmidi.cc b/drumgizmo/input/jackmidi/audioinputenginejackmidi.cc deleted file mode 100644 index 5e1fb85..0000000 --- a/drumgizmo/input/jackmidi/audioinputenginejackmidi.cc +++ /dev/null @@ -1,153 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - *            audioinputenginejackmidi.cc - * - *  Sun Feb 27 11:33:31 CET 2011 - *  Copyright 2011 Bent Bisballe Nyeng - *  deva@aasimon.org - ****************************************************************************/ - -/* - *  This file is part of DrumGizmo. - * - *  DrumGizmo 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. - * - *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. - */ -#include "audioinputenginejackmidi.h" - -#define NOTE_ON 0x90 - -AudioInputEngineJackMidi::AudioInputEngineJackMidi() -{ -  jackclient = init_jack_client(); - -  jackclient->addJackProcess(this); - -  pos = 0; -} - -AudioInputEngineJackMidi::~AudioInputEngineJackMidi() -{ -  jackclient->removeJackProcess(this); -  close_jack_client(); -} - -void AudioInputEngineJackMidi::jack_process(jack_nframes_t nframes) -{ -  void *midibuffer = jack_port_get_buffer(midi_port, nframes); - -  jack_nframes_t midievents = jack_midi_get_event_count(midibuffer); - -  for(jack_nframes_t i = 0; i < midievents; i++) { -    jack_midi_event_t event; -    jack_midi_event_get(&event, midibuffer, i); -     -    if(event.size != 3) continue; -    if((event.buffer[0] & NOTE_ON) != NOTE_ON) continue; -     -    int key = event.buffer[1]; -    int velocity = event.buffer[2]; -     -    printf("Event key:%d vel:%d\n", key, velocity); -    /* -    if(kit->midimap.find(key) == kit->midimap.end()) { -      printf("Missing note %d in midimap.\n", key); -      continue; -    } - -    std::string instr = kit->midimap[key]; - -    if(kit->instruments.find(instr) == kit->instruments.end()) { -      printf("Missing instrument %s.\n", instr.c_str()); -      continue; -    } -    */ - -    Instrument *i = NULL; -    int d = key % kit->instruments.size(); -    Instruments::iterator it = kit->instruments.begin(); -    while(d--) { -      i = &(it->second); -      it++; -    } - -    if(i == NULL) { -      continue; -    } - -    //    Sample *s = i.sample((float)velocity/127.0); -    Sample *s = i->sample(0.5); -     -    if(s == NULL) { -      printf("Missing Sample.\n"); -      continue; -    } - -    Channels::iterator j = kit->channels.begin(); -    while(j != kit->channels.end()) { -      Channel &ch = *j; -      AudioFile *af = s->getAudioFile(&ch); -      if(af == NULL) { -        printf("Missing AudioFile.\n"); -      } else { -        printf("Adding event.\n"); -        Event *evt = new EventSample(ch.num, 1.0, af); -        eventqueue->post(evt, pos + event.time + nframes); -      } -      j++; -    } -  } -   -  jack_midi_clear_buffer(midibuffer); -     -  pos += nframes; -} - -bool AudioInputEngineJackMidi::init(EventQueue *e, DrumKit *dk) -{ -  eventqueue = e; -  kit = dk; - -	midi_port = jack_port_register(jackclient->jack_client, -                                 "drumgizmo_midiin", -                                 JACK_DEFAULT_MIDI_TYPE, -                                 JackPortIsInput,// | JackPortIsTerminal, -                                 0); - -  return true; -} - - -bool AudioInputEngineJackMidi::activate() -{ -  jackclient->activate(); -  return true; -} - -#ifdef TEST_AUDIOINPUTENGINEJACKMIDI -//Additional dependency files -//deps: -//Required cflags (autoconf vars may be used) -//cflags: -//Required link options (autoconf vars may be used) -//libs: -#include "test.h" - -TEST_BEGIN; - -// TODO: Put some testcode here (see test.h for usable macros). - -TEST_END; - -#endif/*TEST_AUDIOINPUTENGINEJACKMIDI*/ diff --git a/drumgizmo/input/jackmidi/audioinputenginejackmidi.h b/drumgizmo/input/jackmidi/audioinputenginejackmidi.h deleted file mode 100644 index e4c6e69..0000000 --- a/drumgizmo/input/jackmidi/audioinputenginejackmidi.h +++ /dev/null @@ -1,61 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - *            audioinputenginejackmidi.h - * - *  Sun Feb 27 11:33:31 CET 2011 - *  Copyright 2011 Bent Bisballe Nyeng - *  deva@aasimon.org - ****************************************************************************/ - -/* - *  This file is part of DrumGizmo. - * - *  DrumGizmo 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. - * - *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. - */ -#ifndef __DRUMGIZMO_AUDIOINPUTENGINEJACKMIDI_H__ -#define __DRUMGIZMO_AUDIOINPUTENGINEJACKMIDI_H__ - -#include <jack/jack.h> -#include <jack/midiport.h> - -#include "audioinputengine.h" -#include "event.h" - -#include "jackclient.h" - -class AudioInputEngineJackMidi : public AudioInputEngine, public JackProcess { -public: -  AudioInputEngineJackMidi(); -  ~AudioInputEngineJackMidi(); - -  bool init(EventQueue *e, DrumKit *drumkit); -  bool activate(); -  void run(size_t pos, size_t len) {} - -  void thread_main(); - -  void jack_process(jack_nframes_t nframes); - -private: -  DrumKit *kit; -  size_t pos; -  EventQueue *eventqueue; - -  JackClient *jackclient; -  jack_port_t *midi_port; -}; - -#endif/*__DRUMGIZMO_AUDIOINPUTENGINEJACKMIDI_H__*/ - diff --git a/drumgizmo/input/jackmidi/jackmidi.cc b/drumgizmo/input/jackmidi/jackmidi.cc deleted file mode 100644 index e632484..0000000 --- a/drumgizmo/input/jackmidi/jackmidi.cc +++ /dev/null @@ -1,252 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - *            jackmidi.cc - * - *  Sat Apr 30 21:11:54 CEST 2011 - *  Copyright 2011 Bent Bisballe Nyeng - *  deva@aasimon.org - ****************************************************************************/ - -/* - *  This file is part of DrumGizmo. - * - *  DrumGizmo 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. - * - *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. - */ -/* -#include <stdlib.h> - -#include <event.h> -#include <string> - -#include <stdio.h> -#include <midimapper.h> -#include <midimapparser.h> - -#define NOTE_ON 0x90 - -#include "../../jackclient.h" - -#include <jack/midiport.h> - -class JackMidi : public JackProcess { -public: -  JackMidi(); -  virtual ~JackMidi(); - -  bool init(int instruments, char *inames[]); - -  void setParm(std::string parm, std::string value); - -  bool start(); -  void stop(); - -  void pre(); -  event_t *run(size_t pos, size_t len, size_t *nevents); -  void post(); - -  void jack_process(jack_nframes_t nframes); - -private: -  void loadMap(std::string map) {} - -  JackClient *jackclient{nullptr}; -  jack_port_t *midi_port{nullptr}; - -  size_t pos; - -  event_t *list; -  size_t listsize; - -  std::string midimapfile; -  MidiMapper mmap; -}; - -JackMidi::JackMidi() -{ -  pos = 0; - -  list = (event_t *)malloc(sizeof(event_t) * 1000); -  listsize = 0; -} - -JackMidi::~JackMidi() -{ -} - -bool JackMidi::init(int instruments, char *inames[]) -{ -	midi_port = jack_port_register(jackclient->jack_client, -                                 "drumgizmo_midiin", -                                 JACK_DEFAULT_MIDI_TYPE, -                                 JackPortIsInput,// | JackPortIsTerminal, -                                 0); - -  MidiMapParser p(midimapfile); -  if(p.parse()) return false; -  mmap.midimap = p.midimap; - -  for(int i = 0; i < instruments; i++) { -    mmap.instrmap[inames[i]] = i; -  } - -  return true; -} - -void JackMidi::setParm(std::string parm, std::string value) -{ -  if(parm == "midimap") midimapfile = value; -  if(parm == "jack_client") { -    sscanf(value.c_str(), "%p", &jackclient); -    if(jackclient) jackclient->addJackProcess(this); -  } -} - -bool JackMidi::start() -{ -  // jackclient->activate(); -  return true; -} - -void JackMidi::stop() -{ -} - -void JackMidi::pre() -{ -} - -event_t *JackMidi::run(size_t pos, size_t len, size_t *nevents) -{ -  *nevents = listsize; -  event_t *l = list; -  list = (event_t *)malloc(sizeof(event_t) * 1000); -  listsize = 0; -  return l; -} - -void JackMidi::jack_process(jack_nframes_t nframes) -{ -  // printf("i"); fflush(stdout); - -  void *midibuffer = jack_port_get_buffer(midi_port, nframes); - -  jack_nframes_t midievents = jack_midi_get_event_count(midibuffer); - -  for(jack_nframes_t i = 0; i < midievents; i++) { -    jack_midi_event_t event; -    jack_midi_event_get(&event, midibuffer, i); -     -    if(event.size != 3) continue; -    if((event.buffer[0] & NOTE_ON) != NOTE_ON) continue; -     -    int key = event.buffer[1]; -    int velocity = event.buffer[2]; -     -    printf("Event key:%d vel:%d\n", key, velocity); - -    int k = mmap.lookup(key); -    if(k != -1) { - -      if(velocity) { -        list[listsize].type = TYPE_ONSET; -        list[listsize].instrument = k; -        list[listsize].velocity = velocity / 127.0; -        list[listsize].offset = event.time; -        listsize++; -      } -    } -  } -   -  jack_midi_clear_buffer(midibuffer); -     -  pos += nframes; -} - -void JackMidi::post() -{ -} - -extern "C" { -  void *create() -  { -    return new JackMidi(); -  } -   -  void destroy(void *h) -  { -    JackMidi *jackmidi = (JackMidi*)h; -    delete jackmidi; -  } - -  bool init(void *h, int i, char *inames[]) -  { -    JackMidi *jackmidi = (JackMidi*)h; -    return jackmidi->init(i, inames); -  } - -  void setparm(void *h, const char *parm, const char *value) -  { -    JackMidi *jackmidi = (JackMidi*)h; -    jackmidi->setParm(parm, value); -  } - -  bool start(void *h) -  { -    JackMidi *jackmidi = (JackMidi*)h; -    return jackmidi->start(); -  } - -  void stop(void *h) -  { -    JackMidi *jackmidi = (JackMidi*)h; -    jackmidi->stop(); -  } - -  void pre(void *h) -  { -    JackMidi *jackmidi = (JackMidi*)h; -    jackmidi->pre(); -  } - -  event_t *run(void *h, size_t pos, size_t len, size_t *nev) -  { -    JackMidi *jackmidi = (JackMidi*)h; -    return jackmidi->run(pos, len, nev); -  } - -  void post(void *h) -  { -    JackMidi *jackmidi = (JackMidi*)h; -    jackmidi->post(); -  } -} -*/ - -#ifdef TEST_AUDIOINPUTENGINEJACKMIDI -//Additional dependency files -//deps: -//Required cflags (autoconf vars may be used) -//cflags: -//Required link options (autoconf vars may be used) -//libs: -#include "test.h" - -TEST_BEGIN; - -// TODO: Put some testcode here (see test.h for usable macros). - -TEST_END; - -#endif/*TEST_AUDIOINPUTENGINEJACKMIDI*/  | 
