TankDrum - Virtual tankdrum instrument to play record songs
#1
TANKDRUM is a virtual instrument you can play and play & record little tunes with using the sound of a real Tankdrum.   It's easy to use - just click on the drum notes to play them.  Hit R to record your playing in real-time.  You can record over your song several times to add more notes and make more complex patterns (called overdubbing).  Hit P to play back your song.  Hit C to clear it and start over.   Your song can be saved to file and loaded again later.  Hit M to popup a MENU for a complete list of commands.

This is an updated & improved version of TankDrum.  Sounding notes are now highlighted for visual effect.  File saving/Loading is now included.  A few sample songs are now included.   Enjoy.

- Dav


.zip   TankDrum-v1d.zip (Size: 809.45 KB / Downloads: 80)

   

Find my programs here in Dav's QB64 Corner
Reply
#2
Yeah I wish my smoke alarm alarm worked like this.

Is this the one where we had several kinds of drums and you could program rhythms in for each. Thumbs up for that one!

Update: Oh this is the one with lovely notes, cool, it's missing from my collection of Dav's programs.
b = b + ...
Reply
#3
Lol yeah it does look like a smoke alarm. 

The pattern making one was the qb64 drummachine - I will get that ready to post...

- Dav

Find my programs here in Dav's QB64 Corner
Reply
#4
RAD @dav

I'd love to check this out in a video and make some music with it.

I started a prototype design for a SOUND sequencer. The idea is to just use SOUNDs only (lo-fi!). 8 little sequencers using SCREEN 0 and SOUND. Super nerdy but fun! Also will help me learn how to use time based events (animation), etc.
[Image: SOUND64.png]


It will be the first project I try to make in QB64 AND QBJS at the same time. My rationale is that by creating a project in 2 spots (basically when milestones of progress are reached in QB64, do the same testing in qbjs) I can help the qbjs project and @dbox to find any issues, or make a good example for sharing later in samples section on wiki.

The neat thing about qbjs (and this might interest you @dav, too because you made this, so assuming you are into computer music general sense too): it supports not just square waves, but also sine, triangle, and sawtooth!

Right now I have a PR into qbjs to get the SOUND keyword added waiting on approval from @dbox, but it works as intended.

My other selfish thought is perhaps what we evolve / extend QB64 in QBJS could also be evolved / extended in QB64PE Smile @a740g @SMcNeil

Do these @ things work? How do we "tag someone"?

Thanks!!!!
grymmjack (gj!)
GitHubYouTube | Soundcloud | 16colo.rs
Reply
#5
(05-31-2023, 02:39 PM)grymmjack Wrote: Do these @ things work? How do we "tag someone"?

Thanks!!!!

Use this as template:

