Jump to content

consi_hh

Members
  • Posts

    31
  • Joined

  • Last visited

    Never

Everything posted by consi_hh

  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??
  15. Dankeschön, kompilieren tuts, allerdings läuft es nicht so wie es soll. Habe nur das "ifset" durch dein vorschlag ergänzt. jetzt geben die buttons keine noten mehr aus ud die LED´s leuchten auch nur kurz in dem moment wo ich draufdrücke. Ist es nicht einfach möglich den toggle modus de ich z.B. über die vmidibox eistellen kann so abzuädern das er nur "note on" befehle bei jeder betätigung des tasters sendet??
  16. do you have any idea how it works? I have the same problem at the momet but i don´t have any idea to fix it..
  17. Habe ich, jedoch fand ich die möglichkeit über die vmidibox änderungen vorzunehmen ganz schön ohne den code ändern zu müssen. Das hab ich hier im Forum auch schonmal gelesen, habs aber nicht hinbekommen! in der main.asm hab ich folgendes geändert, so hatte ich es in dem oben verlinkten post gelesen: beim kompiliere bekam ich folgende fehlermeldung
  18. Hallo zusammen, nachdem ich meine midibox im Februar fertiggestellt hab, versuche ich mich in die assembler programmierung einzuarbeiten um meine Dout´s zu schalten. Leider ohne erfolg, entweder haut es beim kompilieren nicht hin oder meine box macht später was ganz anderes. Momentan läuft mbox64 drauf Nun nochmal wie ich es gern hätte: Variante 1 : Beim erste mal drücken eines buttons wird "note on" gesendet, Led geht an - beim 2.mal drücken wird wieder "note on" gesendet und die led geht aus. Ich hab es so versucht wie es in diesem fall: http://www.midibox.org/forum/index.php?PHPSESSID=5dfc2ee33bcf034d33c5c8429b719cf8&topic=2423.0 beschrieben wurde, das hat er aber nicht kompiliert. ich glaube er hatte sich an dem befehl "ifset" gestört. Variante 2: Ich habe ein block von 10 Tasten jeweils mit led. Wenn ich eine taste drücke wird "note on" gesendet led geht an. Wenn ich eine andere taste drücke geht die led der vorherigen taste aus, die neue sendet "note on" und die led leuchtet. Hab da schonmal verschieden sachen versucht aber nix gescheites hinbekommen.. Kann mir jemand von euch helfen der von der programmierung mehr ahnung hat als ich? ich bin da mehr handwerklich begabt ;)
  19. Hallo, um was für eine steuerung handelt es sich denn? Steuerung fürs Licht? Ich halte es auch für einfacher eine neue Steuersoftware anzuschaffen die sich direkt über midi steuern lässt. Es gibt auch super freeware steuerungen. ansonsten habe ich eine midibox für die lichtsteuerung gebaut.. also wenn du fragen hast... nur zu...
  20. hey, thanks for the Translation, my english is not so good becuase im not speak or write anything since I was in school 12 jears ago, but I try to give you an answer. I control with the box a software named "Scanshow" from "Lightdesk" and use them to control a lot of moving- and genericlights. I can use the faders to control the channels of the lightingfixtures,the speed or the dimmer. The switches I can use to start cues,chaser an so on. The hardware interface usb-dmx is an interface "usbdmx2" from "soundlight" which gives me one dmx universe with 512 dmx channels.
  21. Hallo zusammen, meine Midibox ist soweit fertig und ich wollte mal nen kleinen Bericht abgeben und nen paar Bilder zeigen. Erstmal zur Vorgeschichte, ich war auf der Suche nach einer komfortablen möglichkeit meine Lichtsteuerung auf dem PC fernzubedienen. Ich hatte vorher ein kleines Midi-keyboard mit 8 Pot`s. Die pot`s waren mir zu klein und die Tasten reichten nicht. So kam ich zu dem Entschluss mir eine selbst zu bauen. Ausgehend von der MBox 64 plante ich 64 Taster,jeweils mit eingebauter LED sowie 11 Fader. Nachdem ich mich mit meinem "schulenglisch" soweit schlau gemacht hatte bestellte ich mir bei Mike ein Core, ein LTC, ein AIN sowie jeweils 2 DIN und DOUT. Zusammenlöten klappte schnell und problemlos, jedoch gingen dann die kleinen probleme los, über den LTC ließ sich MIOS nicht aufspielen weil ich über nen UCS-seriell wandler ging. Nachdem ich mir ein USB-Midi adapter gekauft hatte ging es immer noch nicht, wie sich dann herausstellte war der Pic falsch programmiert worden. TK hat in für mich überprüft und neu gebrannt, dann klappte es. Mios ging rauf, jedoch bootete der Pic ca alle 3 sek neu, das lag daran das die Spannung anscheinend zusammengebrochen ist, netzteil von 7 auf 9V und es funktioniert. Nachdem soweit alles klappte wie es sollte hab ich mir gedanken gemacht über das Layout der Frontplatte und hab sie bestellt, das Gehäuse hab ich selber gebaut. Leider hab ich beim planen der Frontplatte den Rasterabstand der Platinen nicht berücksichtigt und musste beim Einbau der taster nen bisschen stückeln.... Momentan hab ich die Mbox 64 anwendung drauf, eventuell nehm ich auch die ain64_din128_dout128 da das Programmieren in C ja einfacher sein soll... Das einzige was ich nun noch machen muss ist die Anpassung der LED`s ich möchte sowas wie nen LED "toggle" haben, nur bin ich was programmierung in C oder asm angeht überhaupt nicht fit, da brauch ich dann sicherlich nochmal eure hilfe. Alles in allem hat der Aufbau aber, durch die super dokumentation und die Hilfe im Forum problemlos geklappt. Sooo nu gibts noch nen paar bilder, leider von der qaulität nicht so gut da ich sie mitm handy gemacht hab...
  22. Dankeschön fürt den tip mit der spannungsversorgung! Hab einfach die spannung an meinem netzteil von 7,5V auf 9V erhöht nu läufts ;)
  23. Hallo zusammen! ich bin dank thorstens hilfe nun schon nen stück weiter. Mein Core macht was er soll, ich habe ihn jetzt mit einem Ain verbnden an dem 11 Fader hängen. alle offenen eingänge hab ich auf Masse gelegt. Über vmidibox64 hab ich die fader so angepasst das sie jetzt volume werte senden sodas meine software sie erkennt.. Die Werte werden auch sauber ausgegeben. Nun hab ich das Problem das wenn ich den Core länger nicht am strom hatte, er nach dem Einschalten " F0 00 00 7E 40 00 01 F7 " sendet. Das sendet er ca alle 2 sekunden unterschiedlich lang. Währenddessen reagiert er nicht auf Eingaben über den AIN. Irgendwann hört er auf die sysex message zu senden und reagiert normal wie er soll.. wenn ich dann die stromzufuhr nur kurz unterbreche startet er ganz normal sendet einmal " F0 00 00 F0 00 00 7E 40 00 01 F7" und reagiert dann auf das AIN. Hat jemand schonmal nen ähnliches Problem gehabt und kann mir helfen?? Grüße aus dem Norden constantin
  24. geht am mo raus ! Vielen dank schonmal!
×
×
  • Create New...