Git Product home page Git Product logo

nomadbyte / bristol-fixes Goto Github PK

View Code? Open in Web Editor NEW
9.0 2.0 4.0 5.15 MB

Unofficial fixes and extensions for Bristol synth emulation package by Nick Copeland: https://sourceforge.net/projects/bristol (hopefully, some could be integrated into the project)

License: Other

Makefile 4.28% C 88.41% Shell 5.68% Roff 1.32% M4 0.23% C++ 0.08%
synth odyssey synthesizer bristol emulation midi audio hammond

bristol-fixes's People

Contributors

nomadbyte avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

bristol-fixes's Issues

odyssey: MARK I/II skins should likely correspond to Mk II

ARP Odyssey: MARK I/II switch is likely meant to be Mk II (Mk2: "golden" , Mk3: "orange") ref-1.

The black-gold face was introduced while still at Mk I. However, given the PPC (proportional pitch control) buttons, it indicates rather the Mk II, as the Mk I had the rotary pitch bend knob.

The black-orange face was introduced at Mk III.

Linux: `make` fails on 'libbristolaudio/audioEngineJack.c' due to 'alsa/iatomic.h' not found

Building the original bristol-0.60.11 sources on Ubuntu 18.04 fails due to 'alsa/iatomic.h' not found. It's being included in 'libbristolaudio/audioEngineJack.c'. Below is the error log.

make
...
gcc -DHAVE_CONFIG_H -I. -I..   -I/usr/X11R6/include -pthread -Wall -g -I./../include/slab -I./../include/bristol -DBRISTOL_HAS_OSS=1 -D_BRISTOL_DRAIN -DBRISTOL_HAS_ALSA=1 -D_BRISTOL_JACK -D_BRISTOL_JACK_MIDI -D_BRISTOL_JACK_SESSION -I/usr/include/alsa   -g -O2 -I/usr/X11R6/include -MT audioEngineJack.o -MD -MP -MF .deps/audioEngineJack.Tpo -c -o audioEngineJack.o audioEngineJack.c
audioEngineJack.c:42:10: fatal error: alsa/iatomic.h: No such file or directory
 #include <alsa/iatomic.h>
          ^~~~~~~~~~~~~~~~
compilation terminated.
Makefile:323: recipe for target 'audioEngineJack.o' failed
make[2]: *** [audioEngineJack.o] Error 1
make[2]: Leaving directory '/home/developer/work/bristol-develop/libbristolaudio'
Makefile:366: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/developer/work/bristol-develop'
Makefile:297: recipe for target 'all' failed
make: *** [all] Error 2

odyssey: OSC1 in LFO mode generates audible frequency

ARP Odyssey: OSC1 generates low but still audible freq (did not measure the exact freq).

OSC1 KBD/LF switch in LF-mode should result in the generation of lower (inaudible) frequency: 0.2-20Hz ==> 2.0e-1|2.0e0|2.0e1.

odyssey: VCF keyboard tracking has a rather drastic effect

ARP Odyssey: VCF slider in keyboard tracking mode (KBD CV switch up) seems to be overly aggressive??, non gradual. It jumps from bright sound at 0-level, but when off-zero it drops to very muffled sound, even at higher VCF cut-off.

The VCF slider is supposed to track the VCF cut-off freq, based on the selected voltage-source. In the KBD CV mode, the control voltages applied to cut-off should correspond to the pressed keys. I understand that VCF cut-off freq tracking is supposed to act similarly to keyboard tracking of the main OSC1,2 frequency (+/- 1 V/oct ). So raising the VCF tracking slider in KBD CV mode should result in a gradual raising of the VCF cut-off (sound brightens) up until the full level corresponding to the pressed key tuning level.

Basically, there should not be that drastic cut-off jump off-zero slider level.

Cppcheck reports issues, likely due to typos

These issues flagged by cppcheck were previously reported by user: dcb to Bristol Project and remain unfixed:

Bristol-Bug: 94
Bristol-Bug: 95

