Retro Computers and Games Museum | Wroclaw, Poland

This is a virtual-tour that I took with my wife – who is a great retro gamer – to one of the most recommended places to visit by TripAdvisor : The Computers and Games Museum in Wroclaw, Poland.

We enjoyed everything from pictures hanging on the wall to Doom, Wolf, street fighter 1 , Mario, Donkey Kong and Space Invaders to the retro computer machines : Amiga, IBM, Atari, Commodore, Sinclair, Apple, Robotron, PET … etc.

It was a real journey to the past, I even got goosebumps when I stood before the Atari 600XL machine and in front of my eyes I saw scenes that happened 30 years ago in a different country, different time and different … everything basically where I was inserting the Missile Command cartridge in the slot, or putting the cassette into the cassette recorder and waiting to load for 30 minutes and sometimes there is an error after being seated next for long time and maybe it works and maybe not – a bug of some sort or a loading error – oh man, what great memories.

Enjoy the tour and feel free to subscribe in my channel 🙂
Thank You and have a blessed day.


Source link

Intro to Music NFTs


NFTs are simply: digital containers that hold any form of media. We then create scarcity by setting limited editions (i.e. you can make a music NFT to be a 1/1, so only one person can own it, creating demand, thus creating value). NFTs also have an embedded “smart contract” in them that allows the creator to set percentages on how much royalties they receive every time their work is resold.

Artists now have a new way of capitalizing their music, especially for furthering engagement within their community. Fans now have a way of “owning” digital artworks, all securely documented on the blockchain. NFTs enable engagement with your audience, for example, selling a one-off collectible digital item, selling super limited/rare works (B sides, unreleased materials, original one-offs, special edition NFT releases, digital assets, or creating your own currency for example for exclusive access to your content, or shows). Your audience can now become seed investors. It reinforces a personable artist to fan relationship.

❗ If you’re up for a read, here’s a significant article from earlier days that holds some of the basic ideas of why we’d mint music:

Although I don’t want to get into politics too much, a lot of this may sound like wishful thinking. I think we’re still in early stages so everyone is still figuring this out, but in general, the main ideas are there. Some quick points:

1 — Established artists have a leg up! If you have a following, it would be silly not to bank on this IMO. You’re simply using new tech to tap into a market.

2 — Audience decides the value of the work by auctioning to the highest bidder, but artists can set a starting bid too

3 — Most music NFTs lean towards Ethereum for the most part (most of these platforms revolves around ETH, WETH, or their own crypto). For example Rarible is a NFT platform that has its own RAR coin. Foundation has its own FND coin, etc. Ethereum is basically Bitcoin except it holds the smart contract technology embedded into it, so it’s compatible with NFTs.

4 — People treat digital equally with physical, and fans want to own things directly from the artist, they want to be able to say they own it and have their name on it.

5 — Artists are looking for autonomy, so here’s a way to be platform agnostic: self-publish your music

There are some interesting things being discussed today with licensing and publishing – maybe in the future we’ll be able to NFT any music samples, so that music will be thoroughly attributed and all creator royalties are accounted for through the blockchain.

Also, a quick note about how the music industry works: a lot of people shun the “middlemen”, which in some ways, is understandable because musicians are exploited and undervalued in an antiquated music industry. NFTs can empower artists to self-publish in theory, but in reality, minting a music NFT is not going to launch your music career or give you visibility. Sometimes the “evil” middlemen are exactly who musicians rely on to further their music’s visibility. In a sense, streaming platforms put musicians on a map, despite the highway robbery. Point being is many musicians today struggle with getting their work out there and NFTs won’t enable that, however it can be a vehicle and tool to enable you as an artist. If you establish yourself as an artist and gain a community around it, the potential for NFTs are immeasurable. This is exactly what you’d be looking for.


1 — Setup a wallet. I use Rainbow as a wallet. There’s also metamask. I’d say buy around $50-100 in Ethereum to get started. I buy my ETH off of Coinbase because it’s become established as a trustworthy ledger. I have the apps installed on my Chrome browser as extensions, and apps on the phone.

2 — Find the platform you want to mint on. Some platforms are invite only. I added some links below. If you can get an invite to Foundation or Superrare, that would be extremely valuable right now. Opensea/Rarible are open to everyone.

