![](http://midibox.org/forums/uploads/set_resources_1/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
pilo
-
Posts
1,093 -
Joined
-
Last visited
-
Days Won
4
Content Type
Profiles
Forums
Blogs
Gallery
Posts posted by pilo
-
-
Salut Zennro!
Désolé pour la réponse tardive, je n'avais pas regarder le forum depuis un moment.
Alors ce que je peux en dire, et il ne faut pas y voir une forme de condescendance, c'est que les soudures ne sont pas top, et j'ai peur qu'il y ait des connections qui ne soient pas bonnes. J'en vois plusieurs sur lesquelles on peut même voir le trou dans le circuit imprimé.
Ce que je te conseil serait de reprendre les soudures pour en faire des "plus jolies", et ainsi être sur qu'il n'y a pas de problème "mécanique". A mon avis (mais je peux me tromper) tu n'a pas assez chauffer avant d'appliquer l'étain, ce qui fait qu'il s'est mal répartit. Le mieux, si tu as de quoi le faire (soit avec une tresse à dessouder, ou avec un pompe à dessouder), serait d'enlever les soudures "douteuses", et de les refaire. Mais sinon tu dois pouvoir les corriger en réchauffant la soudure (3/4/5 secondes avec le fer en contact avec la piste sur le circuit ET la patte du composant), et de rajouter un tout petit peu d'étain (qui doit fondre en entrant en contact avec le circuit imprimé ET la patte du composant, pas (trop) sur le fer ;) ).
Sur le circuit les trous sont métallisés, l'étain doit "couler" dedans, donc je pense que tu peux en rajouter sans trop de soucis. Tu peux retirer les circuits intégrés de leur support pendant que tu fais ca, pour être sur de ne pas les endommager. N'est pas peur de "trop chauffer", mais il faut quand même faire attention car ca pourrait endommager le circuit imprimé (mais il est de bonne qualité, donc tu devrais avoir de la marge).
-
Salut!
Tu peux poster des photos du circuit (des 2 cotés), comme te le suggérait ssp sur l'autre topic? (d'ailleurs ca serait peut etre plus pratique de centraliser les réponses dans un seul sujet, je pense celui en anglais, tu auras plus de retour ;) )
Tu as bien 5v entre les pattes 12/11, et 31/32 du pic? Et aussi entre 5 et 8 du 6N138?
Essais de ne mettre que les circuit intégré essentiel, à savoir le pic et le 6N138 (en laissant les régulateur LM7805 et LM317), et rien d'autre que le midi in & out connecté (sans faders), et vois tu as plus de succès comme ca.
Le circuit est "relativement" simple donc il n'y a pas de raison que tu ne parviennes pas à le faire fonctionner ;)
-
Oh I didn't see there was multiple threads for this problem :)
As I said in the thread inthe french forum, the module needs to be powered in order to work (only the midi connection is not enought).
-
Alors si il faut alimenter le circuit via le connecteur J1, une alimentation entre 8 et 12v fera l’affaire (et peut importe la polarité, ça peut même être un simple transformateur car il y a un pont de diodes).
Voilà, une fois alimenté ça devrait mieux fonctionner ;)
la led s’allume ... je ne sais plus, je crois quand il y a des messages midi échangés, mais je n’en suis plus très sûre !
Et pour vérifier les soudures, il y a le schéma du module. La première étape serait de vérifier qu’il y a bien 5v où il faut (en sortie du régulateur 7805, et sur le PIC et l’optocoupleur).
Mais voyons déjà si avec une alimentation ça fonctionne !
Pilo
-
Salut Zennro!
Alors oui il faut programmer d'abord le PIC avec le bootloader (bootloader_v1_2b_pic18f452.hex) et un programmateur , ce que vous avez fait avec succès à priori?
Ensuite il faut uploadé MIOS (mios8_v1_9h_pic18f452.hex ) via MIOS Studio. Mais effectivement pour ca il faut que MIOS Studio "voit" le pic : vérifiez que MIDI IN et MIDI OUT pointe bien vers les bonnes entrées/sorties et interface sur laquelle le MF_NG est branché, et que ce dernier est bien alimenté. Il est aussi possible qu'il y est un soucis sur le circuit, un problème d'assemblage...
Ah aussi, si vous avez programmer le pic dans le pic mios8_v1_9h_pic18f452.hex avec le programmateur, ca a effaceé le bootloader, donc il faut le reprogrammer (avec le bootloader donc).
Pilo
-
Hi @tago
Yes, you can print text using different font faces and sizes. It's not part of MIOS, but works by using bitmap drawing MIOS functions.
It's still a bitmap font system, TTF have to be exported to bitmap, so it takes a little bit of memory for each font faces and size. Also it's not a full featured font system, for example it doesn't support kerning (could be added, but will take even more memory).
If you want I could set up a better example (the one I posted was just a quick test).
-
Hi everyone!
I thought it might be a good idea to be able to print variable width font on GLCD.
I wrote a simple example using this (see pictures and code in vfw.tar.gz). I don't think it was done before with MIOS? (I made a quick search).
The font bitmap are exported from TTF file using a very quick (and ugly) C program based on Freetype (it might be Linux only... Freetype was an easy option for me, and a good font rasterizer). It takes as input the TTF file and a size, which is then exported as a .c file, which can then be included inside MIOS app (one file per font and size).
-
Hi!
I'm not sure if I understand your problem correctly, but it seems like a general code design problem?
If I understand well, you have things that should happen when there's a Midi notify or a button press? A simple way to handle this is simply putting the code that does something outside the MIOS call back :
void doSomething(u32 value) { // put your code here } void APP_MIDI_NotifyPackage(mios32void APP_MIDI_NotifyPackage(mios32_midi_port_t port, mios32_midi_package_t midi_package){ if(/*condition*/) { doSomething(1); // or doSomething(0) } } #define doSomethingButton 4 /* for example */ void APP_DIN_NotifyToggle(u32 pin, u32 pin_value) { if(pin == doSomethingButton) { doSomething(pin_value); } }
Now for the problem with flag (it's a "common" problem, I still see a lots of code with flags every where, and when you want to modify to do something, it does everything but not what you want it to do!). There are several way to handle this. A good one (but it can be tricky to implement sometimes) is the state pattern. Instead of having flags and then testing flags, you replace those by on or more states.
States can be function in C, and then you keep a pointer to the current state function, which will do what it should when the app is in this state.
I don't have a good example to show this, but if you want to post your code, I can take time to look at it if you want.
-
Thank you ;)
When i said it might be a hardware issue, I was thinking about something like wiring issue.
I fried my testing psu (for the analog +5/-5v) yesterday while working on this, I might have made a modification to the code that prevent it from working after (I wrote the value to dB code after my PSU made some smoke).
Also it would be a shame both your PGA chips are broken. I think before ordering new ones there are other things to check ;)
First, I use lpc17 core, I don't think it should make a big difference, but maybe it is.
Then how did you wire your power supply? I use the +5v from the core for the digital side of the PGA, and another external PSU for the analog side (I build a new one today, not finished yet). Both ground (analog and digital) are connected.
Mute and ZCEN are connected to the +5v from the core.
Of course analog and digital +5v ARE NOT connected together.
Double check your wiring, there might be an error somewhere. No sound at all when you run the application? (Without turning any encoder)
-
Here's my test app, it should work now (unless you have an hardware issue).
/* * MIOS32 TI PGA2310/2311/4311 test app * * ========================================================================== * * Copyright © 2015 pilo () * Licensed for personal non-commercial use only. * All other rights reserved. * * ========================================================================== */ ///////////////////////////////////////////////////////////////////////////// // Include files ///////////////////////////////////////////////////////////////////////////// #include <mios32.h> #include "app.h" // warning, buffer should be at least 9 byte long! void PGAGainTodB(char *buffer, u8 gain) { if(gain == 0) { sprintf(buffer, "mute"); return; } // else int _dB = 315 - (1275 - gain * 5); int dB = fabs(_dB / 10); int mod = fabs(_dB % 10); if(mod == 0) sprintf(buffer, "%ddB", _dB / 10); else sprintf(buffer, "%s%d%s%ddB", _dB < 0 ? "-" : "", // sign dB, mod != 0 ? "." : "", mod != 0 ? mod : ""); } void SetPGAGain(u8 leftGain, u8 rightGain) { MIOS32_SPI_RC_PinSet (2,0,0); MIOS32_SPI_TransferByte(2, rightGain); // right MIOS32_SPI_TransferByte(2, leftGain); // left MIOS32_SPI_TransferByte(2, rightGain); // 3 (for PGA4311) MIOS32_SPI_TransferByte(2, leftGain); // 4 MIOS32_SPI_RC_PinSet (2,0,1); //MIOS32_MIDI_SendDebugMessage("SetPGAGain : %d %d\n", leftGain, rightGain); } u8 volumeEncPos = 192; // 0dB #define NUM_ENCODERS 64 ///////////////////////////////////////////////////////////////////////////// // This hook is called after startup to initialize the application ///////////////////////////////////////////////////////////////////////////// void APP_Init(void) { // initialize all LEDs MIOS32_BOARD_LED_Init(0xffffffff); // initialize SPI IO pins and protocol MIOS32_SPI_IO_Init(2, MIOS32_SPI_PIN_DRIVER_WEAK); MIOS32_SPI_TransferModeInit(2, MIOS32_SPI_MODE_CLK0_PHASE0, MIOS32_SPI_PRESCALER_16); // ca. 5 MBit // initialize rotary encoders of the same type (DETENTED2) int enc; for(enc=0; enc<NUM_ENCODERS; ++enc) { u8 pin_sr = (enc >> 2) + 1; // each DIN SR has 4 encoders connected u8 pin_pos = (enc & 0x3) << 1; // Pin position of first ENC channel: either 0, 2, 4 or 6 mios32_enc_config_t enc_config = MIOS32_ENC_ConfigGet(enc); enc_config.cfg.type = DETENTED2; // see mios32_enc.h for available types enc_config.cfg.sr = pin_sr; enc_config.cfg.pos = pin_pos; #if 1 // normal speed, incrementer either 1 or -1 enc_config.cfg.speed = NORMAL; enc_config.cfg.speed_par = 0; #else // higher incrementer values on fast movements enc_config.cfg.speed = FAST; enc_config.cfg.speed_par = 2; #endif MIOS32_ENC_ConfigSet(enc, enc_config); } } ///////////////////////////////////////////////////////////////////////////// // This task is running endless in background ///////////////////////////////////////////////////////////////////////////// void APP_Background(void) { MIOS32_MIDI_SendDebugMessage("Started PGA test app\n"); SetPGAGain(volumeEncPos, volumeEncPos); while(1) { } } ///////////////////////////////////////////////////////////////////////////// // This hook is called each mS from the main task which also handles DIN, ENC // and AIN events. You could add more jobs here, but they shouldn't consume // more than 300 uS to ensure the responsiveness of buttons, encoders, pots. // Alternatively you could create a dedicated task for application specific // jobs as explained in $MIOS32_PATH/apps/tutorials/006_rtos_tasks ///////////////////////////////////////////////////////////////////////////// void APP_Tick(void) { // PWM modulate the status LED (this is a sign of life) u32 timestamp = MIOS32_TIMESTAMP_Get(); MIOS32_BOARD_LED_Set(1, (timestamp % 20) <= ((timestamp / 100) % 10)); } ///////////////////////////////////////////////////////////////////////////// // This hook is called each mS from the MIDI task which checks for incoming // MIDI events. You could add more MIDI related jobs here, but they shouldn't // consume more than 300 uS to ensure the responsiveness of incoming MIDI. ///////////////////////////////////////////////////////////////////////////// void APP_MIDI_Tick(void) { } ///////////////////////////////////////////////////////////////////////////// // This hook is called when a MIDI package has been received ///////////////////////////////////////////////////////////////////////////// void APP_MIDI_NotifyPackage(mios32_midi_port_t port, mios32_midi_package_t midi_package) { } ///////////////////////////////////////////////////////////////////////////// // This hook is called before the shift register chain is scanned ///////////////////////////////////////////////////////////////////////////// void APP_SRIO_ServicePrepare(void) { } ///////////////////////////////////////////////////////////////////////////// // This hook is called after the shift register chain has been scanned ///////////////////////////////////////////////////////////////////////////// void APP_SRIO_ServiceFinish(void) { } ///////////////////////////////////////////////////////////////////////////// // This hook is called when a button has been toggled // pin_value is 1 when button released, and 0 when button pressed ///////////////////////////////////////////////////////////////////////////// void APP_DIN_NotifyToggle(u32 pin, u32 pin_value) { } ///////////////////////////////////////////////////////////////////////////// // This hook is called when an encoder has been moved // incrementer is positive when encoder has been turned clockwise, else // it is negative ///////////////////////////////////////////////////////////////////////////// void APP_ENC_NotifyChange(u32 encoder, s32 incrementer) { int value = volumeEncPos + incrementer; // clamp the value if(value < 0) value = 0; if(value > 255) value = 255; // set the gain volumeEncPos = value; SetPGAGain(volumeEncPos, volumeEncPos); // print gain in dB char dbBuffer[9]; PGAGainTodB(dbBuffer, volumeEncPos); MIOS32_MIDI_SendDebugMessage("%s\n", dbBuffer); } ///////////////////////////////////////////////////////////////////////////// // This hook is called when a pot has been moved ///////////////////////////////////////////////////////////////////////////// void APP_AIN_NotifyChange(u32 pin, u32 pin_value) { }
-
Hi,
Ok good news, I got it working :smile:
I use PGA4311 (SMD IC), and my mute pin, after living 10 years in a junk box was broken (I made an error and connect it to GND instead on +5V on my original PCB, and then use a wire to correct this... but the pin didn't handle it over the years).
So the modification I made is in APP_init:
MIOS32_SPI_IO_Init(2, MIOS32_SPI_PIN_DRIVER_WEAK); MIOS32_SPI_TransferModeInit(2, MIOS32_SPI_MODE_CLK0_PHASE0, MIOS32_SPI_PRESCALER_16); // ca. 5 MBit
I don't really understand how this and prescaler work, but with those settings I can set the gain.
I'll add encoder support for volume change and post the source code.
-
Hi!
Do you setup the SPI intervace in APP_init() ? (I think yes, but it's always good to check everything ;)
// initialize SPI IO pins and protocol MIOS32_SPI_IO_Init(2, MIOS32_SPI_PIN_DRIVER_STRONG); MIOS32_SPI_TransferModeInit(2, MIOS32_SPI_MODE_CLK0_PHASE0, MIOS32_SPI_PRESCALER_16); // ca. 5 MBit
I don't understand why it doesn't work (and unfortunately I don't have my old PGA pcb here with me).
I think the command is not working because there's no command handling callback ;) (you can setup one, but you have to parse it etc).
I had the idea few month ago to make a preamp with the PGA, but it was a few month ago and I haven't done anything yet... :)
-
Hi mwpost!
Unfortunately I didn't had the time this week end to test my old pga pcb with MIOS32 (I have an LPC17 board, not STM32F4, but it shouldn't be a big difference for this).
What you could do, is to try to set the gain without the encoder first (comment or remove the code setting the gain in the encoder callback).
just add this function in your c file :
void SetPGAGain(u8 leftGain, u8 rightGain) { MIOS32_SPI_RC_PinSet (2,0,0); MIOS32_SPI_TransferByte(2, mios32_dout_reverse_tab[rightGain]); // right MIOS32_SPI_TransferByte(2, mios32_dout_reverse_tab[leftGain]); // left MIOS32_SPI_RC_PinSet (2,0,1); }
and for example in APP_Background
void APP_Background(void) { SetPGAGain(0, 0); while (1) { } }
When you start the application, you should hear no sound at all (0 is the special value for MUTE).
Then try for example
SetPGAGain(32, 32);
etc and then with other values, and see how it behave.
It might help to understand what is going on by just changing the value once.
What did I do the last 10 years? I would have better spent them on electronics and PIC programming instead of other useless hobbiesThere's no "useless hobby" :smile: I was very excited by the PGA at that time, I ordered some, made a quick board, wrote the code for MIOS... and when it worked, I though "Cool, I need to put it in a very cool project!", and I haven't touch it since... (like so many other "project" I started)
-
1
-
-
Hi mwpost!
I wrote PGA driver code for pic18f years ago (looking at the source code, it should make 10 years...), which was later improved by Lyle.
I remember having fun writing the display part in asm :smile:
Anyway, I'll try to make it work with MIOS32. I think you're very close to have it working, actually I don't see any problem with your code (if you does the modification correctly).
According to your schematic only the left part of the PGA is tested, and that's the 2nd byte send to the PGA :
void APP_ENC_NotifyChange(u32 encoder, s32 incrementer) { // toggle Status LED on each AIN value change MIOS32_BOARD_LED_Set(0x0001, ~MIOS32_BOARD_LED_Get()); // increment to virtual position and ensure that the value is in range 0..127 int value = enc_virtual_pos[encoder] + incrementer; // clamp the value if( value < 0 ) value = 0; else if( value > 255 ) value = 255; // store enc_virtual_pos[encoder] = value; MIOS32_MIDI_SendCC(UART0, Chn3, 53, value); MIOS32_MIDI_SendCC(USB0, Chn3, 53, value); u8 Sendbyte = mios32_dout_reverse_tab[value]; // MSB first MIOS32_MIDI_SendDebugMessage("MIOS32_SPI_RC_PinSet to 0: %04u", MIOS32_SPI_RC_PinSet (2,1,0)); MIOS32_MIDI_SendDebugMessage("MIOS32_SPI_TransferByte R %04u: %04u", Sendbyte, MIOS32_SPI_TransferByte(2, Sendbyte)); // right channel gain MIOS32_MIDI_SendDebugMessage("MIOS32_SPI_TransferByte L: %04u: %04u", Sendbyte, MIOS32_SPI_TransferByte(2, Sendbyte)); // left channel gain MIOS32_MIDI_SendDebugMessage("MIOS32_SPI_RC_PinSet to 1: %04u", MIOS32_SPI_RC_PinSet (2,1,1)); MIOS32_LCD_CursorSet(10, 1); MIOS32_LCD_PrintFormattedString("%04u", Sendbyte); }
If you daisy chained PGA (or use PGA4311) you should have as many MIOS32_SPI_TransferByte as channels (so you need 2 for one PGA2311, 4 for 2 chained PGA2311, 4 for one PGA4311, 6 for one PGA4311 and one PGA2311, etc).
And I wouldn't expect any value returned by MIOS32_SPI_TransferByte?
-
1
-
-
I just removed lastest sdcc version and installed sdcc from the link provided by TK, and everything works as expected now :) (without any modification).
-
This is not a problem with sdcc install, because here what the makefile is trying to execute :
/bin/share/sdcc /home/crimic/mios/bin/mios-gpasm -c -p p18f452 -I./src -I /home/crimic/mios/include/asm -I /home/crimic/mios/include/share -I /home/crimic/mios/modules/debug_msg -I /home/crimic/mios/modules/app_lcd/dummy -DDEBUG_MODE=0 -DSTACK_HEAD=0x37f -DSTACK_IRQ_HEAD=0x33f -I /home/crimic/mios/modules/mios_wrapper /home/crimic/mios/modules/mios_wrapper/mios_wrapper.asm -o _output/mios_wrapper.o
I don't know why sdcc and mios-gpasm are mixed here, but it should be only :
/home/crimic/mios/bin/mios-gpasm -c -p p18f452 -I./src -I /home/crimic/mios/include/asm -I /home/crimic/mios/include/share -I /home/crimic/mios/modules/debug_msg -I /home/crimic/mios/modules/app_lcd/dummy -DDEBUG_MODE=0 -DSTACK_HEAD=0x37f -DSTACK_IRQ_HEAD=0x33f -I /home/crimic/mios/modules/mios_wrapper /home/crimic/mios/modules/mios_wrapper/mios_wrapper.asm -o _output/mios_wrapper.o
edit:
Maybe it's the path to bin that is not correct?
echo $MIOS_BIN_PATH should tell you "/home/crimic/mios/bin"
and it seems it's set on "/bin/share/sdcc /home/crimic/mios/bin"
-
Hi!
I just install it to try it on my linux computer (Slackware, but it shouldn't be too different from ubuntu).
I had the same error as you get.
You can try to fix by editing mios-sdcc (mios/bin/mios-sdcc) and add "--use-non-free" as sdcc parameter
My sdcc-mios looks like that now :
# $Id: mios-sdcc 444 2008-08-14 21:26:28Z tk $ # # MIOS specific wrapper for sdcc # # Executes sdcc # Uses "mios-gpasm -fixasm" wrapper to assemble the generated code # # Thorsten Klose (2008-02-03) # # SYNTAX: mios-sdcc <sdcc-arguments> # if [ -z "${MIOS_BIN_PATH:-}" ]; then echo "ERROR $0: MIOS_BIN_PATH variable not set!" exit 1 fi sdcc --use-non-free --asm="${MIOS_SHELL} ${MIOS_BIN_PATH}/mios-gpasm -fixasm" $@
I still have another error (according to your log you don't have it)
pilo@linux-pilo:~/src/mios/mios/trunk/apps/examples/lcd7/dog/c$ make rm -rf _output/* rm -rf _output rm -rf *.cod *.map *.lst rm -rf *.hex mkdir -p _output /bin/bash /home/pilo/src/mios/mios/trunk/bin/mios-gpasm -c -p p18f452 -I./src -I /home/pilo/src/mios/mios/trunk/include/asm -I /home/pilo/src/mios/mios/trunk/include/share -I /home/pilo/src/mios/mios/trunk/modules/app_lcd/dog -DDEBUG_MODE=0 -DSTACK_HEAD=0x37f -DSTACK_IRQ_HEAD=0x33f -I /home/pilo/src/mios/mios/trunk/modules/mios_wrapper /home/pilo/src/mios/mios/trunk/modules/mios_wrapper/mios_wrapper.asm -o _output/mios_wrapper.o /bin/bash /home/pilo/src/mios/mios/trunk/bin/mios-gpasm -c -p p18f452 -I./src -I /home/pilo/src/mios/mios/trunk/include/asm -I /home/pilo/src/mios/mios/trunk/include/share -I /home/pilo/src/mios/mios/trunk/modules/app_lcd/dog -DDEBUG_MODE=0 /home/pilo/src/mios/mios/trunk/modules/app_lcd/dog/app_lcd.asm -o _output/app_lcd.o /bin/bash /home/pilo/src/mios/mios/trunk/bin/mios-sdcc -c -mpic16 -p18f452 --fommit-frame-pointer --optimize-goto --optimize-cmp --disable-warning 85 --obanksel=2 -I./src -I /home/pilo/src/mios/mios/trunk/include/c -I /home/pilo/src/mios/mios/trunk/include/share -DDEBUG_MODE=0 main.c -o _output/main.o at 1: warning 118: option '--fommit-frame-pointer-ÿ' no longer supported 'use --fomit-frame-pointer instead' at 1: warning 117: unknown compiler option '--optimize-goto' ignored /home/pilo/src/mios/mios/trunk/include/c/cmios.h:250: syntax error: token -> 'char' ; column 43 make: *** [_output/main.o] Error 1
(might be a compile flag I didn't set when I compile sdcc from source)
To answer you question:
1. Yes it seems it's correct
2. You can also grab the latest code from the svn (svn checkout svn://svnmios.midibox.org/mios if you have svn installed). Then you'll find everything in mios/trunk/)
I'll try to fix my setup, and I hope you'll manage to make yours working!
-
Hi!
I had the LPC17 core PCB for a long time, but ordered the LPC1769 only last week.
Yesterday morning when I wanted to solder the header I was surprised when I noticed (before soldering) that they don't match the one on the PCB...
After reading that post, I decided to solder them, remove the black plastic holder, and bend the pin to match the already soldered(about 1 year ago...) female connector on the PCB (The header on LPC1769 were soldered not "fully inserted", so I have enough room on each pin to bend them 2 times).
Here's some pictures :
-
1
-
-
Ok :) En effet c'est pas n'importe quel console!!!
Si il y a un système d'automation, c'est que les faders (ils sont motorisés ou pas du coup?) possèdent une piste servo (linéaire) en plus de la piste audio, donc il suffit d'utiliser celle ci. C'est le moyen le plus simple de récupérer la position.
Et si ils sont motorisés tu peux peut etre aussi les controller avec le module MF, si le driver et les moteurs sont compatible.
-
C'est quoi comme modèle de table? Il faut le schema pour ce qu'il est possible de faire.
Dans le cas de la midibox la lecture d'un fader ce fait simplement avec un adc (dans le pic ou l'arm suivant le core choisit).
Pour le core 8bits : http://www.ucapps.de/mbhp_core.html
Et le 32bits : http://www.ucapps.de/mbhp_core_lpc17.html
-
Salut!
Alors tu ne pourras pas, ou très difficilement (comprendre couteux et pas forcément très pratique) ajouter ce genre de fonctionnalité sur une table de mixage analogique.
Les fader utilisés pour l'audio utilise une piste a variation log, alors que pour une midibox il te faut des faders a variation linéaire.
Tu dois pouvoir trouver des fader proposant 2 pistes comme ca, (comme les faders motorisé Alps), mais ca risque de couter relativement cher (et il faut que tu puisse les monter à la place des fader originaux qui sont dans ta table, ce qui n'est pas forcément possible).
Et surtout, si tu veux baisser le volume d'une voie de ta table, cela va aussi baissé la voie controller dans le DAW, et vice versa.
Un moyen plus simple serait de creer un controller séparé et dédié, avec 32 faders (et eventuelement d'autre switch, encoder, etc).
-
You could use a simple output for the AL1201 (look in the datasheet) if you don't need a very good "sound" (I guess for cv it should be fine).
-
I put brd ans sch file in a zip and it works :)
-
Ouais en france aussi on a la douane qui peut attraper un colis ici ou la.
Théoriquement justement, quand on commande sur le site de smash via le liens que j'ai donné, ca devrait passé... mais y'a rien de sur (j'ai commandé plusieurs fois, et jusqu'a maintenant aucun soucis).
Ok pour l'insoleuse :)
Un collègue viens de me dire que je pourrais simplement collé les supports avec un pistolet a colle... a essayer donc (mais comme je les veux au dessus , donc la tete en bas, j'aimerai etre sur qu'ils ne tombent pas! lol).
Splitt Float Value into single Digits - 7 Segment BPM Display - TPD
in MIOS programming (C)
Posted
Hey!
If you are still interested, the "correct" solution with sprintf would be:
int i = BPM*10; static char buf[5]; sprintf(buf, "%04d", i);
But it won't give the same result as your solution: buf would contains the C string "1285", using the ASCII code, ie buf[0] = 49, buf[1] = 50, etc.
And buf needs to be (at least) 5 byte long because sprintf will make a null terminated string, with a 0 (zero) to mark the end. The formating ("%04d") make sprintf pad with 0 if the number is less than 4 digit long (but if i is > 999 then buf won't be large enough for more character).
I hope it can helps :)