These seem like typos, probably unnoticed in usage due to effective code paths, still should be easily fixed.

Allow UTF-8 with emulator profile file

ATM, as soon as we want to map a note to an extended ASCII character on a keyboard, we have to save the emulator profile file in some ISO 8859 to constrain such character on one byte.

To use UTF 8 coding with emulator profile files, (or any other multi bytes coding), (unsigned) int or char declarations would have to be replaced by wchar_t.

Linux: Building with GCC 10 fails with 'multiple definition of' linking errors

Building with GCC 10 fails with linking errors:

bristol.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: multiple definition of `blo'
arpdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: first defined here
dco.o:/home/testuser/bristol-develop/bristol/dco.c:42: multiple definition of `note_diff'
arpdco.o:/home/testuser/bristol-develop/bristol/arpdco.c:42: first defined here
dco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: multiple definition of `blo'
arpdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: first defined here
expdco.o:/home/testuser/bristol-develop/bristol/expdco.c:43: multiple definition of `note_diff'
arpdco.o:/home/testuser/bristol-develop/bristol/arpdco.c:42: first defined here
expdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: multiple definition of `blo'
arpdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: first defined here
filter2.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: multiple definition of `blo'
arpdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: first defined here
filter.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: multiple definition of `blo'
arpdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: first defined here
filter.o:/home/testuser/bristol-develop/bristol/filter.c:148: multiple definition of `pidsr'
filter2.o:/home/testuser/bristol-develop/bristol/filter2.c:150: first defined here
hammond.o:/home/testuser/bristol-develop/bristol/hammond.c:48: multiple definition of `note_diff'
arpdco.o:/home/testuser/bristol-develop/bristol/arpdco.c:42: first defined here
junodco.o:/home/testuser/bristol-develop/bristol/junodco.c:42: multiple definition of `note_diff'
arpdco.o:/home/testuser/bristol-develop/bristol/arpdco.c:42: first defined here
junodco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: multiple definition of `blo'
arpdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: first defined here
lfo.o:/home/testuser/bristol-develop/bristol/lfo.c:41: multiple definition of `note_diff'
arpdco.o:/home/testuser/bristol-develop/bristol/arpdco.c:42: first defined here
prophetdco.o:/home/testuser/bristol-develop/bristol/prophetdco.c:50: multiple definition of `note_diff'
arpdco.o:/home/testuser/bristol-develop/bristol/arpdco.c:42: first defined here
prophetdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: multiple definition of `blo'
arpdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: first defined here
sdco.o:/home/testuser/bristol-develop/bristol/sdco.c:44: multiple definition of `note_diff'
arpdco.o:/home/testuser/bristol-develop/bristol/arpdco.c:42: first defined here
vox.o:/home/testuser/bristol-develop/bristol/vox.c:62: multiple definition of `wave1'
hammond.o:/home/testuser/bristol-develop/bristol/hammond.c:73: first defined here
vox.o:/home/testuser/bristol-develop/bristol/vox.c:63: multiple definition of `wave2'
hammond.o:/home/testuser/bristol-develop/bristol/hammond.c:74: first defined here
vox.o:/home/testuser/bristol-develop/bristol/vox.c:43: multiple definition of `note_diff'
arpdco.o:/home/testuser/bristol-develop/bristol/arpdco.c:42: first defined here
vox.o:/home/testuser/bristol-develop/bristol/vox.c:44: multiple definition of `samplecount'
hammond.o:/home/testuser/bristol-develop/bristol/hammond.c:49: first defined here
vox.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: multiple definition of `blo'
arpdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: first defined here
granulardco.o:/home/testuser/bristol-develop/bristol/granulardco.c:42: multiple definition of `samplerate'
midihandlers.o:/home/testuser/bristol-develop/bristol/midihandlers.c:636: first defined here
granulardco.o:/home/testuser/bristol-develop/bristol/granulardco.c:41: multiple definition of `note_diff'
arpdco.o:/home/testuser/bristol-develop/bristol/arpdco.c:42: first defined here
bit1osc.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: multiple definition of `blo'
arpdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: first defined here
bit1osc.o:/home/testuser/bristol-develop/bristol/bit1osc.c:50: multiple definition of `samplecount'
hammond.o:/home/testuser/bristol-develop/bristol/hammond.c:49: first defined here
cs80osc.o:/home/testuser/bristol-develop/bristol/cs80osc.c:44: multiple definition of `note_diff'
arpdco.o:/home/testuser/bristol-develop/bristol/arpdco.c:42: first defined here
cs80osc.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: multiple definition of `blo'
arpdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: first defined here
cs80osc.o:/home/testuser/bristol-develop/bristol/cs80osc.c:45: multiple definition of `samplecount'
hammond.o:/home/testuser/bristol-develop/bristol/hammond.c:49: first defined here
blo.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: multiple definition of `blo'
arpdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: first defined here
trilogyosc.o:/home/testuser/bristol-develop/bristol/trilogyosc.c:43: multiple definition of `note_diff'
arpdco.o:/home/testuser/bristol-develop/bristol/arpdco.c:42: first defined here
trilogyosc.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: multiple definition of `blo'
arpdco.o:/home/testuser/bristol-develop/bristol/./../include/bristol/bristolblo.h:50: first defined here
trilogyosc.o:/home/testuser/bristol-develop/bristol/trilogyosc.c:44: multiple definition of `samplecount'
hammond.o:/home/testuser/bristol-develop/bristol/hammond.c:49: first defined here

odyssey: No output for PINK noise

ARP Odyssey: when selecting the noise type switch to PINK, there's no noise output. Switching it back to WHITE restores the output signal to white noise.

odyssey: WHITE/PINK noise switch shown reversed

ARP Odyssey panel WHITE/PINK noise switch:

  • Currently, the panel shows the WHITE/PINK noise switch with PINK label on top. Originally it is expected to be in the reverse orientation (top:WHITE, bottom: PINK)

odyssey: Diminished OSC1,2 tune range (both coarse and fine)

ARP Odyssey: The OSC1/OSC2 frequency COARSE slider is expected to have a range of 20Hz - 2kHz, basically 6 octaves (in KBD mode), here it only allows roughly one octave (bottom-top). In LFO mode the oscillator's COARSE range is expected to be 0.2Hz-20Hz (roughly 6 octaves).

Per Mfg. specs ref-1:

  • OSC1 Coarse tuning:(KBD/LF:KBD) bottom:20Hz, top:2kHz, mid:200Hz
  • OSC1 Coarse tuning:(KBD/LF:LF) bottom:0.2Hz, top:20Hz, mid:2Hz
  • OSC1 Fine tuning:(KBD/LF bottom:-400cent, top:+400cent, mid:0 (+/- 4 semitones)
  • OSC1 Pulse width: bottom:50%, top:5%

extended ascii char. from keyboard are ignored

When playing notes with computer keybord, neither extended ascii key nor dead key
can be used for mapping.
Then, e.g. with a french azerty keybord, only the bottom set of keys is usefull.

There are in fact two different issues :

  • the extended ascii keys : only one line of code has to be changed!
    In brightonControllers.c, inside brightonMapKeyboard method, the "from" variable
    must be declared "unsigned char" in place of "int".
    That's it! Well almost: the profile file must be coded in any kind of iso 8859
    to get extended ascii characters on one byte.

To use UTF 8 coding (or any other multi bytes coding), (unsigned) int or char
declarations would have to be replaced by wchar_t. That's an other story.

  • the dead keys (on a french azerty keyboard, the key "^" between "p" and "$" is one of them...)
    Here a list of substitutions is needed. Can be done by adding a dynamic array to brightonWindow. It's not
    very clean but it avoids any other change of existing struct definitions. To fill this
    array, add a optional fourth field to "KM" records in the profile file.

Solve the first issue would be already a big step forward, for a very little price.

See #93 extended ascii char. from keyboard are ignored

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.