Show HN: Contrapunk – Real-time counterpoint harmony from guitar input (contrapunk.com)

by waveywaves 56 comments 118 points
Read article View on HN

56 comments

[−] anentropic 40d ago
Very cool!

FYI in this phrase: "AI is not going to kill music till people keep playing music together."

The "till" (until) kind of inverts what I think is the intended meaning.

A better replacement would be "as long as".

[−] owenfi 40d ago
I've been thinking of and briefly working on a similar project.

One idea is to analyze timing as well, and "trigger" things after certain sequences (so play 1-3-5 as say eighth notes and then get an in-rhythm arpeggio one octave higher) or detect the beat and play on the upbeat.

I haven't done any Rust, but this might give me a good reason to give a try.

Have you considered making it a plugin? (makes replay easier in my opinion, but brings other pain like relaunching the DAW between builds...)

[−] Slow_Hand 41d ago
Cool idea!

I've got a few thoughts for features, if you're open to them:

1. Ability to specify where your "played" voice resides in the voicing: As the bass note, as an inner voice, or as the top line.

2. Options for first species, second species, third, florid, etc counterpoint for each of the generated voices. Ex: You play a single note and the upper voice plays two notes for every one of yours, etc, etc.

3. If you want to get real fancy, make the generated voices perform a canon of your played notes.

[−] chrisweekly 41d ago
"Realtime" as in "while playing guitar" has some pretty challenging latency requirements. Even if your solution is optimal, hardware specs will play a meaningful role. I'd be really interested if you've solved for this e2e.
[−] Lycomedes1814 39d ago
Harmonies: I notice that the Bach mode in C major, given the notes C-D-E, produces Dm7 Em7 Fmaj7. Something like C G7 Am would be more Bach.

If you're interested in adding more scales, I have a wider range in my scale builder: https://xn--langy-yua.net/skala

[−] dundercoder 40d ago
I’m very excited to try this. I haven’t looked deep into it but Steinberg makes an sdk for vst/au development. It has rust bindings!

https://steinbergmedia.github.io/vst3_doc/vstsdk/index.html

[−] korginator 40d ago
There was a 1970's Indonesian progressive rock band called Contrapunk that released an album called "Putri Mohon Diri" [1]

You can find the recording on YT [2] They were really unique - blending traditional Indonesian instruments, intense guitar work and classical influences.

[1] https://www.discogs.com/release/17424685-Contrapunk-Putri-Mo...

[2] https://www.youtube.com/watch?v=jb1792ZuXcY

[−] seertaak 40d ago
Gradus ad Parnassum! What a cool idea, and the fact it's counterpoint gives you a nice little time buffer for any DSP. Super cool
[−] pieterk 40d ago
Nicely done! I saw you're building a cloud version so wanted to refer the excellent https://github.com/sonosaurus/sonobus which you might be able to integrate. All the best!
[−] marssaxman 41d ago
What a cool idea. I don't have a music setup capable of running this right now - perhaps in a couple of months - but if you were to post some sample recordings, I'd gladly listen to them.

How do you generate velocity values for the accompaniment notes?

Given that you already have a pitch tracker, it could be interesting to add key detection; just start playing, instead of telling the machine what key you're in, and it starts following along as soon as it catches on.