[xxx=xxxxx://staging.qb64phoenix.com/member.php?action=profile&uid=nnn]@somebodysname[/url]
  • Replace "[xxx=xxxxx" with "[url=https", I did it that way so the above is not automagically turned into a link.
  • Replace "nnn" with the member's number. Mine is 192, yours is 259. Visit the member's list or just hover over the link for somebody's handle.
  • Then after "at sign" it's courtesy to put down the right user's handle.

The "at-user" function of this forum is temperamental, doesn't always work.

About your sequencer: what if the user does music and wants to export it to WAV or something else?  "SOUND" then might be enough for playback but not for "internal" processing. Wink
Reply
#6
Nice work @grymmjack!  PR has been accepted and merged.  Dev build pushed to QBJS dev server: https://boxgm.itch.io/qbjs-dev
Reply
#7
(05-31-2023, 02:39 PM)grymmjack Wrote: RAD @dav

I'd love to check this out in a video and make some music with it.

I started a prototype design for a SOUND sequencer. The idea is to just use SOUNDs only (lo-fi!). 8 little sequencers using SCREEN 0 and SOUND. Super nerdy but fun! Also will help me learn how to use time based events (animation), etc.
[Image: SOUND64.png]


It will be the first project I try to make in QB64 AND QBJS at the same time. My rationale is that by creating a project in 2 spots (basically when milestones of progress are reached in QB64, do the same testing in qbjs) I can help the qbjs project and @dbox to find any issues, or make a good example for sharing later in samples section on wiki.

The neat thing about qbjs (and this might interest you @dav, too because you made this, so assuming you are into computer music general sense too): it supports not just square waves, but also sine, triangle, and sawtooth!

Right now I have a PR into qbjs to get the SOUND keyword added waiting on approval from @dbox, but it works as intended.

My other selfish thought is perhaps what we evolve / extend QB64 in QBJS could also be evolved / extended in QB64PE Smile @a740g @SMcNeil

Do these @ things work? How do we "tag someone"?

Thanks!!!!

Yeah. My idea is to extend
SOUND
not only with the waveform type but also a channel parameter. This suggestion was made by @RhoSigma and originates from AmigaBASIC.
See Amiga BASIC like
WAVE
and
SOUND
improvements · Issue #187 · QB64-Phoenix-Edition/QB64pe (github.com)

To ensure that all channels start playing the sound at the same time, we would also need to implement the AmigaBASIC like
SOUND _WAIT
and
SOUND _RESUME
.
Reply
#8
Heart 
(05-31-2023, 03:11 PM)mnrvovrfc Wrote:
(05-31-2023, 02:39 PM)grymmjack Wrote: Do these @ things work? How do we "tag someone"?

Thanks!!!!

Use this as template:

[xxx=xxxxx://staging.qb64phoenix.com/member.php?action=profile&uid=nnn]@somebodysname[/url]
  • Replace "[xxx=xxxxx" with "[url=https", I did it that way so the above is not automagically turned into a link.
  • Replace "nnn" with the member's number. Mine is 192, yours is 259. Visit the member's list or just hover over the link for somebody's handle.
  • Then after "at sign" it's courtesy to put down the right user's handle.

The "at-user" function of this forum is temperamental, doesn't always work.

About your sequencer: what if the user does music and wants to export it to WAV or something else?  "SOUND" then might be enough for playback but not for "internal" processing. Wink

Thanks.

Re: export - open a wave editor, route the input from the computer, press record ? https://vac.muzychenko.net/en/ something like this could work too.

I get what you are saying though. Smile

Back to Tankdrum, this is radical!!! Well done !!!

It sounds so beautiful.

This would be a great candidate to try in QBJS because you could have a mobile version maybe that would let us use multiple fingers to play it at once?

I know that we can record, then re record over it to do overdub recording, but was just thinking mobile would be amazing. imagine being able to tap with 5 fingers and trigger 5 of the notes in this wonderful instrument at once!

Also...

Did you have your own tankdrum that you sampled?

This is wonderful. Thanks for making it. <3
grymmjack (gj!)
GitHubYouTube | Soundcloud | 16colo.rs
Reply
#9
(05-31-2023, 09:54 PM)a740g Wrote: Yeah. My idea is to extend
SOUND
not only with the waveform type but also a channel parameter. This suggestion was made by @RhoSigma and originates from AmigaBASIC.
See Amiga BASIC like
WAVE
and
SOUND
improvements · Issue #187 · QB64-Phoenix-Edition/QB64pe (github.com)

To ensure that all channels start playing the sound at the same time, we would also need to implement the AmigaBASIC like
SOUND _WAIT
and
SOUND _RESUME
.

That would be kick ass!!!

Is MIDI device input a possibility for future of QB64?

I know in QBJS we can do it through WebMIDI
https://developer.mozilla.org/en-US/docs...b_MIDI_API - but I think to do it in QB64 we would need to use some kind of library or have access to the lower level stuff through SDL or alike?

Anyway, this is so great. I love that the language is so capable as it stands now, and really happy that the devs working on QB64PE are so open minded, willing, and eager to extend and grow what we can do!
grymmjack (gj!)
GitHubYouTube | Soundcloud | 16colo.rs
Reply
#10
(05-31-2023, 03:22 PM)dbox Wrote: Nice work @grymmjack!  PR has been accepted and merged.  Dev build pushed to QBJS dev server: https://boxgm.itch.io/qbjs-dev

Awesome!!! Thanks @dbox

Does QBJS support multi-touch on mobile? I'm not even sure how to ask the question but basically - imagine playing this drum Dav made with multiple fingers at once?

I would think yes, because of the Touch API in web? https://developer.mozilla.org/en-US/docs...uch_events

@dav sorry to spam your thread with so many questions and crosstalk.

You really should check this thing out - I want one some day (a man can dream): https://www.korg.com/us/products/drums/w...l_edition/

This is nutso awesome. https://www.youtube.com/watch?v=zOA1RSv0fss

It uses a real drum head, and mics and stuff in addition to triggers. Expensive, but man... so so rad.

I was considering getting a cajon just for rapping out beats and recording. Nothing beats hands on. The pad controls are sweet, so are midi, and if you have a electronic drum kit, awesome, but i don't have the room for that.

A Cajón would be ideal. A block of wood you sit on and bang beats out on lol.

I have used a table top too. There is this insanely cool ipad app called Impaktor by BeepStreet (they make other great stuff too, including a few great VSTs! and apps).. https://www.beepstreet.com/ios/impaktor

Anyway my mind is on fire with possibilities now Dav. Your work is inspirational.

One thing I wanted to say about the drum machine.. It seems like there is a limiter or compressor or some kind of dynamics DSP going on because when I stack multiple steps across with the full "hot" step, not the dark red, it somehow compensates to not clip.

I didn't look at the source yet I was having too much fun.

You are the man.
grymmjack (gj!)
GitHubYouTube | Soundcloud | 16colo.rs
Reply




Users browsing this thread: 3 Guest(s)