Connect your wallet to the desired platform (usually a button to connect the wallet on the corner of the main page of for example). A platform that specifically does music (like would be ideal.

3 — Create a new NFT. Set your ownership percentages and other parameters. I’m more than available to help you once you get to this stage. If you have any questions, just reach out. Basically there are GAS fees for listing a NFT, so you have to pay fees to the platform of course, that’s where they getchya -_-. These gas fees fluctuate based on mass user activity.

Once the NFT is minted it then becomes biddable and folks collect them. Someone might buy a NFT and wait until someone offers them a deal to resell it.

People are dreaming up ways on how to show a music collection within a virtual vinyl record collection user-interface, for example. People are realizing there’s value in art again, thanks to NFTs.

Disclosure minted an unreleased song they made on a livestream on Twitch, here’s what it looked like on Zora: I’m looking into more closely now, I think it’d be a strong move for you.


❗ — an example of where music NFTs are sold as platform, I think Catalog is an up and coming one and I notice some underground electronic acts joining in. Specific to music only. — FWB is community centered “DAO”, they created their own currency and in exchange you get access to a thriving creative community (I would take a look into accessing the FWB Discord, there are resources there, although in order to join you’d have to invest in their FWB coin. And also, it recently got a huge media pressing so I’m sure there’s a lot of buzz around this right now). I would look into them just to understand the philosophy.

hicetnunc — an underground, art focused, place to mint NFTs. I would mint some one-off limited edition art through here, or maybe a Bside, or maybe a single or whole EP. I think this is a sorta environment where you’d meet other aspiring artists, and not just a bunch of bros who want to get rich off of a GIF or something. — A lot of artists I follow are on here, also Superrare is another one. If you can get invites onto these I’d say it’s super worth it/super in demand to get access to these platforms that mint ANY form of media

Zora is another NFT platform — NFT platform, similar to rarible, doesn’t require an invite to join I found this while writing this and it looks awesome! Seems to be a new one up and coming. seems to be NFT friendly place to share music, crypto-centered

Unrelated: I get my crypto news usually from Coindesk.


Ethereum is being reapproached into Ethereum 2 to be more economical in gas fees and more environmentally conscious. I believe Bitcoin is following similar protocols. Crypto does exhaust energy resources in an exaggerated scale but this is being attended to and will get better.


  • You can create a generative ambient piece and sell it? for example, you could create a series of completely original compositions, or an AI ambient piece that is always generating sound. NFT artists love combining code into their work, sometimes.
  • Release a field recording as a NFT
  • Mint an unreleased EP or single
  • Mint the artwork of a music release
  • Mint a music video
  • Mint a Splice pack
  • Patreon model. Mint exclusive behind-the-scenes “access pass” that provides things like behind the scenes videos of the artist writing and recording specific songs, or a deeper glimpse into the personal life of the artist. You can set up a contract to offer tiered fan systems like discounts, backstage access to shows in their cities, a one-to-one video call with the artist, etc.

I made this for fun and it was fun to make this. I hope you find it helpful.

Source link

Playing Sound on the Web Using Tone.js and Alpine.js

I’ve been having a ton of fun creating interactive musical tools and references over at Things like an interactive circle of 5ths, a reference to all major and minor scales and a tool to play chords in keys.

Under the hood, these tools are powered by the Tone.js library, which is a set of utilities build on top of the Web Audio API, which makes it easier to deal with audio in the browser from a musician’s perspective. For the aformentioned tools, the user interactions are handled using Alpine.js. I’ve found that the combination of Tone.js + Alpine.js really works like a charm.

This short post gives you a little primer on how you’d go about setting things up to play audio files in the browser in such a fashion.

First things first, you’ll want to have both Tone.js and Alpine.js loaded onto your page. If you have a look at the Tone.js documentation it’ll tell you installation instruction via npm, but personally I’ve been enjoying working with just a call to the minified script file itself. To do that via a CDN, you can add this in your page’s head section:

<script defer src=""></script>

And then similarly for installing Alpine.js:

<script defer src=""></script>

Note that on a site like I’ve decided to load Tone.js only when the user has scrolled passed the relevant portion of the page. I’m using Alpine’s Intersect plugin to accomplish that. This is of course optional and I may talk about the details of that in a future post.

With the setup out of the way, you should now see a message in your browser console that says something like _ Tone.js v14.8.32 _ , meaning that Tone.js has been properly loaded and is ready to go.

Tone.js Sampler

A sampler is an instrument that makes it easy to playback different audio files. Tone.js offers its own sampler instrument:

const sampler = new Tone.Sampler(
    C3: 'C3.mp3',
    'D#3': 'Ds3.mp3',
    'F#3': 'Fs3.mp3',
    A3: 'A3.mp3',
    C4: 'C4.mp3',
    'D#4': 'Ds4.mp3',
    'F#4': 'Fs4.mp3',
    A4: 'A4.mp3',
  release: 0.5,
  baseUrl: '/sounds/piano/',

In the above code block I’m instantiating a sampler and passing in a path to audio files for different musical notes on the piano. In this case I’m using piano samples from the Salamander Grand Piano V3 project, but you could use any of your own samples. In this case, the sounds are in my project’s directory under /sounds/piano/. You’ll notice also that not all notes are included, that’s because Tone.js is smart enough to repitch the samples and make up for any missing pitches in that way. This is really useful in saving on loading time for samples.

This setup works great in a musical contact for playing sounds that actually correspond to musical pitches, but you could of course use a sampler to trigger totally unrelated sounds. You could for example decide that C4 triggers the sound of a toucan while A4 is for an abrasive dog bark. 🐕

Playing the Sounds

Now that we have our sampler instrument setup, we’re ready to start listening to user interactions and trigger the sounds. Let’s first define a simple function that triggers the passed-in note:

function play(note = "C4") 
  sampler.triggerAttackRelease(note, "8n");

With this, calling play() will trigger the audio file associated with the note provided (or default to C4) in your sampler for a duration of an 8th note. The default BPM value in Tone.js is 120, which will be what controls how long a 8th note is. You can tweak the BPM value like this:

Tone.Transport.bpm.value = 80; // 96 BPM instead of 120

Now that we have our play function in place, we can use Alpine to setup a listnener on something like a button:

<button @click="play('A3')">Play A3</button>

And done! You should now hear the sample that your sampler has for A3. Note here that the button click is important because modern browsers require a user interaction like a button click to start playing sounds on a page.

Separating the attack from the release

Earlier we made use of the triggerAttackRelease on our sampler, which takes care of triggering the sample and also of releasing that trigger after the duration provided (a 8th note in our example). What if instead we wanted to play a sound for as long as the user is currently pushing a button? This is often useful for long samples that are to be played only while a note is activated (e.g.: a button is pressed). We can easily decouple the operation by using the triggerAttack and triggerRelease methods instead:

function startPlay(note) 

function stopPlay(note) 

Note that you could also pass in an array with multiple notes at once to any of those methods (triggerAttackRelease, triggerAttack, triggerRelease), allowing you to trigger things like chords, if you’re triggering sounds in a musical context.

And now, we can once again make use of Alpine’s event handling capabilities to :

  Play long sample

Here I’m using the mousedown and mouseup events to decouple the button press and button unpress. You’ll also notice that I’m using touchstart and touchend, which fixes the issue that touch screen devices don’t have a mousedown or mouseup event. To stop the event’s propagation, I’m using the stop modifier on all events, and to prevent the default behavior I’m also using the prevent modifier on the touch events. This fixes an issue where the event would otherwise be triggered twice on devices with a mouse.

That’s it! Hopefully this short introduction was enough to show you how easy it can be to trigger sounds in the browser and start having fun with that in your own projects! ✨ 🔊

For the sake of brevity, I kept the part involving Alpine.js very short and sweet in this post. In a real-world scenario, you’ll likely want to make use of x-data to do things like keep track of the notes/sounds being played:

<div x-data=" currentNote: 'A4' ">
  <button @click="play(currentNote);">Play note</button>

Source link

I ditched what I worked on for months…

…but I didn’t threw it out.

I worked on Ava sound engine for quite some time. I made it from scratch, in C++. C++ is a good choice for audio-related programs, such as the DAW that inspired development of Ava. I decided to separate the DAW’s interface with its processing unit, and Ava was born there. It’s still in the development.

But Ava was also intended to be used for another project I’ve been working on for two years too: a digital IoT-based hardware synthesizer. It was/is my university thesis project.

The idea was to turn data from nature, into sounds. But all through the internet and wirelessly.
The basic flow of the device is that there are a unlimited number of ESP8266 (something like Arduino) devices that each have a sensor connected to them. They share their sensor data in a network connected to the internet.
There is a processing unit, a raspberry pi, which receives all of these data and turns them into sounds and MIDI signals. The sounds can be heard when it gets produced, but you can run the MIDI signals into other instruments!

And there is a dashboard that you can use to manage all the sensor nodes in the network, as well as controlling how their data is processed and turned into notes; so you can choose which musical scale the device makes notes in. Or which sound wave type the sound should have. Or how long each note should play. And more!

I intended to use Ava as the sound engine for device. But it was too hard to integrate it with all the python code and have them exchange data without bugs. So I had to ditch Ava in this project. It was sad but it made the project much more easier to develop and flexible.

Anyways, the synthesizer is called “Natural.” It’s also fully open-source. The repo is here!

It’s not done yet, but it’s so close to version 1 release! I don’t know how many hours I’ve worked on this, I know I’m having fun tho.

I’ll write more about it when the version 1 gets ready!

Source link