-
Posts
15,253 -
Joined
Content Type
Profiles
Forums
Blogs
Gallery
Everything posted by TK.
-
Hi Jim, if the branch to MIDI_EVNT_Send is at the end of your function, the you should either use the "goto", or a "call" (like now) and thereafter a return. Don't forget the return or goto, otherwise undefined code (or the function below) could be executed at the end To the MIDI_EVNT0 problem: I noticed that the eight bit of the first byte is always masked out in the MIDIO_OUT_ENTRY macro (...(event_on_0)&0x7f...). This has some special reasons, but they don't matter in your case. You've two possibilities: 1) change the macro: MIDIO_OUT_ENTRY MACRO event_on_0, event_on_1, event_on_2, event_off_0, event_off_1, event_off_2 db event_on_0, event_on_1, event_on_2, event_off_0, event_off_1, event_off_2 ENDM 2) or set the eighth bit before this value will be sent out: bsf MIDI_EVNT0, 7 ;; set 8th bit (indicates a status byte) The reason why sm_example2 doesn't support the LCD is just that I wanted to achieve the highest performance. A display update on every button change would cost ca. 200-300 uS, it depends on your display and the number of characters... The DISPLAY_UPDATE_REQ flag is just a good method to prevent additional updates if some buttons are pressed at the same time (only the last button change will be visible on screen). There are methods to save performance (e.g. printing out one character only on every display tick), but I wanted to make this example so uncomplicated as possible ;-) You could copy&paste "USER_DISPLAY_Init" and "USER_DISPLAY_Tick" of the sm_example1 for debugging Best Regards, Thorsten.
-
Hi Robin, if the modules are already built, I would suggest the use of one core only for the 8x8 diode matrix (just use the sm_example2, nothing has to be changed), and the other core for the rest. This has the advantage that the button matrix will be scanned under best conditions (lowest latency). Yes, please update to MIOS V1.7, it always makes sense to use the most recent version (although in this case one hardware change is required: see update info page) Best Regards, Thorsten.
-
Hi Robin, maybe the button handler of MIDIbox SEQ is a good example, how dependencies between buttons and LEDs can be realized. See seq_buttons.inc and seq_leds.inc Best Regards, Thorsten.
-
Hi, could you please explain why you are assuming that it doesn't work? You wrote that you haven't connected a display, so maybe you just have misinterpreted the behaviour? Note that this SFB function has to be assigned to the same button(s) in every bank, otherwise you won't be able to switch back or to another bank once a bank without this SFB has been selected. Best Regards, Thorsten.
-
Hi, if MIOS responses on this SysEx request, it's definitely running. So, I guess that you either used the wrong ID in the PIC ID field (it should be 0000000000000000 in your case --- just all zeroes --- use the change_id application if you are not sure), or you must have a wiring/short circuit problem. Best Regards, Thorsten.
-
To 2: in this case not, the host expects common incremental/decremental events. So, you can use the same rotary encoder like for the V-Pots, but a bigger knob (datawheel) should be prefered Best Regards, Thorsten.
-
Um die Sache zum Abschluss zu bringen: die Ursache fuer das nicht Funktionierens des MIDI Ports war ein falscher Widerstand: statt mit einem 5.6k Ohm war das Core Modul mit einem 5.6 Ohm Widerstand bestueckt. Dieser niedrige Widerstand hat nicht nur dazu gefuehrt, dass der Arbeitspunkt des Optokopplers zu niedrig eingestellt war, und aus diesem Grund keine MIDI Daten uebermittelt wurden, sondern er hat den 6N138 komplett zerschossen. Im Debug HowTo stehen nun zusaetzliche Hinweise: Gruss, Thorsten.
-
So etwas hatten wir schon zweimal, in beiden Faellen lag es am Soundkarten Treiber (lass mich Raten: Kx Driver?) Die Funktion laesst sich mit einer Rueckkopplungsschleife ueberpruefen - Zitat aus http://www.ucapps.de/howto_debug_midi.html Gruss, Thorsten.
-
Hallo, super, klappt doch alles! :) Du koenntest entweder im main.asm die Anzahl der analogen Eingaenge reduzieren und anschliessend ein neues .syx bauen, oder - was wesentlich schneller geht - alle offenen analogen Eingaenge an Masse anschliessen. Also nicht nur die offnenen Eingaenge am AIN Modul, sondern auch die ungenutzten analog-Eingaenge am PIC (J5:A4-A7) Gruss, Thorsten.
-
understanding MIOS Structure and Bankstick usage
TK. replied to banneduser's topic in Design Concepts
Are you using the most recent MIOS release V1.7? In this case keep in mind that the wiring to the BankStick has been changed, see also http://www.ucapps.de/mios_v1_7_hardware_mods.html With the BankStick select SysEx command you are able to test if MIOS regognizes the BankStick or not (if not it isn't connected properly): What does your core module return on "F0 00 00 7E 40 00 03 00 F7"? Best Regards, Thorsten. -
Thanks SmashTV!!! :-) I've transfered some docs from ucapps.de to the Wiki which should be maintained by the community in the future. The official link is: http://wiki.midibox.org I would suggest that somebody also transfers most of the informations from the MIDIbox portal to the Wiki, so that it's easier to edit them. This pops up the question in which form we should continue with the portal, because it becomes redundant sooner or later and only makes it difficult to fetch the infos which are really interesting. Gallery: how should we proceed? Is there somebody who would like to help to transfer the official gallery to the new one? Best Regards, Thorsten.
-
Das funktioniert problemlos, mit welchem MIDI Controller hast Du es ausprobiert? Vielleicht kann der ja nur einen Parameter gleichzeitig senden? Am besten verwendet man einen Track Automation Splitter, um die CC#s in sogenannte Fader-Events umzuwandeln: Das hat den Vorteil, dass die eingehenden Daten auch automatisch in die Automation uebergehen (vorher den Touch Modus aktivieren) Wie der Snapshot eindeutig beweist, wurden zwei Parameter gleichzeitig uebernommen :) Gruss, Thorsten.
-
thanks pilo! :) Arumblack: this is just a toy, a demonstrator application which is implemented very simple in the hope that (experienced) programmers can enhance it for their needs. Of course, it can send SysEx when you program this into the code. It already can send any common MIDI event on any channel. It wasn't my intention to enhance this by myself in the future (I don't use it by myself...) Keep in mind that with MIDIbox64E a much more flexible application is already available. Although "64" implies that a lot of rotary encoders can be connected, this is no must, you can also connect a single encoder and switch between the 128 parameters per bank very easy with one or more special function buttons My suggestion: build a minimal control surface with 8 or more buttons, a rotary encoder and a LCD - and then play with the different applications. Don't begin with a case before the possibilities are clear for you, maybe you will change your mind and prefer another user interface. Best Regards, Thorsten.
-
Hi Jim, this will work. Now you can address each entry from the SM_NotifyToggle hook in the following way: SM_NotifyToggle ;; calculate address to table entry ;; set TBLPTR[LH] to base address TABLE_ADDR MIDIO_Presets_OffsetOut ;; add offset: 6 * 8 * column movf SM_BUTTON_COLUMN, W mullw 6 * 8 movf PRODL, W addwf TBLPTRL, F movf PRODH, W addwfc TBLPTRH, F ;; add offset: 6 * row addwf SM_BUTTON_ROW, W mullw 6 movf PRODL, W addwf TBLPTRL, F movf PRODH, W addwfc TBLPTRH, F ;; if button released, add 3 IFCLR MIOS_PARAMETER2, 0, rgoto SM_NotifyToggle_Pressed SM_NotifyToggle_Released movlw 3 addwf TBLPTRL, F movlw 0x00 addwfc TBLPRTH, F SM_NotifyToggle_Pressed ;; copy 3-byte entry to MIDI_EVNT* tblrd*+ movff TABLAT, MIDI_EVNT0 tblrd*+ movff TABLAT, MIDI_EVNT1 tblrd*+ movff TABLAT, MIDI_EVNT_VALUE ;; send MIDI event and exit goto MIDI_EVNT_Send I hope that the assembler passes and that this routine works - I haven't tried it Since the offset is calculated step by step and 8-bit overflows are avoided, more than 256 entries are possible Best Regards, Thorsten.
-
you only have to enhance the USER_AIN_NotifyChange hook in main.asm - the ain_example1 gives you some useful hints how to do this. Best Regards, Thorsten.
-
Hi, It displays the selected view, this means e.g. that the LCD doesn't automatically display the volume value if a volume event is received, this would make the device useless for common usage (imagine what would happen if the automation of Cubase sends a lot of parameters at the same time and you want to send an additional parameter - the LCD would jump to a lot of values and you wouldn't see what you are doing...) However, if your Behringer controller can send the same events like a Logic/Mackie Control, a MIDIbox LC could be an alternative, because it displays the messages sent by the host application. Sorry that I cannot give you any additional informations on this very complex topic, my time is currently very limited. Best Regards, Thorsten.
-
Everything is possible, but you have to program it by yourself, because nobody did something like this before. MIDIbox TC displays the sent MIDI messages, and not the received events. Maybe MIDImon provides better basics for such a project, but there is still a lot of stuff which has to be added so that it works like you've described it. I would estimate the effort for this to about 1/2 year: 3 months to learn assembler, one month to learn about MIOS, 1 month to learn how MIDImon works, 1 month to realize an application exactly for your requirements. To make it clear: there are two groups of MIOS users, one very very small group which implements or enhances applications based on their own plans, and another much bigger group which uses the premade stuff. There is no group which implements application on request. Best Regards, Thorsten.
-
http://www.spezial.de vertreibt die Maxim Chips in Europa, vor Jahren habe ich dort mal etwas bestellt, das ging problemlos. Damals konnte man die Produkte noch direkt in einem Onlineshop bestellen, das hat sich jedoch mittlerweile geaendert. Koenntest Du mal anfragen, wieviel der MAX525ACPP und MAX6007B kostet, und ob man auch kleinere Mengen bestellen kann? Zu den Samples: da ist so eine Sache... vor fuenf Jahren konnte man bei Spezial Electronic noch kostenlose Samples anfordern, und das hatte ich auf meiner Webseite auch bekannt gegeben - bis mich der Geschaeftsfuehrer in einer EMail darum bat, den Hinweis zu entfernen, da dieser Service hauptsaechlich fuer Entwickler und Studenten gedacht sei, und es fuer die Firma problematisch werden koennte, wenn immer mehr Leute dies ausnutzen wuerden. Die Bestellung von Samples von der Maxim-IC Homepage klappt wohl noch, aber auch dieser Service koennte eingeschraenkt werden, wenn immer mehr Leute darauf zurueckgreifen. Gruss, Thorsten.
-
Midibox 64 2.3 / Ableton Live / Soft-takeover
TK. replied to Captain_Hastings's topic in Design Concepts
If Live doesn't allow to disable the forwarding of incoming MIDI events, then you've a problem :-/ In Reaktor it is possible to disable the forwarding for each control element seperately: "Remote to MIDI" The forwarding does only make sense, if the MIDIbox sends relative events (special feature of MB64E), so that the LED rings get updated. Best Regards, Thorsten. -
You will find the table in lc_leddigits.inc, LC_LEDDIGITS_TABLE But remember that you need the updated version: http://www.ucapps.de/mios/midibox_lc_v1_5rc1.zip Best Regards, Thorsten.
-
understanding MIOS Structure and Bankstick usage
TK. replied to banneduser's topic in Design Concepts
The diagram is absolutely correct. You can switch to another bank with: special function buttons - but they are part of the SysEx dump, and therefore not available so long you haven't defined it in the midibox64.ini file a Program Change command via MIDI Channel 16 (can be sent with MIDI-Ox) a SysEx command via MIDI-Ox (F0 00 00 7E 43 08 <bank-number> F7 --- the first bank number is 00) A sysex dump will always be loaded into the current bank. So, to make it easy for you: just use the SysEx command for bank switching, and upload the .syx file into the bank thereafter. Best Regards, Thorsten. -
There are two problems, you have to rename "MB64E_META_Handler_10_End" by "MB64_META_Handler_10_End" (typing error), and you have to ensure that both labels are beginning at the first column. Best Regards, Thorsten.
-
Hi Jim, yes - I tried to keep this example simple, so that it's easier for you to get an oversight over this driver. it would be a big help for me and a good starting point for you. I assume that you want to add much more features in the future, therefore it makes sense that somebody else begins with the table integration (nice exercise) and enhances his code step by step. The SM_NotifyToggle is a hook which can also be placed into another include file where the MIDI routine starts. The table entry can be calculated from SM_BUTTON_COLUMN and SM_BUTTON_ROW I will create another example for 16x32 (DOUTxDIN sounds better: "16 times 32 inputs"), everything else only on request. Best Regards, Thorsten.
-
Hi Chris, during startup, MIOS captures the initial state of the shift register, waits for 1.5 mS and then clears all "changed" flags. Means: the internal MIOS registers are properly initialized with the button states, and the application won't get any change notification, regardless if the DINs are 0 or 1 MIDIO has a second set of DIN values which are used for the toggle mechanism. I must say that I oversaw the possibility to use the buttons in inversion and toggle mode, therefore I forgot to implement a proper startup reset for exactly this case. I will try this in the next days. Best Regards, Thorsten.
-
UPDATE: this programmer could fail on your PC, MBHP_BURNER is the most reliable solution Hi, Martin Haverland recently tried the Brocolli18 programmer to burn the MIOS bootstrap loader into the PIC18F452 - with great success! When you take a look to the schematic: you will notice that this is really a simple and cheap solution, and maybe much more stable than the good old, but sometimes troublemaking JDM. I would like to ask all experienced MIDIbox users for help! Could you please try this programmer with your computer and tell me if it works ok or not? If it turns out that this programmer works very stable, then I will discontinue MBHP_JDM and strongly suggest this solution in the future. So - please test it to make a lot of newbies happy :) an HowTo can be found here: http://www.midibox.org/cgi-bin/yabb/YaBB.cgi?board=troubleshooting;action=display;num=1088544230 The link to Brocolli18: http://home.earthlink.net/~davesullins/software/pic18f.html Please keep in mind that the LVP mode won't work (read the HowTo carefully) Best Regards, Thorsten. UPDATE: this programmer could fail on your PC, MBHP_BURNER is the most reliable solution
