Jump to content

Phatline

Members
  • Posts

    1,277
  • Joined

  • Last visited

  • Days Won

    71

Everything posted by Phatline

  1. does anyone already built a footprint for this? http://cdn-reichelt.de/documents/datenblatt/C200/DIT1_DTL2%23ITT.PDF
  2. if i had, i would, i could ... program something for it - the code is pretty much done, on one place there is this "MIOS no FPU" float point math problem till now (Velocity Offset Controller "0effekt - full effekt -scale") the 4row x 8 Format, i like, because in Overview-Map Mode/mixer-mode, i have 8Channels a 4 Controlls, which is pretty standart for many cases. when using 16x2 for example having only 2 Controls on 16 Channels - 8 are enough... 16channels are a bit to much... when thinking of the arrays in the background... a motionsequencer array for example [16][32][256] or [8][32][256] - (channel, cc, steps) makes some difference in ram. - i had longer sequences with 512 steps - but ram say no... - so for me a olre8 make more sense. multicolor with much more segments led-rings, i would show the actual Velocity/MSQ Effect on CC in different color in realtime, also would give the different maping-modes different Ledringcolors (deep-edit/overview-mode), would also add oled display to describe the function of encoder - because when affort a olre16 it makes sense to take a bit more money in hand to give them displays... but i have some finance crisis, because driving south with my girlfriend - eating my last money , dont think i can effort a olre16
  3. this video has 2 parts: 1: what the device is & does 2: a stop motion film -filmed while i was building and programming the device, with music from our band "crimic" track named "neruda" more info @ wiki: http://wiki.midibox.org/doku.php?id=msq-cc-lre&s[]=msq MSQ_CC_LRE stands for Motion Sequencer for Midi-Control-Change with the LRE8x2 Ledring-Userinterface there are more varations of this tool, one is with a generic BCR2000... there is a wiki for all necessery stuff: http://wiki.midibox.org/doku.php?id=msq-cc-bcr&s[]=msq this Variant is hardcodet for the Nordrum2, but since the CC-Maping is arranged in an Maping-Routing-Array, it can be changed via SourceCode - which is easy done when you know a bit C-Programming. there will be also a simple MSQ_REC - which is reduced to 4Channels, which only Records and Playbacks CC of 4 MidiChannels x 128CC - a CC-Looper, without the functionality of Storing CCs itself ... i will build it for the clavia Nord Rack III - since it has ledrings and encoders - its the berfect synth for that. 8Pushbuttons, 4Ledbars, 4 encoders and done. so this is what have done, and what will be done ;)
  4. hei. the only float calculation i have is - sadly on a frequently used place (every 32th step 32*8 values) --- the calculation should add and substract Velocity to (all) CsC, depending on: the currently Received Midi-Note-On-Value (Velo_From_Note) the Assign-CC-Matrix: which and if a CC should be addet or subtract a specified ammount of Value. where Value 63 should end up with +-0, and 0 to -64, 127 to +64 (beat[port].Velo_Morph[x]-64.0) the Velocity Morph Offset Controller, which when turned of, should minimize the effect from above parameters to minimal, while on MAX the Offset should have full effect (beat[port].Velo_Morph_Offset) working float code: static float value = 0; static float morph = 0; // calculate CC Value morph = (((Velo_From_Note[port]/127.0) * (beat[port].Velo_Morph[x]-64.0)) / 64.0) * beat[port].Velo_Morph_Offset; int morphint = morph; value = value + morph; if(value <= 0) { value = 0; } // only in a range of 0-127 if(value >= 127) { value = 127; } // only in a range of 0-127 int valueint = value; i was trying out bitshifting in high atmosphares (S32 integers), but in reality it did not worked out, i was in maths really bad, and up to now its a pain in the...for me. not working for example: static u32 value = 0; static s32 morph = 0; morph = // to get to full u8 range // no need to shift we need half (( (( (Velo_From_Note[port] << 1) * (beat[port].Velo_Morph[x]<<8) )>>8) * (beat[port].Velo_Morph_Offset<<9))>>24); value = value + morph; if(value <= 0) { value = 0; } // only in a range of 0-127 if(value >= 127) { value = 127; } // only in a range of 0-127 maybe there is some integer-expert workaround BRO out there who can help?
  5. welcome to the club - i see it everyday... i did not solve the error, nor do i understand it. all i know that when i add additional my own task like xTaskCreate(TASK_FLAG, (signed portCHAR *)"FLAG", configMINIMAL_STACK_SIZE, NULL, PRIORITY_TASK_FLAG, NULL); // my own tasks jobs to do } i got the same error argument 2 is only the name? and name no matters? (think i read that anywhere)... so stack size and priority should have effect. EDIT: but it still sucks that the compiler is crying each time i compile... when compiling 100 of times a day ...
  6. Phatline

    LoopA Ports

    like the whole things, the foots! a blm port! even a Reset-Switch (bootloader?) and pedals (for record? while playing piano?)
  7. ahhh sorry, may fault... what i have done with J10A-B (if you replace J10 with J5 i think its the same) @top of programm (declaration) // ENCODER SR begin with 1, ENC with 0) // setup the Pinout of Encoders const mios32_enc_config_t encoders[1] = {{ .cfg.type=DETENTED2, .cfg.speed=FAST, .cfg.speed_par=3, .cfg.sr=7, .cfg.pos=0 }}; void APP_Init(void){ BLM_SCALAR_Init(0); // initialize BLM_SCALAR driver // Set GPIO @ J10A+B int pin; for(pin=0; pin<16; ++pin){ MIOS32_BOARD_J10_PinInit(pin, MIOS32_BOARD_PIN_MODE_INPUT_PU);} // Set Menue Encoder int enc; for(enc=0; enc<4; ++enc) { mios32_enc_config_t enc_config = MIOS32_ENC_ConfigGet(enc); enc_config.cfg.type = DETENTED3; // see mios32_enc.h for available types enc_config.cfg.sr = 0; // must be 0 if controlled from application enc_config.cfg.pos = 0; // doesn't matter if controlled from application enc_config.cfg.speed = FAST; enc_config.cfg.speed_par = 0; MIOS32_ENC_ConfigSet(enc, enc_config);} } void APP_SRIO_ServicePrepare(void) { // get current J10B value and update all encoder states int enc; u16 state = MIOS32_BOARD_J10B_Get(); for(enc=0; enc<4; ++enc) { MIOS32_ENC_StateSet(enc, state & 3); // two pins state >>= 2; // shift to next two pins } }
  8. This Settings in "mios32_config.h" are working for 0-7A (5a,5b) - i am on a stm32f4 #define MIOS32_AIN_CHANNEL_MASK 0x00ff // AIN define the deadband (min. difference to report a change to the application hook) #define MIOS32_AIN_DEADBAND 31 //7Bit
  9. updatet the wiki, and the first post, i finally built it into a Rack with the Multirecorder: http://wiki.midibox.org/doku.php?id=clock2audio2clock#how_i_use_it_-_built_in_rack
  10. i have tryed, but with the result, that i could use FPU, but not for my program because in order to use FPU i have to turn off optimize and frame pointer (as workaround), but i a am not expirienced enough to rewrite my code good enough to not need optimize and other stuff... @7bit, i want to automate everything possible (so all except Wave-Form, RATE and Programchange), because they are combined with Clock, resync...) The Automations are: MotionSequencer Velocity from trigger OSC (LFO) and they all get summed/combined together on each CC/aout/parameter ... i dont want to mix here, its better to leaf it u16, the program is already big, and it would lead to problems and headpain in the future.
  11. because of using float... i was searching and trying the last day... i figured following out: when dont use: "-fomit-frame-pointer" in common.mk, t+ deactivate gcc optimize then floating point is functional, @ least with a "small programm" (see the atached zip file fpu__working.zip) i was trying to follow the source of the blackscreen and hardfault, thought of frtos and mutexes, off stacksize, mios-switches, and all kind of stuff, deleted all i could in my program, and come to the point - without fomit-frame-pointer and gcc optimize - its only a thing of "size" of the programm not the used functions (i tryed 10 ours till now, all kind off stuff, and thats my conclusio) (i addet much useless stuff, but from all a bit to a file and its still not hardfaulting, but screens are black and the mios-studio debugging is also not functional it fries without hardfault error, you will have to go in bootloader to load a nother code on the machine ( i of course have a switch for that) fpu__still_working.zip so feel free to add stuff to the attached programs, & find out what the program let hardfault... we may have to activate fomit frame pointer and gcc optimize... maybe this 2 settings are enough for a geek - to easyer find the problem in first place, for me i am tapping in the dark - good morning - good night. i am done, the other things like including float fmath.h which is not functional with dead ends in mios... are too high for me...there is some mess with the library... i will try now in my code to get a dynamic logaritm without using floats in any kind - thats my conclusio
  12. thX great inspiration! special the bithshift to 128 und 64 > genial... or to scale time to u16, and then make more simple any offset possible (automation-assignment of this paremters is now also easy), also the log antilog logic.. i used your code as inspiration source to optimize code... not only because of you, because of RAM, i looked what happens when i let calculate all 4Channel-Strips & all 8 Scopes (8x4 OSCs, 88xVelo-, 88xOSC-,88xMotionSeuencer-Assignments...) had blackscreens, and ram debugger warnings usw, now i am a bit faster here - no problem with + - operation, and like you said, -heavy division and multiplication- the programm then is working ok with one screen, 8 with log and all that stuff just dont have a function... it will take me more time to experience that. i combine now ENV + LFO und let them share the same controlls, ENV is just a nother OSC/WAVEFORM, with Bendable paremeters. I addet 0: retrigger und 1: sustain to my RATE CC, the rest are typical LFO cycle rates encreasing... so i can use a envelope as LFO and a typical LFO-Wave as Envelope, so i am also more flexible, not every track needs 4 envelopse most of them only 2 or even 1, haveing on the other side more LFOs... and so on.
  13. how get you the tri-angle > sine conversion done, when i do, i get in the bottum part a arrowhead, and in the top i round (see video first display...3rd encoder sets curve parameter // T R I A N G L E if( aout[x].v_cc[24 + (8*y)] == 2 ) { if( (counter[x][y] * 2) > lfo_cycle[x][y] ) { lfo_lin[x][y] = lfo_lin[x][y] - ( 131072 / lfo_cycle[x][y] ) ;} else { lfo_lin[x][y] = lfo_lin[x][y] + ( 131072 / lfo_cycle[x][y] ) ;} // Reset - ms - Counter if( lfo_loop_step_pos[x][y] == 0 && flag.step0once[x][y] == 1) { flag.step0once[x][y] = 0; counter[x][y] = 0; lfo_lin[x][y] = 0; // init lfo internal lfo_log[x][y] = 1; // init CV Value update_lfo_scope[x][y] = 1; // wait for next 16th step of seq to restart LFO Cycle } } // end triangle i do the lin-log calculation right after the Waveform calculation, and save the result --- result will then printed on Screen, and dumped out to AOUT. for lin-log i used your code - mine have not done that, what i want... did you changed anything? i dont get the sinus you have in your video // L I N > L O G / A N T I L O G // lin > log if (curve < 32767){ // reducing curve to a float between 0 and 1 curv_f=(float)(32768-curve)/32768.0; // reducing column to a float between 0 and 1 lfo_f = (1.0-((float)(lfo_lin[x][y]/65536.0))); // lin > log lfo_log[x][y] = (u32)(lfo_lin[x][y] + ((log(lfo_f)*curv_f*lfo_f)*65536)); } // lin > antilog else{ // reducing curve to a float between 0 and 1 curv_f=(float)(aout[x].v_cc[26+(y*8)] - 32768) / 32768.0; // reducing column to a float between 0 and 1 lfo_f = (float)(lfo_lin[x][y]/65536.0); // lin > log lfo_log[x][y] = (u32)(lfo_lin[x][y] - ((log(lfo_f)*curv_f*lfo_f)*65536)); } }}// end x y loop
  14. cool device, for programing on the field? yes that curve behavior is what i was looking for... thx will try that @ evening --- special that library thing yes also works me thx!!!!! --- i add this to the top of article! this solve allmost everything in the night i was thinking of a solution, how to DIY a log function special for this task, but it endet up to be exponential... my idea was: 1. make a linear LFO like bevore, call it LFO_LIN, this is only for calculations 2. calculate LFO_LOG, this will be mixed with other LFOs and will be sent out to AOUT_Channels 2a: calculate LFO_LOG: for example: LFO_length: 500ms, LFO_actual time Position: 250ms, LFO_LIN: 32768, cc_curve: variable from 0-65535 as example below calculation: LFO_LOG = LFO_LIN + LFO_LIN_ADD LFO_LIN_ADD = LFO_LIN * ( %time * %cc_curve) - - - - [0-65535] = [0-65535] * [%] * [%] ) 3750 = 15000 * ( ( (1/500ms) * 250ms)) * (1/65536) * 32768)) ) 3750 = 15000 * 0,5time * 0,5cc @ cc_curve: 32768 18750 = 15000 + 3750 example calculation of the LFO_LIN_ADD 15000 = 15000 + 0 = 15000 * 0,5time * 0,0cc @ cc_curve: 0 15000,2 = 15000 + 0,22 = 15000 * 0,5time * 0,00003cc @ cc_curve: 2 15000,4 = 15000 + 0,45 = 15000 * 0,5time * 0,00006cc @ cc_curve: 4 .... 15234 = 15000 + 234 = 15000 * 0,5time * 0,03125cc @ cc_curve: 2048 15468 = 15000 + 468 = 15000 * 0,5time * 0,06250cc @ cc_curve: 4096 15937 = 15000 + 937 = 15000 * 0,5time * 0,12500cc @ cc_curve: 8192 16875 = 15000 + 1875 = 15000 * 0,5time * 0,25000cc @ cc_curve:16384 18750 = 15000 + 3750 = 15000 * 0,5time * 0,50000cc @ cc_curve:32768 22250 = 15000 + 7500 = 15000 * 0,5time * 1.0000cc @ cc_curve:65536 now try half time and half lfo_lin to proof that this is not linear...: 7968,75 = 7500 + 468 = 7500 * 0,25time * 0,25000cc @ cc_curve:16384 15937,5 = 7968,75 * 2 where we had: 16875 = 15000 + 1875 = 15000 * 0,5time * 0,25000cc @ cc_curve:16384 15937,5 vs 16875 @ 1/4time @ 1/4curve_cc (positive log) so if that result is not a comma-loos result, then this is now not linear, have to proof if that make sense on the machine what happens when try a full cc_curve effect @ 65536 : 22250 = 15000 + 7500 = 15000 * 0,5time * 1.0000cc @ cc_curve:65536 vs half time 9375 = 7500 + 1875 = 7500 * 0,25time * 1.0000cc @ cc_curve:65536 18750 = 9375 * 2 18750 vs 22250 what happens @ end of time ( i guis it clips over 65536): 1310720 = 65536+ 65536 = 65536 * 1.0 time * 1.0000cc @ cc_curve:65536 oh that we have to clip if ( lfo_log > 65536 ) {lfo_log = 65536) so we have more a exponential then a logarithmic, depending on the cc_curve parameter i have a clipping expanding cc_curve to -65536 to + 65536 makes it +-(time)exponential, i just cant wait, to try my and brunos codes.
  15. POST NOT WORKING hmm a workaround, that comes in my mind , while sitting here trinking vodka, set with collected raspberrys in it- i could (if there is no other solution): i could set my CURVE-Encoder (log setting encoder) to count from 0-20 ----curve= 0-19 (instead of 0-65525) then make a switch, not very nice, not very small switch (curve) { case 0: lfo_log = lfo_lin * log(0.1); break; case 1: lfo_log = lfo_lin * log(0.2); break; case 2: lfo_log = lfo_lin * log(0.3); break; case 3: lfo_log = lfo_lin * log(0.4); break; case 4: lfo_log = lfo_lin * log(0.5); break; case 5: lfo_log = lfo_lin * log(0.6); break; case 6: lfo_log = lfo_lin * log(0.7); break; case 7: lfo_log = lfo_lin * log(0.8); break; case 8: lfo_log = lfo_lin * log(0.9); break; case 9: lfo_log = lfo_lin * log(1.0); break; case 10: lfo_log = lfo_lin * log(1.1); break; case 11: lfo_log = lfo_lin * log(1.2); break; case 12: lfo_log = lfo_lin * log(1.3); break; case 13: lfo_log = lfo_lin * log(1.4); break; case 14: lfo_log = lfo_lin * log(1.5); break; case 15: lfo_log = lfo_lin * log(1.6); break; case 16: lfo_log = lfo_lin * log(1.7); break; case 17: lfo_log = lfo_lin * log(1.8); break; case 18: lfo_log = lfo_lin * log(1.9); break; case 19: lfo_log = lfo_lin * log(2.0); break; } (not testet yet, cause the lack of hardware here) - maybe there has to be that log(x)/log(y) thing... but somekind like this so i have this constants what the compiler crying out. for
  16. hei. @ table, na a life-changeable log? table? or a table holds all 16bit possibilitys? [65536][65536] while [lfo_value][curve] - that ram i cant see in a µC (dont say i dont should use 16 bit values, the program doing it well, i have other reasons for that...) such table could calculate in a a background task - with the give CURVE-Parameter,, endlessly, and could be used then live... but in the end i have to ask which value should be which tablecell anyway. @ least i want to try do the math, - and i will see timing then. if there is a way for log with this compiler(gcc?) gcc and frtos/mios? what did i wrong. i tryd double floats... -mike
  17. Problems Solution is: were we have to add this to the lokal makefile: ORGINAL PROBLEM POST Hei. I have made now, a LFO (UP/DOWN Ramp & Triangle), now i need to add a logaritmic ammount to get CURVES/SINEs on the LFO Straight Lines, i want to do this with a Encoder. My LFO Values going from 0-65535 (16bit, AOUT-Ready) My Curve CC also goes from 0-65535 (Curve means Logaritmic) I have to execute this code every milli seconds, to change the AOUT, and every 75ms to update the SCOPE-Display I tryd around and this is code is working with stdi0 and math.h, outside of mios: (Working) #include <stdio.h> #include <math.h> double cc = 32000; double curve = 64000; int endresult; int main (void) { printf("exponential_input 0-65535: "); scanf("%lf", &curve); endresult = cc * (log(curve) / log(cc)); printf (" %d \n", endresult ); return 0; } now in mios my code it is also working when i fill in fixed values: (WORKING) //calculate Exponential double lfo = 65000; double curve = 32000; double lfo_result; lfo_result = lfo * (log(curve) / log(lfo)); if(lfo_result > 65535) { lfo_result = 65535;} if(lfo_result < 1) { lfo_result = 0;} but when i use my arrays instead of this fixed values, i become a error (NOT WORKING) //calculate Exponential double lfo = aout[channel_strip].lfo[y]; double curve = aout[channel_strip].v_cc[26+(y*8)]; double lfo_result; lfo_result = lfo * (log(curve) / log(lfo)); i also tryed: (NOT WORKING) double lfo_result = aout[channel_strip].lfo[y] * ( log(aout[channel_strip].v_cc[26+(y*8)]) / log(aout[channel_strip].lfo[y]) ); error is: (errno) dont know how to handle this, i need a cc-controlled logaritmic - any ideas? here a goodie:
  18. got it... this works: (will post video once timing gets better...) // SCOPEs // WAVE FORM DISPLAY static u16 upd_count = 0; upd_count++; if ( upd_count >= Scope_Upd_Rate || flag.update_LCD == 1) { upd_count = 0; // U P D A T E R A T E // Scope Lines static float h = APP_LCD_WIDTH; static float v = APP_LCD_HEIGHT/65536.0; // scale u16 range to 0-64 //u16 range = 0 - 65536 half is: 32768 static int H = 0; // horizontal position static int V = 0; // vertical position static int y = 0; // scope/lfo number static int x = 0; // use "channel_strip" float time = lfo_cycle[x][y]; // calculate H V Positions V = (65536-aout[x].lfo[y]) * v; if(V <= 0) { V=0;} if(V >= 63) { V=63;} //65536-lfo: invert screen v-whise H = h / time * counter[x][y]; if(H <= 0) { H=0;} if(H >= 127) { H=127;} if ( sync_waiting == 1 ) { MUTEX_LCD_TAKE; //////// CLEAR S C O P E //////// MIOS32_LCD_DeviceSet(14); MIOS32_LCD_CursorSet(0, 0); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 1); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 2); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 3); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 4); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 5); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 6); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 7); MIOS32_LCD_PrintFormattedString(" "); MUTEX_LCD_GIVE; } //////// show WAVE-FORM - S C O P E //////// MUTEX_LCD_TAKE; MIOS32_LCD_DeviceSet(14); APP_LCD_GCursorSet(H,V); // (h, v) set insert Position for Bitmap APP_LCD_Data(1 << ( V % 8 )); MUTEX_LCD_GIVE;
  19. and now? whats about VCA shematics or any little bit of doku? i want to know what P1-P4 are doing? is this some CV-Bipolar-Offset, or CV-Gain, or Audio Gain... where to measure and which Value to set? what happens if i have some failure while building, or put some beer over it, how can i debug without sheme? Board files i understand, but shemes? what i found out: (wiki)
  20. thx for the link, interesting stuff! that closes the cycle i think... 2164 - quad, and ssm2044 duo yes come on when thats a know problem no one changed the wiki, or told a admin to change it on ucapps.de - a hell to desolder this double sided boards... really? i make a start, and document at least in the ssm2164 getting started wiki... allthough the ssm2164 is unipolar - which is no problem because we have the full range and for: **All SSM2044 builders:**\\ The module is designed with this (wrong) bipolar range, so you don't need to change anything on your AOUT_NGs. i will at least for test phase need higher voltages - because i make "distortion > pre-vcf-vca(filterdrive) > vcf > pre-vca(drive) - channelstrips - and i noticed when i encrease the cv-input of a vca dramatically (that was a 303 clone) i got hot effects.
  21. na didnot work APP_LCD_GCursorSet(H,(63-V)); // (h, v) set insert Position for Bitmap APP_LCD_Data(0x80 >> ((63-V) % 8)); give me something like this: --------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------. ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** --------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.
  22. ok cable worked -thx one aout-module is not functional > looks i killed the dac somehow. the other module is working in unipolar mode from 0-11,4V all right but in bipolar mode it is only working from -+3V - but i have connectecd +-12V... is this normal?, in doku is written that moog works with -+5V, (the ssm2164 working with the voltage?), or should i drive the the aout with +-15V or even more? i controlled all Resistors with colorcode, and also the inprint of the trimmpot is correct, changed a tl074n also, i have about -12V @pin 11 and +12 @ pin 4 - also with plugged in tl074n i set the jumpers to bipolar mode like describt in the ucapps.de side notice that the R200-Trimpots are getting worm, i have not connected any modules on the analog output... so it could be a conceptional thing (low resistor values) of the circuit that they get warm (+12V 2.2K >-200OhmTrim-<1,5K- >12V) so maybe not a failure i measured the resistance like below:
×
×
  • Create New...