
bosone
Members-
Posts
393 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
Gallery
Everything posted by bosone
-
secondo me la applicazione da usare è la MIDIO128
-
unfortunately, that joystick will be replaced... even if the look is marvelous! ;-) but perhaps i will take the pots from the 10K joystick that i'm waiting and will mount them onto this one... the top button was not connected, even if in principle i could take the wires and solder them in a AIN input... but i didnt fell that that button was usable, so i didnt connect it!
-
just to know a little more... the 128 encoder events and 64 buttons are used regardless of how many physical encoder are acutally used? theoretically, since i have only 16 buttons/16 encoders, could i "free" some memory and use it for the snap, by deleting the 128-16 encoders that are acutally not-existent? ot the memory location for all the 128 encoder are always used even if only a single encoder is mounted?
-
sorry for having upset you! :-) i was thinking that you referred to the choice of snap/parallax/relative mode, the menu handling and so on. i took a look at the code and i tseemed to me that the things to do, in order to add the snap mode behaviour by default, were just to copy some lines... now i understand that things are more complicate (even if i don't understand!!) because perhaps of the different mios basic routines for mb64e...
-
hi i'm trying to modify mios code to handle the snap mode (only this) in the midiobox64E. i have take a look at both mb64_pots.inc and mb64e_fader.inc files, which seems to me that handle the pots value. the routines are very similar, and i tried to "merge" the snap functions from mb64_pots.inc into the mb64e_fader.inc so i added a call to the routine that do the snap mode in the section which sends the midi events ;; process snap mode call MB64E_FADER_Conv ;; branch to the end if zero bit set bz MB64E_FADER_Send_End and removed the following two lines ;; store new value call MB64E_FSR_FaderValue movff MB64E_FADER_NEW_VALUE, INDF0 ;; -------------------------------------------------------------------------- ;; This function is used to send a fader value ;; Input: ;;   o fader number in MB64E_CURRENT_ENTRY ;;   o absolute position in WREG ;; -------------------------------------------------------------------------- MB64E_FADER_Send ;; store current position in TMP1 movwf TMP1 ;; scale value depending on Min/Max entry ;; calc address to Min/Max entry: call MB64E_ADDR_FaderEntry ;; select the 3rd byte movlw 3-1 addwf MB_ADDRL, F ;; scale value: ;; copy min value to MB64E_ENTRY_MIN_VALUE ;; copy max value to MB64E_ENTRY_MAX_VALUE ;; move fader value to WREG call MB64E_BANK_Read movff WREG, MB64E_ENTRY_MIN_VALUE call MB64E_BANK_Read movff WREG, MB64E_ENTRY_MAX_VALUE movf TMP1, W call MB64E_FADER_ScaleValue ;; store result in MB64E_FADER_NEW_VALUE movff WREG, MB64E_FADER_NEW_VALUE ;; get pointer to FADER_VALUE_xx register call MB64E_FSR_FaderValue ;; store value in MB64E_FADER_VALUE movff INDF0, MB64E_FADER_LAST_VALUE ;; copy the new value into this location for the next call movff MB64E_FADER_NEW_VALUE, INDF0 ;; if new value == old value, branch to the end SET_BSR MB64E_BASE movf MB64E_FADER_NEW_VALUE, W, BANKED xorwf MB64E_FADER_LAST_VALUE, W, BANKED bz MB64E_FADER_Send_End ;; process snap/relative mode call MB64E_FADER_Conv ;; branch to the end if zero bit set bz MB64E_FADER_Send_End ;; send MIDI value call MB64E_MIDI_SendFaderEvent ;; clear request fader pos update bcf MB_STAT3, MB_STAT3_FADER_UPDATE_REQ ; bcf MB_STAT3, MB_STAT3_FADER_SOFT_UPDATE_REQ ;; request display update bsf CS_STAT, CS_STAT_DISPLAY_UPDATE_REQ ;; reset the cursor of the CS call CS_MENU_ResetCursor MB64E_FADER_Send_End return and then i copid the complete routine that handles the snap mode. i changed all the names of the variables from "pot" to "fader" and also the routine labels from "mb64" to "mb64E". the code is assembled without error, but it doesnt work... it seems that the snap routine is never called... i also tried the relative routine (copied too in the inc file) but neither this seems to work. (note that i inserted a "rgoto" function which use by default one of the two routine - snap or relative). could you please help me? i think that there is something else to be considered, which is behiond my understanding of the code!! ;; -------------------------------------------------------------------------- ;; This function processes the new FADER value ;; Input: ;;   o number of current FADER in MB64E_CURRENT_FADER ;;   o last value in MB64E_FADER_LAST_VALUE ;;   o new value in MB64E_FADER_NEW_VALUE ;;   o min value in MB64E_FADER_MIN_VALUE ;;   o max value in MB64E_FADER_MAX_VALUE ;; Output: ;;   o processed/converted value in INDF0 ;;    zero bit cleared when the value should be sent ;; ;;   taken from MB64E_pots.inc, only the snap or relative mode here is used by default ;; -------------------------------------------------------------------------- MB64E_FADER_Conv ;; get pointer to FADER_VALUE_xx register (the active value) ;; (controlled from MB64E if snap bit is set, or via MIDI) call MB64E_FSR_FaderValue ;; if soft takeover flag already set, jump to the end IFSET INDF0, 7, rgoto MB64E_FADER_ConvBypass ;; jump to the end if active value == new value movf INDF0, W xorwf MB64E_FADER_NEW_VALUE, W, BANKED bz MB64E_FADER_ConvBypass rgoto MB64E_FADER_ConvRelative ;; ------------------------------------------------------------------ MB64E_FADER_ConvSnap ;; "snap" mode selected: "soft-takeover" ;; branch depending on clockwise or counter clockwise turn ;; means: last value <= new value movf MB64E_FADER_LAST_VALUE, W, BANKED IFLEQ MB64E_FADER_NEW_VALUE, BANKED, rgoto MB64E_FADER_ConvSnap_CClockwise MB64E_FADER_ConvSnap_Clockwise ;; FADER has been moved clockwise ;; exit if if new value <= active value movf INDF0, W IFLEQ MB64E_FADER_NEW_VALUE, BANKED, rgoto MB64E_FADER_Conv_DontSend ;; exit if active value >= last value IFGEQ MB64E_FADER_LAST_VALUE, BANKED, rgoto MB64E_FADER_Conv_DontSend ;; else continue rgoto MB64E_FADER_ConvBypass MB64E_FADER_ConvSnap_CClockwise ;; FADER has been counter clockwise ;; exit if if new value >= active value movf INDF0, W IFGEQ MB64E_FADER_NEW_VALUE, BANKED, rgoto MB64E_FADER_Conv_DontSend ;; exit if active value <= last value IFLEQ MB64E_FADER_LAST_VALUE, BANKED, rgoto MB64E_FADER_Conv_DontSend ;; else continue rgoto MB64E_FADER_ConvBypass ;; ------------------------------------------------------------------ MB64E_FADER_ConvRelative ;; "relative" mode selected: ;; clear snap bit (will be set independent from last status) bcf INDF0, 7 ;; calculate difference between last and new value movf MB64E_FADER_LAST_VALUE, W, BANKED subwf MB64E_FADER_NEW_VALUE, W, BANKED ;; add difference to active value addwf INDF0, F ;; saturate: IFSET WREG, 7, rgoto MB64E_FADER_ConvRelative_CCW MB64E_FADER_ConvRelative_CW movf 0X7F, W, BANKED IFSET INDF0, 7, rgoto MB64E_FADER_ConvRelative_Max IFLEQ INDF0, ACCESS, rgoto MB64E_FADER_ConvRelative_Cont MB64E_FADER_ConvRelative_Max movwf INDF0 rgoto MB64E_FADER_ConvRelative_Cont MB64E_FADER_ConvRelative_CCW movf 0X00, W, BANKED IFSET INDF0, 7, rgoto MB64E_FADER_ConvRelative_Min IFGEQ INDF0, ACCESS, rgoto MB64E_FADER_ConvRelative_Cont MB64E_FADER_ConvRelative_Min movwf INDF0 rgoto MB64E_FADER_ConvRelative_Cont MB64E_FADER_ConvRelative_Cont rgoto MB64E_FADER_Conv_Send ;; ------------------------------------------------------------------ ;; ------------------------------------------------------------------ MB64E_FADER_ConvBypass ;; save new value in active value movff MB64E_FADER_NEW_VALUE, INDF0 ;; ------------------------------------------------------------------ MB64E_FADER_Conv_Send ;; set snap bit bsf INDF0, 7 iorlw 0xff ; (clear zero bit) return ;; ------------------------------------------------------------------ MB64E_FADER_Conv_DontSend andlw 0x00 ; (set zero bit) return the rest of the mb64e_fader.inc is the same thank you!
-
checki the PM! ;D thanks!
-
uhm... that is not encouraging!! :-) anyway, what i'd be interested into is only adding the snap mode by default (i.e. the analog pots always behaves in that mode) for the pots of my midibox 64e... i guess that the code to be used is this one (from mb64_pots.inc): MB64_POT_ConvSnap ;; "snap" mode selected: "soft-takeover" ;; branch depending on clockwise or counter clockwise turn ;; means: last value <= new value movf MB64_POT_LAST_VALUE, W, BANKED IFLEQ MB64_POT_NEW_VALUE, BANKED, rgoto MB64_POT_ConvSnap_CClockwise MB64_POT_ConvSnap_Clockwise ;; pot has been moved clockwise ;; exit if if new value <= active value movf INDF0, W IFLEQ MB64_POT_NEW_VALUE, BANKED, rgoto MB64_POT_Conv_DontSend ;; exit if active value >= last value IFGEQ MB64_POT_LAST_VALUE, BANKED, rgoto MB64_POT_Conv_DontSend ;; else continue rgoto MB64_POT_ConvBypass MB64_POT_ConvSnap_CClockwise ;; pot has been counter clockwise ;; exit if if new value >= active value movf INDF0, W IFGEQ MB64_POT_NEW_VALUE, BANKED, rgoto MB64_POT_Conv_DontSend ;; exit if active value <= last value IFLEQ MB64_POT_LAST_VALUE, BANKED, rgoto MB64_POT_Conv_DontSend ;; else continue rgoto MB64_POT_ConvBypass ;; ------------------------------------------------------------------ MB64_POT_ConvBypass ;; save new value in active value movff MB64_POT_NEW_VALUE, INDF0 ;; ------------------------------------------------------------------ MB64_POT_Conv_DontSend andlw 0x00 ; (set zero bit) return that is to be included, in some way, into mb64e_fader.inc in this position: ;; -------------------------------------------------------------------------- ;; This function is used to send a fader value ;; Input: ;;   o fader number in MB64E_CURRENT_ENTRY ;;   o absolute position in WREG ;; -------------------------------------------------------------------------- MB64E_FADER_Send ;; store current position in TMP1 movwf TMP1 ;; scale value depending on Min/Max entry ;; calc address to Min/Max entry: call MB64E_ADDR_FaderEntry ;; select the 3rd byte movlw 3-1 addwf MB_ADDRL, F ;; scale value: ;; copy min value to MB64E_ENTRY_MIN_VALUE ;; copy max value to MB64E_ENTRY_MAX_VALUE ;; move fader value to WREG call MB64E_BANK_Read movff WREG, MB64E_ENTRY_MIN_VALUE call MB64E_BANK_Read movff WREG, MB64E_ENTRY_MAX_VALUE movf TMP1, W call MB64E_FADER_ScaleValue ;; store result in MB64E_FADER_NEW_VALUE movff WREG, MB64E_FADER_NEW_VALUE ;; get pointer to FADER_VALUE_xx register call MB64E_FSR_FaderValue ;; store value in MB64E_FADER_VALUE movff INDF0, MB64E_FADER_LAST_VALUE ;; copy the new value into this location for the next call movff MB64E_FADER_NEW_VALUE, INDF0 ;; if new value == old value, branch to the end SET_BSR MB64E_BASE movf MB64E_FADER_NEW_VALUE, W, BANKED xorwf MB64E_FADER_LAST_VALUE, W, BANKED bz MB64E_FADER_Send_End ;; store new value call MB64E_FSR_FaderValue movff MB64E_FADER_NEW_VALUE, INDF0 ;; send MIDI value call MB64E_MIDI_SendFaderEvent ;; clear request fader pos update bcf MB_STAT3, MB_STAT3_FADER_UPDATE_REQ bcf MB_STAT3, MB_STAT3_FADER_SOFT_UPDATE_REQ ;; request display update bsf CS_STAT, CS_STAT_DISPLAY_UPDATE_REQ ;; reset the cursor of the CS call CS_MENU_ResetCursor MB64E_FADER_Send_End return however, i make a lot of confusion when i try to understand what the code exacly does... and where to insert the new code... moreover, if i use new variables or subroutines, i feel that i have to declare them somewhere and to assign memory locations..... maybe, i could use variables needed for the motorfaders/touchsensors, which i don't use perhaps in appdefines.h (which for me is a nightmare!!!!) some help!??!
-
i am looking for a cheap joystick to include in my midibox. i see that someone bought them at elfa, but my problem is that, while the joystick cost around 10 euro, the shipping to italy is 40... a bit too much... so if someone has the possibiliy to buy for me a joystick (for the price more or less than the one above!), and then send it to italy at a cheaper price, i would be very very happy..... i can pay with paypal, and will be very grateful!!! :-) please, in the case, contact me directly be email at matteo at alchemy studio (without space) DOT it
-
just a question: in midibox 64E, along with the encoder, i mounted also analog pots. but: is there a specific reason why in this mios release it was not included the pot behaviour like in the midibox 64? (snap/relative/parallax mode) i was thinking of trying to port the changes from MB64 to MB64E, in order to get pot behaviour also here... did someone already did that? i did a rapid search and found that the pot behaviour reference appears only in: app_defines.h cs_m_potmode mb64_lcd mb64_pots if i make the changes only in these parts of the routines, will it work?
-
only one ledring for multiple encoder?!
bosone replied to bosone's topic in MIOS programming (Assembler)
the connections are the one indicated in hte schematic. only one ledring is presetn: the cathode to SR1, and the 11 leds to SR 3 and 4... -
problems with META events and double notes
bosone replied to bosone's topic in MIOS programming (Assembler)
thanks! now it works and it's good i use MIDI_EVNT_VALUE as you said and the first note on event is correctly sent. this is sufficient for the sonar automatin. but a minor problem is that the note is not turned off... the note off routine (when i have also used MIDI_EVNT_VALUE ) sends a note off to C0 (i suppose it send the midi note number 0x00). ... why?? anyway, this is not so important! it'0s just to understand a little more! -
only one ledring for multiple encoder?!
bosone replied to bosone's topic in MIOS programming (Assembler)
-
i tried to recycle an old PC analog joystic and to mount it into my midibox. as some of you would remember, i had to amplify the joystick signal by 10 times. so i "powered" the joystick with 8 volt, and took the ouput (0-1 V) to a lm324 amplifier, then to the midibox ain. the problem is that i have a LOT of flickering, and the joystick is almost unusable... the pot values oscillates araound the midi CC values of about +/- 15 ex with the joystick stopped in a particular position, i get CC random values between 60 and 90!! is there a way to reduce this flickering? (even a software "filter"?) i try to mount both 10K pots and 100K pots on the joy, but nothing changed.... with the 100K pot the maximum resistance the pot is measuring is 11-12 KOhm... any ideas???
-
my new midibox is up and running, but i have some ptoblem in customizing meta event to get double notes to control sonar. i know that there are some preset already done, but i'd lokle to change them to adapt to my setup. in particular, i want to send a double note event like G10 (sonar remote trigger) + f#10 (remote command, play, for example) i opened the meta.inc file, and found this handler: (i omit the non-interesting parts...) MB64E_META_Handler_08 ;; META Event: "F0 0x" (enc) or "F0 0x 36 @OnOff" (Button - 36 may vary and is the second MIDI note) ;; x = 08 to 0F in the previous, it seems that if i vary the "36" i can send different second control notes ok, let's go ahead... MB64E_META_Handler_DoubleNoteOn ;; NOTE ON movlw 0x90 ; send 0x90 (Note On Header, channel 0) call MIOS_MIDI_TxBufferPut movlw 0x7f ; send 0x7f (g10) -- cakewalk needs this as MIDI Remote indicator call MIOS_MIDI_TxBufferPut movlw 0x7f ; send 0x7F (velocity) call MIOS_MIDI_TxBufferPut in the previous i send the first note, the g10 that i need to start the remote control of sonar. movf MIDI_EVNT1, W ; send content of second byte (08-0f) call MIOS_MIDI_TxBufferPut movlw 0x7f ; send 0x7F (velocity) call MIOS_MIDI_TxBufferPut rgoto MB64E_META_Handler_DoubleNoteEnd for what i understand, here it load the second byte of the meta event (the 08-0f) and send it as a midi control note. BUT....... in the beginning it seemed that i could change the note with the "36" in the meta event... remember? "F0 0x 36 @OnOff" (Button - 36 may vary and is the second MIDI note) instead, the routine sends the 08 as the midi note!!!! (the byte that labels thi particular meta handler!) how can i send the "36" as the note number midi event?!? i tried in a lot of different manners, but without success... help! :)
-
almost 6 hours of soldering of my new midibox....................... i'm VERY VERY VERY tired.... an di think that tomorrow i have to work for another 2-3 hour to finish... hoping that all the connections wil be all right!! ;-)
-
Hi! in the new midibox unit that i'm, building i will integrate my breath controller (BC) unit, designed years ago. this time, the BC unit will be inside the box, with a connector to the breath sensor. the BC PCB is powered by a circuit similar to the core one, but with 8V instead of 5. the main power supply will be the same for both core and BC. but i want to keep the power units separate, in the sense that the main supply will power in parallel the core and the BC. the other solution would be to connect first the BC and then, from its 8 volt, the core. but i'm not sure about the current required (ince this time i have a backlit LCD) and i fear that the 78L08 used in the BC will heat too much. so, the "big" question is: should i connect the two grounds of the core and of the BC?? i think that this would be a good idea... i'm wrong? beside this, i'm using the 8V from the BC to power up a simple gain circuit (made with a LM324) that will "boost" the signal acquired form an old PC recycled joystick, that will be connectec to 2 analog in of the AIN module. i fear that, if the two grounds are not connected, there could be some problems in the accuracy of the analog signal that will come to the AIN module from the joystick... thanks for the comments! :-)
-
i found this one http://www.wiseguysynth.com/larry/ribbon/ribbon.htm it seems a work in progerss... and also this one http://www.angelfire.com/music2/theanalogcottage/ribcontr.htm it seems not too difficult to build one...
-
yesterday i was trying to update my sid with some change in MIOS code. my sid is connected via midi thru to a korg 01RW, so the sysex (from midox) message arrives first to the korg and then are directed to the sid. it happen the following: i uploaded the mios to SID, turned off, turned on, and...... NOTHING! the LCD was "black" (no writings), even if it was powered up and there was no MIDI data sent to the PC (normally the sid send a program change message i remember). the leds were not working.... the sid unit was apparently dead!! i tried both to reload the mios 1.7 code and several mios applications... nothing!!! fortunately, i had another PIC ad hand, and change it. i also connected the sid directly to the soundcard midi out (no more korg this time). and now everything was running again like before... so it was not an hardware problem.... i have still to try to reburn the code in the old PIC with the JDM module and see what happen... but the big question is: how could this happened?? can a "wrong" sysex message during MIOS uploadin destroy the PIC code? it was the first time i upload the mios passing thru the korg 01RW (I own this synth since few weeks...), maybe it's its foult...
-
only one ledring for multiple encoder?!
bosone replied to bosone's topic in MIOS programming (Assembler)
ahaha!! :-) thorsten, you are right! i try always to achieve the maximum i can with the minimum expense... also this is part of the funny to build the midibox! :-) there is always the behringer BCR control to buy, if one wants the simple things!!! (this topic could also be name: "one ledring to rule them all".... i'll throw my MidiBox in the flames of Mount Doom... ;-) ) -
i'm currently building my new midibox, and i will mount both 16 pots and 16 encoders. but i have decided not to mount 16 ledring for each encoder (TOOOO much work...), and to use them without indication. but i was thinking this: is it possible to mount only one "ledring" (in the form of a meter... i.e. not a "ring" but several led in a straight line) and assign this only one ring to every encoder? my idea is that, when i move an econder, this single ledring will monitor the state of the encoder that i'm moving.... swithcing its state depending on the encoder used in that moment.... i will not monitor the status of every encoder, but only see a single encoder value...
-
i finally came to the conclusion that using a rail to rail op amp would be the best solution. in this way, i can make a switch to choose between the joystick or 2 normal 10K pots. unfortunately, my search for a cheap joystick controller with 10K pots did not succed. i looked at elfa seller (http://www.elfa.se/en/) but while the joystick cost 11 euro, shipping is 30, so it is not viable...... so, the final question: which kind of rail to rail opamp with 2 separate input should i look for?
-
actually i was reather optimistic.... i managed to finally mount the joystick with the appropriate 10K resistors, and measured with an ohmmeter. the range of the pots is about 0-1.3K ohm. i know it is very small, but i cannot arrange the mechanism in any other way. anyway, the joystick will be only an addition, and it dont need to be extremely precise. i even looked for other kind of 10K pots, with limited range, but i didnt find them... so, i hope to find a software solution. i think that multipling the analog input by 8 could work.
-
i finished to build the case for my new midibox. it's all in wood, and it will mount a plexiglass front panel witha ll the knobs (16 encoder, 16 pots recycled from my "old" midibox), an analogue PC joystick and the connection for external 0-10 Kohm / 0-5V sources. this is my old midibox: http://www.alchemystudio.it/Foto/Hardware/MidiBox1.JPG http://www.alchemystudio.it/Foto/Hardware/MidiBox2.JPG it is powered by the same power supply of my masterkeyboard, as i explained in this post http://www.midibox.org/forum/index.php?topic=2711.0 now, this is the new wood case (still to be painted) (dimension are approx 42*18, height about 12 cm): and i managed to build an "extension" which will permit me to mount a reading stand in this way: since this box will be placed above my masterkeyboard. now, some soldering has to be done! ;-)
-
perhaps i was not clear: the pots will be rated 10K, but they will work at half their range (let's say, they will do only hald turns instead of full turns...)