hotchk155 / arpie Goto Github PK
View Code? Open in Web Editor NEWA compact and full featured MIDI arpeggiator, Open source, Arduino based
A compact and full featured MIDI arpeggiator, Open source, Arduino based
There's one thing I wish arpie could do. I want to be able to glide
certain notes in the pattern. So here's the idea. Instead of just having
all the notes one length, Arpie's pattern programmer would allow 3 states:
on, off, and glide. Step glide would override the setting in the gate
length menu. Perhaps by holding down pattern buttons for a second, the
relevant LEDs would illuminate more brightly.
D Blondin
but i really hope i can add any kind of sequencer set up to the devise! notes, envelope or filters sequenced control would be really great and very A useful feature. or even having an the arpie arpegiate the filter or the envelope, while one is playing the notes can be alot of fun. slimier features can be found on the "volca keys"! being able to do that with any synth of choice would be unique!
is there a way that you know of to impliment an arpeggio rate potentiometer to smoothly glide up and down in rate? The only thing i could think of is a dedicated MIDI clock controlled by a pot connected to the sync in, but this is a kind of roundabout way of doing it. Is there a way to add one to the existing hardware
Skip Mode: Notes concurrent with disabled steps are not muted, just held in memory and played whenever a new step is active. For instance, with the following LED sequence:
ooo_oo_oooo_oo_o ( _ = disabled step)
and a C major (C-E-G) input chord, UP mode:
Present behaviour: CEG_EG_EGCE_CE_C EGC_...
Skip mode: CEG_CE_GCEG_CE_G CEG_...
IMO it would be musically interesting to be able to toggle between these two modes mid-chord.
(JP)
Built in options to support CC send for potentiometers connected at "hack port" (e.g. mod wheel, filter cutoff)
e.g. first gates one note only, second gate other notes of chord, third and following full chord
a) The user guide states that when HOLD is on, and "one or more keys pressed after releasing all keys of the previous chord, arpeggio is replaced but position in pattern and timing of next beat are unaffected". My unit doesn't seem to behave like that - it restarts every time, regardless of the current HOLD state. Am I missing something?
Restart Pattern: An on/off option to restart the note sequence every time PLEN is reached.
For instance: C major (C-E-G) input chord, UP mode, PLEN = 4:
Present behaviour: CEGC EGCE GCEG...
Restart pattern: CEGC CEGC CEGC...
(JP)
Catch-hold mode: Incoming notes are kept in memory, but the arpeggiation pattern remains unchanged until PLEN is reached. This would make fast arpeggiation more precise and easy to play, and would avoid unwanted chord inversions.
For instance: C major (C-E-G) input chord, UP mode, PLEN = 8. At about step 4 we change to Dmin (D-F-A):
Present behaviour: CEGCFADF ADFADFAD...
Catch mode: CEGCEGCE DFADFADF...
(JP)
It is good to have fuses description for ATmega328p somewhere in docs. Spend whole day checking my build and trying to flash MCU with avrdude
before realise: fuses should be sat the same way as for Arduino Duemilanove. Otherwise FW will start with wrong clock.
avrdude -B 100 -V -p m328p -c usbasp -P usb -e -u -U lfuse:w:0xFF:m -U hfuse:w:0xDE:m -U efuse:w:0x05:m
avrdude -B 20 -v -p m328p -c usbasp -P usb -b 57600 -D -U flash:w:arpie.ino.standard.hex:i
Great project btw. It was a joy to build. ๐
The RANDOM setting in the MODE menu doesn't work the way I'd expect - instead of generating a random note out of the chord for every single step, it randomizes the note order once and repeats it ad infinitum, far from being unpredictable. This is not necessarily a fault but I reckon that's not what most arpeggiators do in random mode.
(Jordi Pascual)
Hi, i've tried loading this code with my Arduino with a MIDI breakout, but i can not get it work. So, i would have to modify some code? Some help would be very appreciated.
Thanks!!
[Darren Blondin] I noticed a timing bug and verified it on the output. Arpie skips a pulse when it first starts, so after the first note plays it's always a pulse ahead of anything it's sync'ing to. Like this (below). Can you repro this?
NOTE
clock
clock
clock
clock
clock
NOTE
clock
clock
clock
clock
clock
clock
NOTE
clock
clock
clock
clock
clock
clock
With chord memory i mean the feature where i can press a button to record/learn any note input and then simply transposing the note data when played , so i can play one fingered cords. Synthesizers like the eg the korg polysix or the Roland Alpha Juno have this feature that i find incredible helpful and think it would make a nice additional feature for a midi arpeggiator. I can still use my alpha juno (outputs learned cord midi notes data via midi out) or use a midi processor to work around it, since arpie supports midi input.
My favourite arpeggiator btw is the one of the Roland Jupiter 6 Europa firmware upgrade
with lots of different sequenced playback modes and unusual features this one is a true inspirational tool. You can input a pattern (16 steps)like on the korg microkorg and record a sequence of up to 16 continued notes, which gives huge variations. Still you can operate it without any menus on the hardware. Being able to transpose sequences via keyboard is just great. For that feature i also love the Roland Sh101's internal sequencer.
The set-up is "Hold" is off, the mode/arp pattern is "up" and I am going to play a three note chord 1-2-3 where note 1 is the lowest and note 3 is the highest. We would expect to get 1-2-3-1-2-3-1-2-3 etc as the sequence but sometimes I get 3-2-3-1-2-3-1-2-3-1-2-3 etc. (ie the first note is 3 instead of 1).
As far as I can fathom the case occurs like this. I try and play all notes at the same time, but in practice there will always be a tiny time difference between them. If the Arpie gets them in 1-2-3 order than all is well. If the Arpie gets them in the order 3-2-1 then trouble can start. In this case the behaviour depends on whether all three notes are read in the same call to arpReadInput() or not. If all three notes are read in the same call then they will be sorted correctly in to a three note sequence when arpBuildSequence() is called. However if the first call to arpReadInput() only gets the "3" note then Aprie will immediately start to play the one note sequence of "3". A subsequent call to arpReadInput() will get notes "1" and "2" and for the next beat the expected three note sequence will be built. This would give the output I described above.
As a user you can kind-of work around this by making sure you play the chord as 1-2-3 in sequence but it's tricky and perhaps defeats the object of having an "up" mode.
I think there is a trade-off between responsiveness and handling of race conditions between notes of what the player intends to be one chord. It might be useful to have a very short buffer before you start playing a new chord to make sure that there are no other notes coming along. It's a tough call and I don't know what commercial products do.
Sequencer mode - play a specific sequence of notes instead of an arpeggio. Could be entered via a new selection on the the mode menu, with each note input by pressing and holding the relevant data entry button corresponding to the sequence step while playing the desired note. Or upon entering a "record" mode (somehow), simply record the next 16 notes played as the sequence data (similar to my Novation BassStation2)
My Arpie has stopped sending MIDI notes, RX LED lights up when I play a note on my MIDI keyboard. Nothing appears to be going through the MIDI output even though the TX LED lights up when notes are received via the MIDI input or in hold/inst without keyboard. The LEDS for IC1 and IC2 show that there is life and I have selected the appropriate MIDI channels, I have tried different synths and MIDI cables and all the solders and resistors are fine but the problem remains.
I have found a fix for this - the following change to arpie.ino is needed:
In the Midi Write function (about line 665) the code needs to be changed from this:
// send channel message
if(midiOutRunningStatus != statusByte)
{
Serial.write(statusByte);
midiOutRunningStatus = statusByte;
}
if(numParams > 0)
Serial.write(param1);
if(numParams > 1)
Serial.write(param2);
to this:
// send channel message
if(midiOutRunningStatus != statusByte)
{
midiOutRunningStatus = statusByte;
}
Serial.write(statusByte);
if(numParams > 0)
Serial.write(param1);
if(numParams > 1)
Serial.write(param2);
I hope that this helps for anyone else with this issue.
Randomised or psuedo-LFO'd velocity mode to add some crazy variations
Would be nice to have modes which morph a sequence each time it is played, or otherwise add glitchiness to the arp sequence
Hello, I have completed building my kit, al of the voltages are correct, I am getting all of the correct LED flashes as demonstrated in the build guide and all of the parts are correctly installed. I have triple checked every component to make sure that I haven't reversed any polarities and everything is fine. Even though everything seems to be fine on the main board not much is happening on the control board, none of the buttons react, none of the red LED's light up and the blue LED's never light up the same whenever I restart the machine. Are the control board IC's causing these problems? How can I troubleshoot them? And most importantly, how can I get this thing working?
If I have a sequence where two same notes overlap, for example G4 followed by another G4 there will be a stuck note after the second has finished
I was using a Sequentix Cirklon with a 16 step pattern. Active steps were numbers 1, 3, 5 etc. They all had a length of 1/4th bar.
I used a function on the Cirklon to randomize note values on some of the active steps. This pattern was sent to an Arpie and then on to a Novation Basstation. The note would be stuck on the synth if there were two same notes. (G4 for example).
Hi
does anybody know what the value for C1, C2 on the control surface board should be?
Thanks
6040
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.