Jump to content


  • Posts

  • Joined

  • Last visited

About Bassman

  • Birthday 04/04/1953

Profile Information

  • Gender
  • Location
    London, UK

Contact Methods

  • Yahoo

Bassman's Achievements

MIDIbox Newbie

MIDIbox Newbie (1/4)



  1. Oh great, goyousalukis, if you don't have any I can get one and send it to you. Really grateful for your help. you're welcome to call or text me on 209 471 7039 thanks again.
  2. Hi, I'm in California but I'm happy to pay for the chip and any postage needed. Bassman
  3. Does anyone know where I can get a replacement pre-programmed PIC18F452? I had an accident with my Core8 board and need one. It does not need to be new, or maybe someone can burn the bootloader for me as I can get the Microchip easily enough? Thanks bassman
  4. Hi damiano, Thought I would reply as you have not had any help here. Easy method: Just turn on the Midi Merge in the Midibox64 and the Midibox will forward the notes on to the PC. So you just need to send the same note data that the Midibox sent. Fancy Method: If you want to remote control the buttons on your Midibox64 via Midi (which may be pointless if the easy method works out), read the file mios_tables.inc. Here you create the Midi events that will trigger the buttons. e.g. MIOS_MPROC_EVENT_TABLE ;; entry 0x00-0x0f (button Numbers) MT_ENTRY 0x9b, 0x00 ;; C -2 Button #1 MT_ENTRY 0x9b, 0x01 ;; C#-2 Button #2 MT_ENTRY 0x9b, 0x02 ;; D -2 Button #3 MT_ENTRY 0x9b, 0x03 ;; D#-2 Button #4 MT_ENTRY 0x9b, 0x04 ;; E -2 Button #5 MT_ENTRY 0x9b, 0x05 ;; F -2 Button #6 etc. That's not really difficult, but you will have to write some code into the main.asm file for the function USER_MPROC_NotifyFoundEvent at line 468. As an example I use this to toggle the buttons everytime a note on is received, rather than have Note On events holding on for ages until the Note Off (or Note On Vel 0) is received. It's a little crude but it works. USER_MPROC_NotifyFoundEvent movff MIOS_PARAMETER2, MIOS_PARAMETER1 ;; Put MIOS_PARAMETER1 into MIOS_PARAMETER2 (Note number) movf MIOS_PARAMETER3, W ;; Get Note velocity for switch skpz ;; If zero (Note Off) skip next command and just toggle it to be 1 movlw 0x01 ;; If >0 Make it 1 and toggle it to be 0 (pressed) xorlw 0x01 ;; Toggle it movwf MIOS_PARAMETER2 ;; Save it in MIOS_PARAMETER2 goto MB64_BUTTON_Handler ;; Activate the button and exit! Then you will have to re-assemble the code and send it into your Midibox using MIOS Studio. Anyway, surely sending the same Midi event, as the Midibox sent to your PC, from the second Midi device, into the Midibox with the Merge on will be the simplest thing to do. good luck Bassman
  5. It varies, depending on parts and how busy. Just study the list of orders and how far down the list you are, that's the best way. Or send him a message and ask. He's a first class person and it's a miracle he get's all the order out, he works very hard for us all. bassman
  6. I think the simpler Meta Event solution, though you do say you have it working now, is this single Meta Event. MB64E_META_Handler_00 ;; this example sends a SysEx string: F0 7f 00 06 vv F7 ;; Button set to Meta Event, ;; 1st parameter 00 (Meta Event 00) ;; 2nd parameter vv (mmc function Stop 01, Play 02, FFwd 03, Rewd 04, Rec 05 etc) call MIOS_MIDI_BeginStream ; begin stream movlw 0xf0 ; send 0xf0 call MIOS_MIDI_TxBufferPut movlw 0x7f ; send 0x7f call MIOS_MIDI_TxBufferPut movlw 0x00 ; send 0x00 call MIOS_MIDI_TxBufferPut movlw 0x06 ; send 0x06 call MIOS_MIDI_TxBufferPut movf MIDI_EVNT_VALUE, W ; send button value, stored in MIDI_EVNT_VALUE call MIOS_MIDI_TxBufferPut movlw 0xf7 ; send 0xf7 call MIOS_MIDI_TxBufferPut goto MIOS_MIDI_BeginStream ; end stream and exit This way, you can have as many MMC buttons as you want, just by making any button a Meta Event, parameter 1 - 00, and parameter 2 - the MMC command number. I'm thinking about the Shuttle problem, it's more complex. bassman
  7. I don't know what application you are using, but this is the way I did it in the MB64. In the file mb64_buttons.inc, around line 237, I changed the routine to this. MB64_BUTTON_OnOnly ;; when on: send button value defined in dump ;; when off: send nothing BRA_IFSET TMP1, 0, ACCESS, MB64_BUTTON_NotifyChangeEnd ;; turn off SR4 8 LEDs SET_BSR MB64_BUTTON_VALUES_SR0+3 setf MB64_BUTTON_VALUES_SR0+3 ;; save status of button rcall MB64_BUTTON_Hlp_SaveStat rgoto MB64_BUTTON_Send The shift registers that you want to affect is determined by the two lines, I wanted to use sr4. SET_BSR MB64_BUTTON_VALUES_SR0+3 setf MB64_BUTTON_VALUES_SR0+3 So in your case you want to affect sr1, so the two lines would look like this SET_BSR MB64_BUTTON_VALUES_SR0+0 setf MB64_BUTTON_VALUES_SR0+0 You can affect more than 1 shift register, by adding the two lines again, for every shift register you want to affect. For example; SET_BSR MB64_BUTTON_VALUES_SR0+0 setf MB64_BUTTON_VALUES_SR0+0 SET_BSR MB64_BUTTON_VALUES_SR0+1 setf MB64_BUTTON_VALUES_SR0+1 SET_BSR MB64_BUTTON_VALUES_SR0+2 setf MB64_BUTTON_VALUES_SR0+2 SET_BSR MB64_BUTTON_VALUES_SR0+3 setf MB64_BUTTON_VALUES_SR0+3 That would do all 4 shift registers. Bassman
  8. Yes, you are right. And the DOUT will respond the same. bassman
  9. Of course you can use a simple contact. Piano wire is good for making your own spring wire. Really the problem is figuring a way to mount whatever you are going to use, micro switches or simple contact wire. You don't want the connecting wires to connect to moving parts i.e. the pedals themselves, as the constant movement will quickly break the wire. bassman
  10. Oh sorry, I didn't know that the Guinness World Record people were the bastions of definitions. ;) I wonder why they chose Jazz Music for their contest? But I see you are in the 'descriptive definition' camp. Good luck with that! :) Anyway I deliberately didn't use the word 'rests'. bassman
  11. I would like to add to this discussion, by saying that there is no definition of music. There have been many attempts by composers, musicians, philisophers and laypeople. No definitions have met with any acceptance. Some may argue that at least it is sound. This is not the case, as in between the sounds are silences which are as much part of the 'music' as the sound(s). There does not have to be more than one sound (see plainsong), there does not have to be any sound (as in the score to a musical work that has never been played). This has led to the modernists, like Cage, pushing the boundaries, as if they are doing something new. But the point is, music is entirely subjective, as is all art, so that the statement "the definition of music", does not even satisfy the definition of the word 'definition'. There are two types of definitions: A descriptive definition provides to a term a meaning which is in general use. A stipulative definition of a term carries a meaning which a speaker wants it to convey for the purpose of his or her discourse. Thus, the term may be new, or a stipulative definition may prescribe a new meaning to a term which is already in use. A descriptive definition can be shown to be "right" or "wrong" by comparison to usage, but a stipulative definition cannot. Neither type of definition is satisfactory in this instance, and would raise an argument when an attempt is made to associate one or the other type with music, so that the debate about 'the definition of music' would never get started. Clearly, music cannot be defined. Hey, but it's fun trying! bassman
  12. That seems quite right. Yeah, converting them to 8n NOTE OFF events has it's advantages. I know, you're quite right, but when you have the chance, try monitoring the pitch bend events from different manufacturers. It's scary, (especially the 'big guys'). Well, of course, but there are definately (though only small) differences in implementations. Especially between Yamaha and Roland who seem to want to compete for 'leadership' in the MIDI.org bassman
  13. Well, I may be wrong, but it seems like only a small amendment is needed. This is the MIDIO128 code that does the converting. It's the first part of the midi scan within the MIDIO_MIDI_NotifyReceivedEvent routine, after a check is done for an All Notes Off CC. MIDIO_MIDI_Scan ;; if note Off event has been received, convert it to Note On with velocity == 0 movf MIOS_PARAMETER1, W andlw 0xf0 movwf TMP2 xorlw 0x80 bnz MIDIO_MIDI_Scan_NoNoteOff MIDIO_MIDI_Scan_NoteOff movlw 0x90 iorwf MIOS_PARAMETER1, F clrf MIOS_PARAMETER3 MIDIO_MIDI_Scan_NoNoteOff It then goes on to check ;; set TMP5[0] if the second byte shouldn't be checked; this is the ;; case for: ;; o Channel Pressure ;; o Pitch Bend and ;; set TMP5[1] if the value is located in second, and not in third byte ;; this is the case for: ;; o Program Change ;; o Channel Pressure and ;; if program change branch depending on MIDIO_CFG0_ALT_PROGCHNG then goes on to scan the DOUTs and then prepare a DIN Event and then Send it. It seems that if the start of the MIDIO_MIDI_Scan looked like this instead, then the conversion would not be done, and everything else would appear to be ok. MIDIO_MIDI_Scan ;These lines need to stay movf MIOS_PARAMETER1, W andlw 0xf0 movwf TMP2 MIDIO_MIDI_Scan_NoNoteOff But it seems too simple, so I'm probably wrong. bassman
  14. Yes I see that, but this is all 'under the circumstances' which, to me is not the best solution. As it stands, parsing all the midi in status bytes to be 9n, in case an editor has made them 8n, will work, obviously. But........we're giving up a whole midi command with 128 numbers! Maybe 8n status should be implemented properly, rather than being 'not supported'. It's original function may be lost in the 'forgotten world since synths began', but it is very useful. It, quite rightly provides a velocity, or sensitvity, for releasing a note. Many instruments are affected by this, Piano, reeds, percussion, vibraphone and anything with a damper etc. Even organs can have a nice 'chuff' effect when simulating the wind in the pipes being shut off. Now this may not be of interest to many in this beat box era, (which is ok too), but even from a 'techy' point of view, that's another 128 numbers we can use for control. Isn't that useful? Suppose you had a vintage keyboard that only sent 8n, you could have DOUT pins that ONLY that keyboard could control, if you didn't have the conversion to 9n. Or one core could send 8n and another 9n. They would both work perfectly as notes, but you would have some more control specific to one or the other. Just because everyone's doing the 9n thing now, doesn't mean we can't make use of both. bassman
  15. Stryd, I don't personally think that's the best solution. Some old midi gear only works with 8n status, so it needs to be there for those. LyleHaze, [tt]an on/off control handled by 0-127 would be <64=OFF, >63=ON.[/tt] This is ok for controllers that are strictly ON/Off such as Sustain Pedal. Even so, not all manufacturers have adhered to that, there are some that have implemented as 0=off >0=ON. Other controllers have a range 0-127 (0-7f H) and some like pan would be centered at 64 (40 H). There's no general rule here. Pitchbend has been implemented differently too. Some manufacturers have used 64 & 0 (40 & 00 H) for center and sent true 14 bit messages, many have 64 & 64 (40 & 40 H) as center and increment/decrement both bytes equally. According to midi.org ; [tt]Pitch Wheel Change. 0mmmmmmm This message is sent to indicate a change in the pitch wheel. The pitch wheel is measured by a fourteen bit value. Center (no pitch change) is 2000H. Sensitivity is a function of the transmitter. (llllll) are the least significant 7 bits. (mmmmmm) are the most significant 7 bits. [/tt]. They claim 2000H as center. They all seem to work though. Try running various brands pitchbends through midiox and you'll see. Then, there's what midibox actually does with midi. If we're looking an overall 'rule', we're not going to find it. Just because midi.org set themselves up as the 'midi standard' creators, doesn't mean everyone follows that. Some think their way is best and want to be rebels. Sound familiar? ;) bassman
  • Create New...