Jump to content

consi_hh

Members
  • Posts

    31
  • Joined

  • Last visited

    Never

About consi_hh

  • Birthday 01/01/1

Profile Information

  • Gender
    Not Telling

consi_hh's Achievements

MIDIbox Newbie

MIDIbox Newbie (1/4)

0

Reputation

  1. Ich weiß nicht auf was für midiwerte dmxcontrol wartet, normalerweise ist es so das alle taster den gleichen midikanal haben und dort dann unterschiedliche Noten "spielen" je nach programmierung deiner anwendung lässt es sich frei konfigurieren, oder wie bei mir wird die Pin-Number gleich der Note gesetzt. Es kann sein das die taster die den gleichen wert senden die für die "navigation" im display sind, dies lässt sich aber auch im code "abschalten". Was für eine anwendung benutzt du denn jetzt? die MB64E ?
  2. Nen display hab ich leider nicht woran ich es also sehen könnte. Das mit den klammerungen hat mein compiler ohne probleme gemacht, die einrückungen werd ich so mal übernehmen. Bekomm ich denn über MIDI irgend ne rückmeldung vom Core wenn der upload funktioniert hat?
  3. Ok ich versuchs mal zu erklären. Ich hab meine Anwendung geändert ud neu kompiliert, auch ohne probleme, dann hab ich die .syx datei mit midi-ox hochgeladen, dies hat auch ohne fehlermeldung geklappt, allerdings hatte ich auf meiner MB keinerlei veränderungen zu vorher. Anschließend hab ich die .hex datei mit miosstudio hochgeladen, auch ohne Fehlermeldungen jedoch auch wieder ohne auswirkungen auf die MB. Um zu seheh ob es überhaupt klappt hab ich die originale ain64_din128_dout128 anwendung hochgeladen, auch wieder ohne auswirkungen auf die MB. Was mich nur wundert ist das beim upload, sei es über midi-ox oder miosstudio keine fehlermeldung kam. Hier noch der code den ich hochladen wollte: ///////////////////////////////////////////////////////////////////////////// // Include files ///////////////////////////////////////////////////////////////////////////// #include "cmios.h" #include "pic18f452.h" #include "main.h" ///////////////////////////////////////////////////////////////////////////// // Global variables ///////////////////////////////////////////////////////////////////////////// // status of application (see bitfield declaration in main.h) app_flags_t app_flags; ///////////////////////////////////////////////////////////////////////////// // Local variables ///////////////////////////////////////////////////////////////////////////// // last ain/din/dout unsigned char last_ain_pin; unsigned char last_din_pin; unsigned char last_dout_pin; ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS after startup to initialize the // application ///////////////////////////////////////////////////////////////////////////// void Init(void) __wparam { // set shift register update frequency MIOS_SRIO_UpdateFrqSet(1); // ms // we need to set at least one IO shift register pair MIOS_SRIO_NumberSet(NUMBER_OF_SRIO); // debouncing value for DINs MIOS_SRIO_DebounceSet(DIN_DEBOUNCE_VALUE); MIOS_SRIO_TS_SensitivitySet(DIN_TS_SENSITIVITY); // initialize the AIN driver MIOS_AIN_NumberSet(AIN_NUMBER_INPUTS); #if AIN_MUXED_MODE MIOS_AIN_Muxed(); #else MIOS_AIN_UnMuxed(); #endif MIOS_AIN_DeadbandSet(AIN_DEADBAND); } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS in the mainloop when nothing else is to do ///////////////////////////////////////////////////////////////////////////// void Tick(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is periodically called by MIOS. The frequency has to be // initialized with MIOS_Timer_Set ///////////////////////////////////////////////////////////////////////////// void Timer(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when the display content should be // initialized. Thats the case during startup and after a temporary message // has been printed on the screen ///////////////////////////////////////////////////////////////////////////// void DISPLAY_Init(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called in the mainloop when no temporary message is shown // on screen. Print the realtime messages here ///////////////////////////////////////////////////////////////////////////// void DISPLAY_Tick(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a complete MIDI event has been received ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyReceivedEvnt(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI event has been received // which has been specified in the MIOS_MPROC_EVENT_TABLE ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyFoundEvent(unsigned entry, unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI event has not been completly // received within 2 seconds ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyTimeout(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI byte has been received ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyReceivedByte(unsigned char byte) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS before the shift register are loaded ///////////////////////////////////////////////////////////////////////////// void SR_Service_Prepare(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS after the shift register have been loaded ///////////////////////////////////////////////////////////////////////////// void SR_Service_Finish(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when an button has been toggled // pin_value is 1 when button released, and 0 when button pressed ///////////////////////////////////////////////////////////////////////////// void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam { // Midi Events senden MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0x90); MIOS_MIDI_TxBufferPut(pin); MIOS_MIDI_TxBufferPut(pin_value ? 0x00 : 0x7f); if(pin < 4) // bei button 0-3 soll nurletzte gedrückte led leuchten { MIOS_DOUT_PinSet0(0x00); MIOS_DOUT_PinSet0(0x01); MIOS_DOUT_PinSet0(0x02); MIOS_DOUT_PinSet0(0x03); MIOS_DOUT_PinSet1(pin); } else {if(pin >=4 && pin <=7) // bei button 4-7 soll nurletzte gedrückte led leuchten { MIOS_DOUT_PinSet0(0x04); MIOS_DOUT_PinSet0(0x05); MIOS_DOUT_PinSet0(0x06); MIOS_DOUT_PinSet0(0x07); MIOS_DOUT_PinSet1(pin); } else {if(pin >=8 && pin <=15) // bei button 8-15 soll nurletzte gedrückte led leuchten { MIOS_DOUT_SRSet(1, 0x00); MIOS_DOUT_PinSet1(pin); } else {if(pin >39 && pin <50) // bei button 40 - 49 nurletzte gedrückte led leuchten { MIOS_DOUT_SRSet(5, 0x00); MIOS_DOUT_PinSet0(0x30); MIOS_DOUT_PinSet0(0x31); MIOS_DOUT_PinSet1(pin); } else {if(pin >=56 && pin <=57) // led von button 56 - 57 soll nur leuchten wenn button gedrückt { MIOS_DOUT_PinSet(pin, MIOS_DOUT_PinGet(pin) ^ 0xFF); } else {if(pin ==58) // Button 58 soll alle LED´s ausschalten { MIOS_DOUT_SRSet(0, 0x00); MIOS_DOUT_SRSet(1, 0x00); MIOS_DOUT_SRSet(2, 0x00); MIOS_DOUT_SRSet(3, 0x00); MIOS_DOUT_SRSet(4, 0x00); MIOS_DOUT_SRSet(5, 0x00); MIOS_DOUT_SRSet(6, 0x00); MIOS_DOUT_SRSet(7, 0x00); } else //alle buttons anderen sollen die leds togglen {if (pin_value == 1) return; MIOS_DOUT_PinSet(pin, MIOS_DOUT_PinGet(pin) ^ 0xFF); MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0x90); MIOS_MIDI_TxBufferPut(0x3C + pin); MIOS_MIDI_TxBufferPut(0x64 + pin); MIOS_MIDI_EndStream(); }}}}}} } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when an encoder has been moved // incrementer is positive when encoder has been turned clockwise, else // it is negative ///////////////////////////////////////////////////////////////////////////// void ENC_NotifyChange(unsigned char encoder, char incrementer) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a pot has been moved ///////////////////////////////////////////////////////////////////////////// void AIN_NotifyChange(unsigned char pin, unsigned int pin_value) __wparam { // a pot has been moved, send CC# at channel 1 MIOS_MIDI_TxBufferPut(0xb0 + pin); // CC at channel 1 MIOS_MIDI_TxBufferPut(07); // pin number corresponds to CC number MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin)); // don't send 10bit pin_value, // but 7bit value }
  4. Hab die anwendung ain64_din128_dout128 drauf und sie etwas modifiziert. Das Problem ist das ich sie garnichrt auf meine midibox aufgespielt bekomme, also auch wenn ich mir die "originale" anwendung runterlade und sie auf die MB überspielen will sich nix tut, und die prorammierung der buttons und led´s genau so ist wie bei meiner veränderten version.
  5. Hallo, hab mir gedacht ich änder an meiner Programmierung der Midibox was. Nun hab ich folgendes Problem: Ich habe den Code in C geändert, habe ihn compiliert. Jetzt wollte ich ihn auf meine MB uploaden. Ich habe es über miosstudio / hex als auch über midi-ox / syx probiert. Es wird fleißig gesendet, übertragung erfolgreich gemeldet, allerdings funktioniert die MB weiter ohne änderun wie vorher. Hab ich was vergessen? woran könnte es liegen?
  6. wie weit bist du? ich hab sowas auch mal gebaut : http://www.midibox.org/forum/index.php/topic,10870.0.html das war der thread mit Bildern. Inzwischen hab ich dazu noch ein 15" touchscreen in dessen 19" gehäuse ich nen Motherboard gleich mit integriert habe. Bei fragen zur Hardware kann ich sonst gern helfen!
  7. Klar, hier das ergebnis, ich denke man kann sicherlich och ne menge optimieren, aber fürt mich reicht es und es tut was es soll ;) Hier der code : void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam { // Midi Events senden MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0x90); MIOS_MIDI_TxBufferPut(pin); MIOS_MIDI_TxBufferPut(pin_value ? 0x00 : 0x7f); if(pin < 4) // bei button 0-3 soll nurletzte gedrückte led leuchten { MIOS_DOUT_PinSet0(0x00); MIOS_DOUT_PinSet0(0x01); MIOS_DOUT_PinSet0(0x02); MIOS_DOUT_PinSet0(0x03); MIOS_DOUT_PinSet1(pin); } else {if(pin >=4 && pin <=7) // bei button 4-7 soll nurletzte gedrückte led leuchten { MIOS_DOUT_PinSet0(0x04); MIOS_DOUT_PinSet0(0x05); MIOS_DOUT_PinSet0(0x06); MIOS_DOUT_PinSet0(0x07); MIOS_DOUT_PinSet1(pin); } else {if(pin >=8 && pin <=15) // bei button 8-15 soll nurletzte gedrückte led leuchten { MIOS_DOUT_SRSet(1, 0x00); MIOS_DOUT_PinSet1(pin); } else {if(pin >39 && pin <50) // bei button 40 - 49 nurletzte gedrückte led leuchten { MIOS_DOUT_SRSet(5, 0x00); MIOS_DOUT_PinSet0(0x30); MIOS_DOUT_PinSet0(0x31); MIOS_DOUT_PinSet1(pin); } else {if(pin >=56 && pin <=57) // led von button 56 - 57 soll nur leuchten wenn button gedrückt { MIOS_DOUT_PinSet(pin, MIOS_DOUT_PinGet(pin) ^ 0xFF); } else {if(pin ==58) // Button 58 soll alle LED´s ausschalten { MIOS_DOUT_SRSet(0, 0x00); MIOS_DOUT_SRSet(1, 0x00); MIOS_DOUT_SRSet(2, 0x00); MIOS_DOUT_SRSet(3, 0x00); MIOS_DOUT_SRSet(4, 0x00); MIOS_DOUT_SRSet(5, 0x00); MIOS_DOUT_SRSet(6, 0x00); MIOS_DOUT_SRSet(7, 0x00); } else //alle anderen buttons sollen die leds togglen {if (pin_value == 1) return; MIOS_DOUT_PinSet(pin, MIOS_DOUT_PinGet(pin) ^ 0xFF); MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0x90); MIOS_MIDI_TxBufferPut(0x3C + pin); MIOS_MIDI_TxBufferPut(0x64 + pin); MIOS_MIDI_EndStream(); }}}}}} }
  8. Soo, nen kleiner abschließender bericht: Nachdem ich mich nen bisschen in C eingearbeitet habe und von euch in die richtige Richtung gelenkt wurde klappts nu so wie es soll ;) Vielen dank nochmal...
  9. ..das mit dem code-tag wusste ich nicht.. nu weiß ich bescheid. Dann versuch ich mal zu erkläre was ich vorhab... ich habe auf meiner midibox blöcke mit jeweils 8 Tastern und zugehöriger LED. Mit dem code den ich gepostet hatte funktioniert es so, das von den ersten 8 Tastern jeweils nur die LED leuchtet, deren Taster ich gedrückt habe bis ich den nächsten drücke. Nun möchte ich mit den tastern 9-16 genauso verfahren, sie sollen aber unabhägig von den ersten 8 sein. Ich dachte mir das so in etwa: void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam { // Midi Events senden MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0x90); MIOS_MIDI_TxBufferPut(pin); MIOS_MIDI_TxBufferPut(pin_value ? 0x00 : 0x7f); if(pin < 8) // Die ersten 8 Pins { MIOS_DOUT_SRSet(0, 0x00); //dOUT sr 0 soll alle LED`s ausschalten MIOS_DOUT_PinSet1(pin); // Led des betätigten Buttons geht an } if(pin 8 - 15) // Pin 8 - 15 [color=red]allerdigs weiß ich nicht wie ich das schreiben soll[/color] { MIOS_DOUT_SRSet(1, 0x00); //dOUT sr 1 soll alle LED`s ausschalten MIOS_DOUT_PinSet1(pin); // Led des betätigten Buttons geht an } else {if (pin_value == 1) //alle anderen taster togglen die zugehörige LED return; MIOS_DOUT_PinSet(pin, MIOS_DOUT_PinGet(pin) ^ 0xFF); MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0x90); MIOS_MIDI_TxBufferPut(0x3C + pin); MIOS_MIDI_TxBufferPut(0x64 + pin); MIOS_MIDI_EndStream(); } }
  10. So ich bin nen stück weiter, habe jetzt die taster und LED´s des ersten shiftregisters gekoppelt so das immer nur eine LED leuchtet, alle anderen buttons togglen die led`s. Wie bekomme ich es nun hin das ich zum bsp die led´s des 2. shiftregisters sozusagen zusammenfasse? ich müsste dann ja vorgeben Pin 8-15, wie kann ich das lösen ? "If(pin 8 -15)" klappt nicht! ;) So sieht mein code jetzt aus:
  11. Vielen Dank, hab schon ne menge gestern probiert aber darauf bin ich nicht gekommen ;) wobei es ja so nahe liegt ;)
  12. Frag doch mal deinen Modellbauer, vielleicht hat er nen Händler über den er sowas beziehen kann. Ansonsten kauf doch eine fertige 19" Rackblende und lass die von dem Modellbauer bearbeiten. Was er in seine Maschine spannt ist ja egal...
  13. Vielen Dank, das hat mir schonmal weitergeholfen jetzt hauts mit den LEDs hin ;) ... hab nun noch ne frage bezüglich der pots. Ich hab insgesamt 11 Fader die die jeder auf einem channel ein volume control senden sollen. So sieht mein Code jetzt aus: Wie stell ich das jetzt ein das sie alle auf unterschiedlichen midichanels senden?? das 0xB0 gibt ja an CC auf Channel 1, hab es nur nicht so ändern können das er z.B. je nach Pin ne anderen Channel hat.
  14. Um das gaze in C zu machen muss ich also erstmal die "ain64_din128_dout128" anwendug raufladen. Oder hab ich da nen denkfehler??
×
×
  • Create New...