
audiocommander
Frequent Writer-
Posts
1,358 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
Gallery
Everything posted by audiocommander
-
Hi Andy, you don't need to worry, you can't damage anything. Just try it ;) btw: I don't know about PCs, but for the Mac there is a program called "MidiClock" that is able to send a Master Clock. Maybe there's also a small tool like this for the PC... Regards, Michael
-
http://www.cadsoft.de/ It's on the download page, but you need X11 (install from the OS X CD or dl from apple). It's not a nice thing though, more a possibility :-\
-
All right, now I know why u have problems ;D As a first workaround I would suggest you go for the .syx-conversion and send it with SysExLibrarian*. I've set the timing (in the prefs) to 750ms pause between messages... *if you're on OSX; If you are running Windows on your IntelMac, I think this might be a more general problem that's OS-related, see this shortly posted problem: http://www.midibox.org/forum/index.php?topic=7939.0 Best, Michael
-
Hallo Matthias, ehrlich gesagt keine Ahnung; ich denke mal das ginge, wenn man die genauen Adressbereiche beachtet, wäre IMHO allerdings ziemlich umständlich und würde den größten Vorteil der MIOS-Midiboxen ignorieren... :-\ Du weißt, dass du die .hex-files auch mit dem hex2syx perl-script in eine .syx (sysEx)-Datei konvertieren kannst, die man auch mit anderen MIDI-Programmen auf den Chip laden kann? Zur MIOS-Konvertierung muss man -os_upload mit angeben: SYNTAX: hex2syx.pl <hex-file>.hex [<-device_id 0x..>] [<-bankstick <0-7>] [-os_upload] [-force] [<-debug>] Die SysEx-Datei kannst du dann z.b. mit Serges SysEx Loader oder (am Mac) mit dem SysEx Librarian oder wasweißichmitwasnochalles hochladen! Vielleicht geht's sogar mit MidiOx... Viele Grüße, Michael
-
Hi Andy :) welcome to the forums! No question is stupid if asked friendly like yours ;) The Midi timing by clock works on a Master/Slave relation, that means the tempo is set by the master and received by the slave(s). For example: - connect the MIDI-In port of computer A (running Reason) with - the MIDI-Out port of computer B (running whatever with MIDI-Clock signal). - Now configure your application on computer B to send MIDI clock to the output to Computer A. - In reason (computer A): open the prefs, under "Advanced MIDI" you'll find "Midi Clock Sync". - Choose the Port that is connected to Computer B. If Reason receives the Clock Signal, you'll see a green mark. - In the main window of Reason is a button "enable" (MIDI SYNC): that's all. The MIDI Clock Signal is not channel related, so once you have a signal on one port, it's done. I don't know how to send a midi clock from reason; you have to consult the manuals for the applications you use, how to send or receive a clock. If it isn't possible, you could run reason as rewire slave in Ableton Live; maybe one of your keyboards can send a clock? Hope this helps, best regards, Michael
-
just an add-on to what Twin-X said: go and download the C-Skeleton, open "main.c" and take a look at it. Then you could download some C-Examples and see what others programmed. It's really easy, if you know the C-Syntax. As MIOS is just supporting the functions listed in the MIOS-Function-List, it's a manageable set of options :) To bring your DOUT-Module to react to something, you will have to set some SRIO-(ShiftRegisterI/O)-Settings in the Init() Function... Just look through the function list with special interest for MIOS_SRIO_ and MIOS_DOUT_; maybe also MIOS_MIDI_ if you want to send MIDI-Messages! Best regards, Michael ps: http://www.midibox.org/dokuwiki/doku.php?id=application_development is also a useful resource...
-
Especially the combination of array + structure as parameter of a function call seems odd. From the Wiki: "Sometimes the transfer of an array between modules does not work properly" Have you seen the paranthesis-tipp? This could be related too! Well, someone found out that this makes problems, now it's in the tipps section. Of course, you could start reading the SDCC sourcecode to find out why it behaves this way and add a detailed explanation to the wiki, but I think for most people (incl. me) it's sufficient to say: "be aware, there could be a problem!" Now, instead of finding out how much RAM you have*, you could have tried if the solution about the array access solves your problem or not. So to say, normally there wouldn't be a compile error about this. It would be helpful to stay at the source of your problem and not drifting away... Your RAM-code does not help in this issue, esp. your conclusion of 512 bytes seems to be a result of the "Large Arrays" Problem which is described just below the "Array Access" Problem :-\ Anyway. After trying if the previous suggestion helps, it could be interesting for you to additionally read the following, if you're interested in the PIC specifications: -> the PIC Datasheet (Wiki Link) -> the MIOS Document Download Section -> MIOS RAM Handling.txt -> http://www.midibox.org/forum/index.php?topic=5962.0 * from the PIC Datasheet: PIC18F452 On-Chip Program Memory: 32K (FLASH), 16384 Single Word Instructions On-Chip RAM (bytes): 1536 Data EEPROM (bytes): 256 Regards, Michael
-
Hi, I think your problem is the variable access by an array index inside a function call (SDCC-related restriction): http://www.midibox.org/dokuwiki/doku.php?id=c_tips_and_tricks_for_pic_programming#array_access best regards, Michael
-
You could also go and buy a USB-Midi Device for 25 EUR to connect your MidiBox to...
-
Hex and Decimal Notation in C Source
audiocommander replied to jackchaos's topic in MIOS programming (C)
of course! Thank you for correcting this :) maybe I've been so in hurry, that I divided everything /2 ;D sorry for this misinformation; I cannot explain why I wrote that, 'cause in principle I should know it (heck I even use it all the time 0xf :doh!: ) Cheers! Michael -
Sharp GP IR sensor software/hardware implementation
audiocommander replied to cimo's topic in Design Concepts
the digital one provides just an ON/OFF signal (0 and 5V if I remember right), so to say a distance switch. therefore quite useless if you're not going to midify a pissoir flushing :-\ ;D -
Hex and Decimal Notation in C Source
audiocommander replied to jackchaos's topic in MIOS programming (C)
0x10 has the decimal value of 16 ( 0x10 = (2*8 + 1*0) ) ;) <edit> see below! Seppoman explains it right, and I'm the one who gets an F in his Math Exam... like always :-[ </edit> hex gets counted from 0 to 7 15 (as the name implies), decimal from 0 to 9 (dito)... as the computer treats all numbers in the last instance as binaries (0 or 1), it's upon you what makes more sense to use... eg. channel calculations are a lot easier to implement in hex than in dec. See http://www.midibox.org/dokuwiki/doku.php?id=midi_specification Regards, Michael -
I think so, yes. No, this should be done automatically for you, when you use double-quotes ("). Best regards, Michael
-
hey, nice to hear that :) I think some bucks for the right power supply are a good investment! Cheers! Michael
-
I don't know. All I know is that the specs for the Core say, that it can take up to 10Vs. 12Vs should be okay, too. Have you measured your transformer if it really just provides 16Vs? Often these power units deliver much more than what is printed on the device... and if it provides 18V (eg., you're alot above the maximum of 14V)... However, as a hot regulator can also have other reasons (bridges, wrong solderings)... I would try powering the Core with normal 9Vs and see if it still gets hot. Regards, Michael
-
from http://www.ucapps.de/mbhp_sid.html "The module requires a second power supply which delivers clean and stable 12V for the audio section of the 6581 chip." you're mixing up the Core-Module (all std. 5V, as DIN/DOUT/...) with the SID-module (12v audio). Cheers, Michael ;) Edit: and don't feel ashamed... stryd is a very friendly person ;D and we weren't really talking about you, we were just a bit amused about this philosophical question "how hot is too hot?" ;D... don't take it too serious! (and welcome to the forums, btw ;) )
-
You shouldn't power the Core with more than 9 V. Best is 7 V. I think you are a lucky man, if you didn't burn something ;) Cheers, Michael
-
NRPNs are also CCs ;)
-
Not sure if I understand you right, but if you're interested in a software-based HUI, you could check out MiniAudicle: http://chuck.cs.princeton.edu/ Although it's Mac OS X native, it's platform independent and if you're not afraid of typing some chars, you can quickly setup a windowed interface with default controls like knobs, sliders, buttons... But I have to mention, that this is only an option when using 3-byte-Midi-messages; chuck has some probs with 1 and 2-byte-midi-messages... Best regards, Michael
-
how do you use the C64 keyboard as midi controller?
audiocommander replied to bosone's topic in Design Concepts
Hi bosone, check out these: http://www.midibox.org/forum/index.php?topic=6505.0 http://www.midibox.org/forum/index.php?topic=7308.0 http://www.midibox.org/forum/index.php?topic=7434.0 Regards, Michael -
printing Bankstick memory on LCD
audiocommander replied to ilmenator's topic in MIOS programming (C)
There's a function implemented in the ACSim Debugger code that prints bankstick contents as Hex and ASCII to the console. Maybe this is adaptable to MIOS-apps. http://www.midibox.org/dokuwiki/doku.php?id=acsim_toolbox_c (link to sourcecode) **MIOS_BANKSTICK_WritePage at 0x0 0: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 16: 00 00 00 00 00 00 00 00 80 80 80 80 40 08 00 00 ............@... 32: 00 00 00 00 04 04 04 04 14 15 16 17 00 00 00 00 ................ 48: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ **MIOS_BANKSTICK_WritePage at 0x40 0: 08 08 08 08 00 00 00 00 04 04 04 04 00 00 00 00 ................ 16: 00 00 00 00 7f 00 00 00 40 40 40 40 7f 00 00 00 ........@@@@.... 32: 03 03 03 03 00 00 00 00 70 70 70 70 40 40 40 40 ........pppp@@@@ 48: 00 00 00 00 00 00 00 00 7f 7f 7f 7f 00 00 00 00 ................ Regards, Michael -
hi simone, it would be terrifying easy, if you'd assign two controllers (MSB & LSB, see examples). As I don't have no Midibox 64/e, I can't say if it's possible to hack the MB-application, but from what I remember having read here, this would require to rewrite some parts of the software and cannot be set in any .ini file. However, if you come to the conclusion that you can use two pots, just try it. It's nothing more than assigning the Controller to Ableton and turn ;) It might be, that Live is also accepting pitchBend (14bit by default); you could try that, if it would be of any advantage? Cheers, Michael
-
Will it work when you unplug the Midi Cables? And you haven't mentioned what application you're running. Regards, Michael
-
Hi cimo, I added some lines to the Wiki: http://www.midibox.org/dokuwiki/doku.php?id=midi_specification also see this overview: http://www.midi.org/about-midi/table3.shtml This is also an excellent page: http://www.borg.com/~jglatt/tech/midispec.htm for this topic see Non-registered Parameter or any CC. You'll find coarse (7bit only) and fine (14bit) for most controllers! If you want to send 14-bit by just one pot, you have to interpolate the readings. MIOS reads with 10-bit max (0..1024); MIDI 14-bit is from (0..16383) or from (-8191..+8192). Also see PitchBend at J.Glatts pages! Hope this helps, best regards, Michael :)
-
...forgot this: #pragma mark structDeclarations struct ZSMidiMessage { unsigned int message[3]; unsigned int destinationID; }; struct ZSMidiMessageQueue { struct ZSMidiMessage ZSMidiMessages[96]; unsigned int numberOfEntries; }; I think the code above is still too long to read; I picked up the most relevant lines in the code again: unsigned int timeIntervals[ZSTIMEINTERVAL_MAX]; // eg ZSTIMEINTERVAL_1 ... struct ZSMidiMessageQueue queue[ZSQUEUE_MAX]; -(void)scheduleMsg:(Byte*)msg { // schedule corresponding NOTE_OFF if(length > 0) { unsigned int noteOff = ((int) MIDI_NOTE_OFF) + channelOfMessage((int) msg[0]) - 1; Byte noteOffMsg[] = { noteOff, msg[1], msg[2] }; unsigned int newInterval = interval + length; if(newInterval > 96) { newInterval = newInterval % 96; } [self scheduleMsg:noteOffMsg quantizedFor:newInterval withLength:0 forDestination:destinationObject]; } } // add to queue unsigned int numberOfEntries = queue[timeUnit].numberOfEntries + 1; queue[timeUnit].numberOfEntries = numberOfEntries; queue[timeUnit].ZSMidiMessages[numberOfEntries - 1] = scheduledMsg; } #pragma mark CLOCK RECEIVER // after registering @ mc this is called 96 times / bar -(void)receiveClock { for(n=0; n<ZSTIMEINTERVAL_MAX; n++) { // eg: all "24" events get fired if clock is "0/24/48/72/96" // => 48 % 24 = 0 => also passt intervall 24 tester = [mc clock] % timeIntervals[n]; if(tester != 0) { continue; } else { timeUnit = timeIntervals[n]; } if(queue[timeUnit].numberOfEntries > 0) { // send packetList [destinationObject performSelector:@selector(processScheduledMIDIPacketList:) withObject:[NSData dataWithBytes:&outPacketList length:sizeof(outPacketList)]]; } // remove sent messages from queue queue[timeUnit].numberOfEntries = 0; } // loop next possible interval... } } -(void)processMIDIPacketList:(const MIDIPacketList*)inPacketList sender:(id)sender { if(! isMaster) { // receive clock 0xF8 // loop packets switch(inPacket->data[j]) { case MIDI_CLOCK: clock++; if(clock > 96) { clock = 1; } signalCounter++; if(signalCounter >= 24) { signal = YES; signalCounter = 0; // update bar bar ++; } } } I may add, that NOTE-ON signals already come synced; but you see the concept how the corresponding NOTE-OFFs are scheduled. I just have to call [self scheduleMsg:noteOffMsg quantizedFor:newInterval withLength:0] Michael