gligli / p600fw Goto Github PK
View Code? Open in Web Editor NEWTeensy++ based Sequential Circuits Prophet 600 firmware remake
Home Page: http://gligli.github.io/p600fw/
Teensy++ based Sequential Circuits Prophet 600 firmware remake
Home Page: http://gligli.github.io/p600fw/
The new firmware is super nice :) One feature I'm missing from the old one is to lock chords in unison mode via footswitch. Old operation worked as follows:
then every note would lock that cord to each individual note. I liked that feature, and I'm curious if its coming back.
In the original firmware the footswitch could also be used to latch the arpeggio. This isn't needed as the record button provides the same function, so this is less important.
Also, any chance the foot switch can be configured as a damper pedal? And maybe the CV filter port could be configurable as well? I could never get my Moog expression pedal to affect filter cutoff, so either my model has a broken connection or the Prophet utilizes a different voltage scheme than the Moog can provide.
Thanks for the good work!
Using the Nov 2 Alpha here! I noticed with the new menu, there is no way to select your Unison mode. I'm assuming that Unison mode is always all six voices on with selectable detuning through the Performance Page.
If this is the case then unstable voices might be causing phase issues with my bass lines where I get my sub bass fading in and out as much as 6dB at a very low rate. The Detune paramater is all the way down and in most of my sub basses, Sync is on so detuning of individual oscillators within a voice should not be an issue.
If this is a phase issue, is there a way in the Nov 2 Alpha to set up a one voice unison mode? I see that you have a little bit of space left in the Performance pages!
Thanks for the firmware update though. It really is making a world of difference with this synth.
It would be nice to be able to go into service mode so we can adjust scaling. Swapping back to Z80 for it seems tedious.
I have additional LFO modes in my special branch:
I'd like to push my branch up but I don't have permission!
I also don't know if these experimental patches should be merged in at all, but meanwhile I have a repo in a link on my p600 page: http://jhhl.net/Software/p600.html . It's a little out of date, but I'll merge in the latest master when the dust clears!
issue described here: http://www.gearslutz.com/board/9451673-post255.html
voice 4, oscillator B seems to be stuck, if i press four keys, the fourth notes is always the same - any ideas? If I play in unison mode i also hear the stuck voice on oscillator B.
I bought a teensy without pins by mistake, so i had to solder them myself - could it be as simple as a bad joint?
I've come across another issue unfortunately. :(
I can't seem to use my presets anymore since the upgrade. When I store my sound to a preset and go to preset mode, it only shows the saved preset number on the display and i cannot switch to another preset.
When I press a different number, it just jumps back to the preset number I stored.
Turn on the arpeggiator, press a couple of notes, latch the arpeggiator by pressing RECORD (or using the sustain pedal), then release the notes. The arpeggio will continue to play. Finally release the latch by pressing RECORD (or releasing the sustain pedal). The arpeggio will stop, and the last note played will hang.
I believe the original P600 works this way too, but it seems an annoying feature. The last note should not hang but just stop once the latch has been released.
When using a hold pedal over MIDI (CC 64) the notes aren't held, the VCA release is just set to maximum.
I installed update 26-10-2013
I was testing out features and noticed that OSCB Freq also changes Freq of OSCA very consistently.
I turn the OSCA mix knob all the way off, OSCB mix all the way up, and adjusting Frequency on OSCA has no effect on OSCB tuning. good as expected.
Now I Turn up OSCA mix...
I turn the OSCB mix knob all the way off and adjusting Frequency on OSCB changes OSCA tuning.
At the highest position of OSCB frequency, OSCA goes silent.
I had not noticed this on older versions of the software.
This may be related to the other issue.
If a MIDI clock is received during an upgrade, this causes the upgrade to fail. While this is not something one would to knowingly, it is easy to have, say Cubase running, with the MIDI clock output set to Continuous, and try to perform an upgrade simultaneously.
I have not checked the actual MIDI data stream, but I would think that the MIDI clock, being a MIDI Realtime message, can be inserted in the middle of a sysex package, which the boot loader then cannot handle. The upgrade begins as normal, with U shown in the P600 display, but as soon as the upgrade sysex data is sent, the display changes to E. So the boot loader apparently properly waits for the sysex status byte, and it is later, once the sysex transfer has started, that the problem occurs.
Fixing it I suppose would not help existing units which are upgraded via MIDI, but should be noted in the manual anyway.
I have updated my Prophet 600 with the wonderful new firmware "gligli", the synth
sounds great, everything works fine, but now does not receive messages midi of (pitch bend and modulation wheel).
This is a problem to be solved in this firmware version, or i need to set something from the panel?. In addition, the midi out port does not send any kind of signal, what could it be?.
Sorry for my bad English and thanks in advance.
Hello by Ettore from Italy.
Incoming MIDI notes are limited to MIDI note 24, which is the lowest note on the Prophet-600 keyboard. This limits the use of an external MIDI keyboard somewhat.
for some reason oscillator B tuning is very wrong with p600fw. it is fine with the Z80 though. affects all voices. this is with october 26 alpha. pressing TUNE doesn't fix it. I quite like the microtonal sounds i'm getting but would be nice as well to get it in tune!
When in arpeggio mode:
Press notes, then press pedal, then release notes => notes latched, as expected
Release pedal => arpeggio stops, as expected.
However, when pressing the pedal first before the notes causes confusing behavior as follows:
Press pedal, then press notes, release notes => notes latched, as expected.
But then, release pedal => notes still latched (WRONG)
In this state, pressing extra notes causes them to be arpeggiated as well as long as they are held.
Pressing pedal again, then press new notes => arpeggiates over these as well, as expected,
release notes => all notes continue to arpeggiate, as expected.
Now, releasing pedal => new notes are arpeggiated, but not the original ones. There's a certain logic to this, but it seems too convoluted to be useful.
I'm wondering if the ordinary sustain pedal function of the pedal is getting confused with the latch function in some way?
Commit ae61cd9 seems to have introduced a bug in the arpeggiator: since the note range for the keyboard is now 24..85 instead of 0..60, the entry of notes in up/down mode into the arp.notes array which has a size of 128 entries can cause notes to end up in the wrong order.
Should be easy to fix, either increase the size of the arp.notes array, or rescale the note range within the arpeggiator to 0..60 as before. I'm working on a fix, and will commit it to my fork once I've tested it.
I think it would be good if the first time you access a misc settings parameter, it just shows the original value without changing it. That way you can see which value for instance the MIDI IN channel is set to without changing it. My idea is that when you press From Tape + 1, the first time it just shows the currently set value, but if you hold From Tape and press 1 again, it will start changing to the next value.
After commit 1184aeb the chord memory function doesn't work properly. When holding the chord and switching to unison mode, they voices are not silenced as they should be, and after releasing the keys most often one of the voices hangs (i.e. is not gated off). The actual chord memory function works as expected, i.e. pressing a single key results in the programmed chord to be heard, however, if there are still available voices the drone from the hanging voice still remains.
I've been inspecting the source code, and it looks like it would be pretty straightforward to implement custom tunings (similar to the prophet v3's custom tuning feature) of each of the 12 notes in the scale.
I'd be happy to implement this, but I haven't purchased a p600 yet, and I was hoping with your knowledge you could confirm if this is a valid/sane project before I start!
I know holding FROM TAPE and hit PROGRAM 6 dumps ALL presets (which is very nice because this wasn't possible before), but I want to dump the current program bank only (by holding RECORD and hit PROGRAM 2, or sending F0H, 01H, 00H, 0ppp ppp, F7 in Logic Audio in the old Z80). This used to send the 16 bytes of the stored Non-Volatile program that is displayed in the PROGRAM display. Could you please put this back and let us know what the new dump request code will be, thanks!
PS will this dump all the extra new parameters as well? Could you please publish the new p600fw 2.1 program bit map? (like the old Z80: http://users.skynet.be/aemit/seq/p600.html). I'm re-building a my old P600 editor in Max and need to now the new program bit map.
I just installed the Teensy chip with the newest firmware, but Voice 4 of Ocillator A is behaving very strange. Every time I do a scale on the keyboard the notes are way off. an E-4 sound immensely high and then F-4 sounds so low it is only beating. this is jumping to random notes on all keys.
I turned off the other voices to see which voice gave the issue and only Voice 4 of Osc A has this problem.
With the old Z8 CPU i did not have any issues with this voice.
Does this just sound like bug, or might this be a faulty Voicechip anyway?
Regards,
Ingmar
Switching on arpeggio, then pressing and holding a few notes, press pedal, then release pedal, still while holding the notes, causes the arpeggio to stop. This seems odd, logically it's just the latch function that should cease, not the arpeggio itself. This behavior is the same when using the RECORD button.
Hi
I 'm translating FirmwareUpgrade document to Japanese.
Document shows
1.Wire soldering modification
2. Flash Teensy
3. Remove 5Volt Connector
Why [Remove 5Volt Connector] after [Flash Teensy]?
I dont know well Teensy. Do we need Flash Teensy before Remove 5Vlot Cut.
I think it is more smart as follow as
1.Wire soldering modification
2. Remove 5Volt Connector
------------end of Teensy Hardware modification.
3.Flash Teensy
'From Tape + 7' is supposed to set a basic sawtooth patch, but in actual fact, there is no change whatsoever to the currently loaded patch. Tried it in both Preset mode (where I expect it to work) as well as in Manual mode (where I wouldn't expect it to work as the machine should follow the front panel knobs at all times).
When using the RECORD button while the arpeggio is running, the record LED lights up to indicate that latching is active. However, when using the sustain pedal to latch the arpeggio, the RECORD LED only indicates the latch status after a knob has been turned (only tested with the SPEED knob at the moment). I.e. pressing the pedal in arpeggio mode will not cause the RECORD LED to light up until a knob (or possibly just the SPEED knob) has been touched.
my filter cv in is not working anymore after the upgrade! is there still an issue open, which i can't find?
Wouldn't it be more practical if the value shown in the display when the knobs are turned was, for instance 0.0 to 10, instead of 0-255? I agree that 0-255 is probably very useful for debugging, but for an ordinary user, 0.0 to 10 would better match what is on the panel.
Bonjour et bravo pour ce travail ambitieux!
J'ai un prophet 600 et effectivement toutes les caractéristiques que vous améliorez en avaient besoin!
Simplement, étant claviériste, un défaut que je lui trouve par rapport à des claviers modernes, est l'impossibilité d'avoir un mode de clavier solo et unisson, donnant la priorité à la dernière note jouée (qu'elle soit plus haute ou plus basse)...
J'ai récemment acheté un creamware pro 12 étant censé être une émulation du prophet 5 (mais le son n'y est pas), et ce mode s'appelle single...il est vrai que c'est vraiment plus agréable à jouer que si la priorité est donnée soit seulement à la note la plus basse ou la note la plus haute...et les possibilités de jeu sont de ce fait multipliées!
Donc ma question était: serait-il possible d'apporter une amélioration à ce niveau-là?
Cordialement,
Fabien S.
After playing an arpeggio in latched mode (Record LED lit) and releasing the keys, when pressing Record again the arpeggio stops, but the last note played hangs, rather than does a note off as it would if latched mode were not used.
In the 1.0 manual, the firmware upgrade procedure did not include reconnecting the 5V connection that was severed after loading the initial firmware, before mounting the Teensy board in the P600. Was this a mistake? Surely it would have to be reconnected if it was necessary in order to do the initial programming?
I now see that the 2.0 manual says to upgrade via MIDI, which of course makes it all much easier. However, if an upgrade this way fails, I assume it is necessary to go back to USB mode?
So to the question: can the Teensy be upgraded while installed in the P600 and getting power from it, or does it have to be removed (and the 5V connection remade) before upgrading? I realize the battery is in the way of plugging an USB connector into the Teensy board when it is mounted on the P600 board, which brings me to the next question: is the battery (and RAM) on the P600 board in fact used by p600fw, because otherwise the battery could be removed which would make it possible to program the Teensy while it is mounted on the P600 board.
(Due to the issues with clicks mentioned elsewhere, I decided to remove the Teensy from the P600 and reinstall the Z80, and noticed that all the patches still seemed to be intact, indicating that p600fw actually does not use the P600 RAM).
It would be handy to be able to a) see the original value for a parameter in a patch (for instance in order to set it at its original value during editing) and b) to just view the current value of a parameter, without changing it.
An idea would be to press TO TAPE and FROM TAPE respectively, while turning the corresponding knob. For instance, for b), pressing TO TAPE while turning a knob could display the value of the relevant parameter, whether it has been edited or not. And for a), pressing FROM TAPE while turning a knob could display the original value stored in the patch (assuming the machine is in preset mode).
In both cases, it would be handy to expand this to more than just rotary parameters, also things like waveforms and filter tracking could be displayed.
Set up a patch with a fairly long attack (a couple of seconds). The effect is most noticeable with a short decay and zero sustain level.
Now, play a chord. Note how all voices do not enter the decay phase at the same time, which they should. Both the filter and amp envelopes show the same effect. The actual times seem to vary randomly (within a certain limit), but it could have something to do with the voice allocation too.
I have updated my Prophet 600 with the new firmware version "26-10-2013" and the new features are really useful to build more complex sounds, the ability to synchronize the arpeggiator with the outside world is fantastic.
But right now my synth sounds only in a monophonic mode, perhaps to do with the parameters "select voice" and "kill selected voice" someone explains to me what function do they perform?
Thanks again for availability.
Hello from Italy by Ettore.
Have a problem with the bend wheel (release 2.0), as follows:
When bending down from max to the zero detent on the bend wheel, it seems as if the resulting pitch is not always the same, even though the value shown in the display is the same every time (such as 4.5, i.e. 145).
An illustration can be found in the first part of http://www.butoba.net/P600-bend.wav .
Also, just as with the original Z80 firmware, the bend range is not exact interval at the extremes. I would suggest adding at least the top level to the calibration routine, so that it could calculate a perfect interval from the center to the max and min values.
Finally it would be nice to implement some form of dead band so that the pitch is not too sensitive around the zero detent area.
If playing 8 notes or more at a time, then releasing a key causes a voice to be retriggered with maximum velocity regardless of the velocity at which it was originally played, or indeed regardless of the velocity of any voice played.
By commit 6905b07
I need to handle the case where the queue is full, else some bytes will be lost.
It is hard to tell exactly what the behavior is, but it notes seem to sound a 2nd time upon release of a key. I could provide sound examples if it would be useful. Could this be an issue with my specific Prophet? I am using firmware from /dev/2013-11-02_2/
It seems the range of the Cutoff and the Filter Envelope Amount are a bit to wide.
When I set my cutoff knob open halfway (5) the filter already seems to be fully opened.
On the Filter Envelope Amount the effect seems to be at a maximum value when i have the knob set around 8 or 2 (so that's basically also halfway, considering the zero value is at 5).
Was this implementation done intentionally or might this be a bug?
Have a problem, release 2.0, as follows:
When playing one note after another, holding them down, sometimes a loud click is heard on the 5th and 6th note. It doesn't happen every time, one has to wait for about half a minute or so before the phenomenon occurs. If just playing the notes one at a time, it is usually not a problem, but occasionally it happens then too.
I've uploaded a .wav file of the audio output from the P600 at http://www.butoba.net/downloads/P600-clicks.wav . I simply took a picture of the patch used, at http://www.butoba.net/downloads/P600-patch.jpg . The purpose of the patch is to illustrate the effect, hence the low level of osc B, and the low amplifier sustain level, so that the new notes can be heard as they are played. It happens even if osc B is at zero, or the envelope sustain is at max. With the oscillators at max, the effect is less noticable, but still annoying.
Just attempted the mod of a friend's P600 today with less than desirable results. I followed all of the steps very close and double checked all of my work- jumping the correct pins, making clean solder connections, being careful with components, etc, but I'm afraid something must have happened because now when starting the P600 nothing happens aside from a high pitched drone slowly descending in pitch over time. No controls or keys on the keyboard work, nothing lights up upon power-up and nothing appears on the screen.
Here's a summary of what happened:
After installing the Teensy and closing the lid I powered up the P600 and it began tuning. It displayed the different oscillators on the screen as it tuned (a1, a2, a3, etc) and after the process had completed I began to hit keys to test the mod out. This is when I noticed that there was a problem. The pitch wasn't tracking with the corresponding keys and parameters did not seem to have their intended effect. At this point I decided that perhaps the Teensy had not been loaded properly so I powered down and took the chip out. I resoldered the connection that I had severed between the two pads on the bottom of the chip and re installed the software on the teensy. I unsoldered the pads on the bottom and put it back into the P600- now I got nothing out of the P600 except the drone described above. I decided to install the original Z80 to see if the P600 gained back original functionality, but it does the same thing! I have gone over the entire board with a fine toothed comb looking for broken connections but I don't see any, and all of the socket pins are making connection (the light on the Teensy was even lighting up orange).
If anyone has any ideas or advice I'd really appreciate it. I'm not a complete noob with electronics and this really wasn't a difficult mod. It seems like the P600 isn't booting correctly; like the oscillators are just freely drifting without anything having influence over them. Or perhaps that it never begins or completes the tuning process?
I really appreciate any help or advice.
This seems to require support from the firmware, and doesn't seem to be implemented yet. Does that seem true?
The corresponding velocity value for the internal keyboard is set to 127, which is rather unusual, normally the velocity level of a non-velocity sensitive keyboard is set to 64 by default, so that one gets an average velocity value when playing.
As it is now, when using patches with velocity sensitivity turned up it is virtually impossible to get them to sound the same on both the internal and external velocity sensitive keyboard, as one has to play at maximum velocity on the external one to get the same velocity value as the internal one produces.
(Release 2.0). I don't know if this is software or a hardware limitation, but when using the bend wheel the resulting pitch is clearly stepped. There's an illustration of this in the second half of http://www.butoba.net/downloads/P600-bend.wav .
The bend range here is set at an octave; when setting a fifth or two semitones, respectively, the steps become progressively smaller, which indicates that it is not the CV output to the oscillators that has a limited resolution but that the problem is in the software. When turning the bend wheel the display shows quite a few changes in the value before a change in pitch (i.e. a step) can be heard.
As hinted in issue #23, the key assigner always starts at the lowest voice number, rather
than cycling through the voices. This is not the same as in the original P600, which always seems to cycle through the voices. Normally it is not a problem, but with patches where each individual voice sounds different, e.g. when using poly-mod from oscillator B to oscillator A, this means that the behavior is different between an unmodded and modded P600.
I've uploaded a patch to http://butoba.net/downloads/assign-cycle.diff which attempts to fix this. I've tested it and it seems to work.
Hi and thank you so much for your work on the upgrade!!!
I just upgraded to the okt26 version and found some issues.
Issue 1
First there was no sound, than I pressed FromTape->5 and than only one voice played like in mono mode.
All patches where like this.
Than I cycled through all the voices hitting FromTape->4 and than FromTape->5 to turn all the voices on and off. That made it work like it should in poly mode with all the patches.
Than I turn of they synth and on again and it had the same problem again. I had to turn off and on all the voices again and save one patch and than it worked like it should. Now I can turn on and off with no problem.
Issue 2
In unison with newest note priority, hold down one low not with left hand (hold it the whole time) and than playing some notes with the right hand. Doing this makes the key assign act strangely. Sorry can not describe it with words. Just try it out :)
Issue 3
I have not used midi that much so I might be doing something wrong but connecting both midi in and midi out at the same time to my midi interface seems to cause some kind of midi feedback and the synth goes crazy and plays all the voices and starts to make strange sounds.
I have also quite few suggestions I think would be cool for this upgrade.
Wouldn't it bee cool if the beta users could post there ideas for the upgrade somewhere at the same place so we can discuss them?
Here are some thoughts that came up when I first tried the P600 with the upgrade.
I don't know if all of this is possible though.
Respect!
Magnus
Hello again. Great feature upgrade to allow pulse tempo control of the arp.
I'm sending pulses from Roland CR-5000. The speed dial's slowest setting is at 12 o'clock, and full right seems to be at only .333 tempo speed.
I just read while posting that the clock is between 1/3 and 1/386. Any chance to support 1/1 (maybe at the 12 o'clock position) and inverse proportions? I'm not sure what is feasible here, or what ideal increments would be (1/2 and 2/1 would be useful)
Thanks!
I have calibrated the pitch wheel and al other pitch wheel range settings work as they should. Has anyone else experienced this issue?
It would be nice if the potentiometer values were displayed also in preset mode. One way to do this would be that when turning a knob, the value would be displayed for a couple of seconds, before reverting back to the preset number.
I was going to test the current tip of the master branch today, in order to verify that your continuous scanning commit (SHA1 1184aeb) worked on the machine we had.
Since I normally run Linux and Debian Linux has ready to run avr-gcc compiler I decided to give it a shot. Mostly it built straight away, however, the -fuse-linker-plugin option didn't work with my particular compiler setup so I removed it, and per the man page for gcc replaced it with -fwhole-program. Building then went fine, as did the download, and the file size of the resulting .syx is similar to your 2.0 release.
However, upon starting up after upgrading via MIDI, the firmware didn't run properly. It didn't actually crash, there was activity in the display, but not what was to be expected, and pressing TUNE caused the TUNE led to light up, The machine didn't seem to respond to playing the keys.
Now, I don't expect you to debug this, being a different platform etc, but I wanted to know a bit about your build environment, or if you noticed similar behavior during your development, and figured out some cause for it.
Do you know anything about the -fuse-linker-plugin option specified in the Makefile, or was it just there in the original Makefile that you took for the project?
Which version of avr-gcc are you using? (Mine is 4.7.2).
Have you had similar problems with the machine being unresponsive that you could relate to the firmware not running fast enough, and hence tweaking optimizations etc to get it to work? I've noticed a number of FORCEINLINE (and LOWERCODESIZE) qualifiers, are these the result of actual problems or are they more a feeling on your part for what needs to be run quickly in the software?
If the worst comes to the worst I can always switch to Windows in order to compile the firmware, but it's awkward as I never use Windows for anything else.
I was also wondering if you could perhaps somehow send me or upload somewhere a .syx file of the current master branch tip, so that I can verify that it fixes the VCF CV drift problem in this particular P600.
When powered up, the machine is always set to MIDI sync, regardless of what the previous setting was. Suggestion: save the sync setting so that when powering up it is the same as before.
Hi,
First off, I wanted to say that I am thoroughly impressed with the progress you have made so far. The current "alpha" build is playable and sounds great. I was directed to this project from Minisystem's blog -- I had been following his project and provided small bits of consulting from time to time during the development work he was doing.
Just wanted to provide a few bits of feedback / comments about the current build. I have a working Prophet 600 and am excited and happy to provide feedback and testing as you progress, so please let me know if there is anything specific you'd like tested.
The main synth engine is working quite nicely -- the only things I have noticed that are easily quantifiable at the moment are:
Also, I noticed that you use NetBeans as your IDE and MHV_AVR_TOOLS_20121007 for compiling / etc. I set this up and am having some difficulty getting your p600firmware project to compile.
When you get a moment, it would be very helpful if you posted some basic setup instructions on how the environment is configured.
Very excited about the project - thanks!
-Derek
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.